## Stripe Apps Documentation

This documentation suite covers the development and management of Stripe Apps, a platform that allows you to extend Stripe's functionality and embed custom user experiences directly within the Stripe Dashboard.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental concepts of Stripe Apps, including their purpose, capabilities, and how they integrate with Stripe.
*   **Getting Started with Stripe Apps**: Learn the basics of app development by building, previewing, and updating a sample Stripe app.
*   **How Stripe Apps Work**: Gain a deeper understanding of the architecture and components that make up Stripe Apps, including frontend and backend interactions.
*   **Common Use Cases**: Explore various scenarios and examples of how Stripe Apps can be used to solve business needs.

### Building Your Stripe App

*   **App Manifest Reference**: Understand the structure and fields of your `stripe-app.json` file, which defines your app's integration with Stripe.
*   **API Authentication Methods**: Choose and implement the appropriate authentication method for your app, including Platform Key, OAuth 2.0, and Restricted API Keys (RAK).
    *   **OAuth 2.0**: Details on implementing OAuth 2.0 for secure user authorization.
    *   **Restricted API Key Authentication**: Learn how to use RAKs for granular API access control.
*   **Server-Side Logic**: Integrate backend code to validate and process user actions, handle webhooks, and implement long-running app logic.
*   **Build a UI**: Develop custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work**: Understand the system for rendering your UI within Stripe.
    *   **Next Generation UI Components**: Explore the latest UI components for enhanced user experiences.
    *   **Component Hierarchy Constraints**: Learn about the rules governing component composition.
    *   **UI Testing**: Implement testing strategies for your app's user interface.
*   **UI Components**: A comprehensive reference of available UI components for building your app's interface, including:
    *   Accordion
    *   Badge
    *   Banner
    *   BarChart
    *   Box
    *   Button
    *   ButtonGroup
    *   Checkbox
    *   Chip
    *   ContextView
    *   DateField
    *   DetailPageModule
    *   DetailPagePropertyList
    *   DetailPageTable
    *   Divider
    *   FocusView
    *   FormFieldGroup
    *   FullPageTabs
    *   FullPageView
    *   Icon
    *   Img
    *   Inline
    *   LineChart
    *   Link
    *   List
    *   Menu
    *   OnboardingView
    *   OverviewPage
    *   PropertyList
    *   Radio
    *   SearchField
    *   Select
    *   SettingsView
    *   SignInView
    *   Sparkline
    *   Spinner
    *   Switch
    *   Table
    *   Tabs
    *   TaskList
    *   TextArea
    *   TextField
    *   Toast
    *   Tooltip

### App Distribution and Management

*   **Distribution Options**: Learn how to share your Stripe Apps with users, either privately or publicly on the Stripe App Marketplace.
*   **Upload and Install Your Stripe App**: Make your app available to team members on your Stripe account.
*   **Publish Your App to the Stripe App Marketplace**: Guide on getting your app approved for the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements**: Understand the quality standards for apps listed on the App Marketplace.
*   **Test Your App Externally**: Set up and distribute test versions of your app before publication.
*   **Manage Your App's Versions and Releases**: Learn about app versioning and releases to manage changes over time.
*   **App Analytics**: Access data to understand how your apps are used and how your marketplace listings perform.

### Advanced Features and Integrations

*   **Server-Side Logic**: Implement backend code for secure third-party integrations, webhook event handling, and long-lived app logic.
*   **Enable Local Network Access**: Configure settings for app previewing with local HTTP servers.
*   **Enable Sandbox Support**: Allow users to install your public app in sandboxes for evaluation.
*   **Handle Different Modes**: Adapt your app to work seamlessly in both live mode and sandboxes.
*   **Add Deep Links**: Create URLs that navigate users directly to your Stripe app within the Dashboard.
*   **Install Links**: Allow users to install public apps outside of the Stripe App Marketplace.
*   **Embed Third-Party Stripe Apps**: Utilize embedded components to integrate Stripe Apps into your platform.
*   **Marketing Software Integrations**: Integrate marketing software like Mailchimp through Stripe Apps.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data using the Secret Store API.
*   **Add Authorization Flows**: Implement PKCE OAuth workflows for secure user authentication.
*   **Enable Post-Install Actions**: Support additional configurations that occur after app installation.
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.

### Migration and Legacy Information

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Explore your options for migrating third-party integrations.
    *   **Migrate a Plugin to an OAuth 2.0 App**: Specific guidance for migrating to OAuth 2.0.
    *   **Migrate a Plugin to a RAK App**: Specific guidance for migrating to Restricted API Key authentication.
*   **Legacy Extensions**: Information about the deprecated extensions integration pattern.

### Design and Best Practices

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for building Stripe Apps.
*   **Style Your App**: Learn how to style UI components using provided design tokens for consistency.
*   **Design Patterns for Stripe Apps**: Follow recommended patterns for a consistent, clear, and scalable app experience. This includes patterns for:
    *   Full Page Apps
    *   Action Buttons
    *   Onboarding Flow
    *   Additional Context
    *   Back Link
    *   Communicating State
    *   Demo Content
    *   Empty State
    *   Filter Controls
    *   Lists
    *   Loading
    *   Progress Stepping
    *   Redirects
    *   Settings Sign In
    *   Sign In Template
    *   Sign Out
    *   Waiting Screens

### Reference and Tools

*   **Stripe Apps CLI Reference**: Install and use the command-line interface to manage your Stripe app.
*   **Permissions Reference**: A list of available events and their required permissions for your app.
*   **Extension SDK API Reference**: Documentation for the Extension SDK API, providing context props and utility functions.
*   **Viewports Reference**: A list of available viewports for Stripe Apps and how end users see them.
*   **Route Descriptors**: Navigate within the Dashboard using route descriptors for soft, context-preserving navigation.
*   **Sample Apps**: Explore working apps from design to code to use as starting points.
*   **UI Extension Developer Tools**: Utilize bundled developer tools for type checking, linting, and testing your code.
*   **Upgrade Stripe's UI Extension SDK**: Guide to upgrading your app to the latest version of the SDK.