## Stripe Apps Documentation

This documentation outlines the process of building, distributing, and managing applications on the Stripe platform using Stripe Apps. It covers essential aspects from initial setup and authentication to UI development, backend integration, and deployment.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps**: Understand the fundamental capabilities and purpose of Stripe Apps, which allow for extending Stripe's functionality and embedding custom user interfaces within the Stripe Dashboard. (Page 30)
*   **Getting Started with Stripe Apps**: Learn the basics of app development, including building, previewing, and updating a sample "Hello, world!" app. (Page 18)
*   **How Stripe Apps Work**: Gain insight into the architecture and components of Stripe Apps, including frontend (UI extensions) and backend components. (Page 21)
*   **Common Use Cases**: Explore various scenarios for building Stripe Apps, categorized by app type: backend, frontend, and full-stack applications. (Page 14)

### Building Your Stripe App

*   **App Manifest Reference**: Understand the `stripe-app.json` file, which describes how your app integrates with Stripe, including fields, types, and descriptions. (Page 35)
*   **API Authentication Methods**: Select and implement the appropriate authentication method for your app, such as Platform key, OAuth 2.0, or Restricted API keys. (Page 2, Page 3, Page 4)
*   **Authorization Flows**: Implement secure authorization flows, including PKCE OAuth workflows. (Page 39)
*   **Server-Side Logic**: Add backend code to validate and process user actions and data, integrate with third-party systems, and handle webhooks. (Page 6)
*   **Build a UI**: Develop custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit. (Page 17)
    *   **UI Extensions**: Learn how UI extensions render your UI within Stripe's products using a secure sandboxed iframe. (Page 22)
    *   **UI Components**: Utilize Stripe's prebuilt UI components to structure layouts and create interactive interfaces. (Page 49)
        *   **Specific Components**: Detailed documentation for individual UI components like Accordion (Page 50), Badge (Page 51), Banner (Page 52), Box (Page 54), Button (Page 55), ButtonGroup (Page 56), Checkbox (Page 57), Chip (Page 58), ContextView (Page 59), DateField (Page 61), FormFieldGroup (Page 67), Icon (Page 70), Img (Page 71), Inline (Page 72), Link (Page 74), List (Page 75), Menu (Page 76), Radio (Page 80), Select (Page 82), SettingsView (Page 83), SignInView (Page 84), Sparkline (Page 85), Spinner (Page 86), Switch (Page 87), Table (Page 88), Tabs (Page 89), TextArea (Page 91), TextField (Page 92), Toast (Page 93), and Tooltip (Page 94).
    *   **Component Hierarchy Constraints**: Understand rules governing how components can be composed to ensure a predictable UI. (Page 7)
    *   **Next Generation UI Components**: Access early versions of updated UI components. (Page 28)
*   **Store Secret Credentials**: Securely persist sensitive data like authentication credentials using the Secret Store API. (Page 46)
*   **App Settings Page**: Create a page for users to configure their app settings within the Stripe Dashboard. (Page 45)
*   **Deep Links**: Create URLs that navigate users directly to your Stripe app within the Dashboard. (Page 8)
*   **Install Links**: Allow users to install public apps outside of the Stripe App Marketplace. (Page 23)
*   **Post-Install Actions**: Support additional configurations that occur after a user installs your app. (Page 40)

### Testing and Debugging

*   **Enable Sandbox Support**: Configure your app for installation in Stripe's testing environments. (Page 12)
*   **Enable Local Network Access**: Allow your app to connect to local HTTP servers for development and previewing. (Page 11)
*   **UI Testing**: Learn how to test your app's user interface using provided utilities and helpers. (Page 41)
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing your UI extension code. (Page 47)
*   **Test Your App Externally**: Set up and distribute test versions of your app to other accounts before public release. (Page 26)

### Distribution and Deployment

*   **Distribution Options**: Understand the methods for sharing your Stripe Apps, including public availability and team-only access. (Page 20)
*   **Publish Your App**: Learn the process of getting your app approved and listed on the Stripe App Marketplace. (Page 24)
*   **App Review Requirements**: Familiarize yourself with the quality requirements for apps on the App Marketplace. (Page 25)
*   **Manage App Versions and Releases**: Understand app versioning and releases to manage changes and ship new versions. (Page 117)
*   **Upload and Install Your App**: Make your app available to team members on your Stripe account or publish it to the marketplace. (Page 115)

### Migration and Legacy Information

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate legacy extensions to the newer Stripe Apps platform. (Page 27)
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Explore options for migrating third-party integrations that previously used secret API keys. (Page 32)
    *   **Migrate to OAuth 2.0 App**: Specific guidance for migrating to an OAuth 2.0 app. (Page 31)
    *   **Migrate to a RAK App**: Specific guidance for migrating to a Restricted API Key (RAK) app. (Page 33)
*   **Legacy Extensions**: Information about the deprecated extensions integration pattern. (Page 1)

### Advanced Topics and Design Patterns

*   **Handle Different Modes**: Adapt your app to work seamlessly in both live mode and sandboxes. (Page 19)
*   **Viewports Reference**: Understand the different locations within the Stripe Dashboard where your app's views can appear. (Page 42)
*   **Route Descriptors**: Implement soft, context-preserving navigation between Dashboard pages from your Stripe App. (Page 43)
*   **Design Patterns**: Follow recommended design patterns for a consistent, clear, and scalable app experience. (Page 95)
    *   **Action Buttons**: Learn where to place action buttons for optimal user interaction. (Page 111)
    *   **Additional Context**: Provide users with necessary information during onboarding. (Page 99)
    *   **Back Link**: Implement navigation to previous pages. (Page 112)
    *   **Communicating State**: Guide users on actions they need to take. (Page 106)
    *   **Demo Content**: Display a concise demonstration of your app's core functionality. (Page 100)
    *   **Empty State**: Clearly indicate when no data is available to load. (Page 107)
    *   **Filter Controls**: Enable users to filter table rows using Chip components. (Page 96)
    *   **Full Page Apps**: Build custom Stripe Dashboard pages with complex layouts. (Page 97)
    *   **Lists**: Display collections of information effectively. (Page 98)
    *   **Loading**: Use the Spinner component to indicate data loading. (Page 108)
    *   **Onboarding Flow**: Create an effortless, customizable, and relevant onboarding experience. (Page 29, Page 101)
    *   **Progress Stepping**: Guide users through multi-step tasks to prevent abandonment. (Page 109)
    *   **Redirects**: Create clear and consistent redirects for users. (Page 102)
    *   **Settings Sign In**: Onboard users through a settings page for backend-only apps. (Page 103)
    *   **Sign In Template**: Implement a secure and focused sign-in process. (Page 104)
    *   **Sign Out**: Ensure users can sign out of your app. (Page 105)
    *   **Waiting Screens**: Inform users about wait times and next steps during onboarding. (Page 110)
*   **Style Your App**: Utilize design tokens to match the Stripe Dashboard's visual style and ensure consistency. (Page 113)
*   **Design Your App**: Leverage provided tools, guidelines, and philosophy for a streamlined design process. (Page 114)
*   **Using Roles in UI Extensions**: Tailor functionality based on user roles within the Stripe Dashboard. (Page 116)
*   **Extension SDK API Reference**: Documentation for the Extension SDK API, providing context props and utility functions. (Page 38)
*   **Permissions Reference**: A list of available events and their required permissions for your app. (Page 37)
*   **Stripe Apps CLI Reference**: Instructions on installing and using the command-line interface to manage your app. (Page 36)
*   **Sample Apps**: Explore working examples of Stripe Apps to use as starting points for your own development. (Page 44)
*   **App Analytics**: Access data to understand how your app performs and how marketplace listings are viewed. (Page 5)