## Stripe Apps: Building and Distributing Integrations

This documentation set provides a comprehensive guide to developing, distributing, and managing applications (Stripe Apps) that extend the Stripe platform. It covers the entire lifecycle of app development, from initial setup and API authentication to UI design, testing, and publishing on the Stripe App Marketplace.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental purpose and capabilities of Stripe Apps, which allow for custom user interfaces within the Stripe Dashboard and orchestration of the Stripe API. (Page 30)
*   **How Stripe Apps Work**: Learn about the architecture of Stripe Apps, including their frontend and backend components, and how to build apps for personal use or public distribution. (Page 21)
*   **Getting Started with Stripe Apps**: A step-by-step guide to building your first Stripe App, including setting up the development environment and previewing your app. (Page 18)
*   **App Manifest Reference**: Understand the `stripe-app.json` file, which describes how your app integrates with Stripe, including permissions, distribution types, and authentication methods. (Page 35)
*   **Common Use Cases**: Explore different types of Stripe Apps (backend, frontend, full-stack) and their typical applications. (Page 14)

### Development and Integration

*   **Building a UI**: Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK. (Page 17)
    *   **UI Components**: A detailed reference of available UI components for building your app's interface, such as Accordions, Buttons, Forms, Charts, and more. (Pages 49-94)
    *   **Component Hierarchy Constraints**: Understand the rules governing how UI components can be composed to ensure a predictable user experience. (Page 7)
    *   **Next Generation UI Components**: Get early access to updated UI components for future SDK releases. (Page 28)
*   **Adding Server-Side Logic**: Implement backend code to validate user actions, process data, integrate with third-party systems, and handle webhook events. (Page 6)
*   **API Authentication Methods**: Choose and implement the appropriate method for your app to authenticate requests to the Stripe API, including Platform keys, OAuth 2.0, and Restricted API Keys (RAKs). (Page 2)
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for user authentication and authorization. (Page 3)
    *   **Restricted API Key Authentication**: Learn how to use RAKs for secure and permissioned API access. (Page 4)
*   **Authorization Flows**: Implement PKCE OAuth workflows for secure authorization. (Page 39)
*   **Store Secret Credentials**: Securely persist sensitive data like authentication tokens using the Secret Store API. (Page 46)
*   **Handling Modes**: Adapt your app to work seamlessly in both live and sandbox (testing) environments. (Page 19)
*   **Enable Sandbox Support**: Configure your app for installation in Stripe's testing environments. (Page 12)
*   **Enable Local Network Access**: Configure your app for previewing with local development servers. (Page 11)
*   **Deep Links**: Create deep links to navigate users directly to specific pages within your Stripe App in the Dashboard. (Page 8)
*   **Install Links**: Allow users to install your public app outside of the Stripe App Marketplace. (Page 23)
*   **Post-Install Actions**: Guide users through necessary configurations after they install your app. (Page 40)
*   **App Settings Page**: Create a dedicated page for users to configure their app settings within the Stripe Dashboard. (Page 45)
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing your UI extensions. (Page 47)
*   **UI Testing**: Learn how to effectively test your app's user interface. (Page 41)
*   **Upgrade Stripe's UI Extension SDK**: Stay up-to-date with the latest SDK features and breaking changes. (Page 48)

### Distribution and Management

*   **Distribution Options**: Understand the choices for sharing your Stripe Apps, including private distribution and public publishing on the App Marketplace. (Page 20)
*   **How to Publish an App**: A guide to preparing your app for submission and review on the Stripe App Marketplace. (Page 24)
*   **Stripe Apps Quality Requirements**: Familiarize yourself with the criteria for app review to ensure your app meets Stripe's standards. (Page 25)
*   **Test Your App Externally**: Set up and distribute test versions of your app to gather feedback before public release. (Page 26)
*   **Manage Your App's Versions and Releases**: Learn about app versioning and how to ship new versions and manage changes over time. (Page 117)
*   **Upload and Install Your App**: Make your app available to team members within your Stripe account for testing and development. (Page 115)
*   **Promote Your App**: Discover partnership opportunities with Stripe to accelerate your app's growth. (Page 34)

### Migration and Legacy

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate older "extension" integrations to the newer Stripe Apps platform. (Page 27)
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Guidance on migrating third-party integrations that previously relied on secret API keys. (Page 32)
    *   **Migrate a Plugin to an OAuth 2.0 App**: Specific steps for migrating to OAuth 2.0 authentication. (Page 31)
    *   **Migrate a Plugin to a RAK App**: Specific steps for migrating to Restricted API Key (RAK) authentication. (Page 33)
*   **Legacy Extensions**: Information and historical reference for the deprecated extensions integration pattern. (Page 1)

### Design and Best Practices

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for building user-friendly Stripe Apps. (Page 114)
*   **Style Your App**: Learn how to style UI components using Stripe's provided design tokens for visual consistency. (Page 113)
*   **Design Patterns for Stripe Apps**: Follow recommended patterns for common app functionalities to ensure a consistent and scalable user experience. (Page 95)
    *   **Action Buttons**: Best practices for placing and using action buttons. (Page 111)
    *   **Additional Context**: How to provide extra information to users during onboarding. (Page 99)
    *   **Back Link**: Implementing navigation to previous pages. (Page 112)
    *   **Communicating State**: Guiding users with feedback on actions and system status. (Page 106)
    *   **Demo Content**: Tips for showcasing your app's core functionality. (Page 100)
    *   **Empty State**: Informing users when no data is available. (Page 107)
    *   **Filter Controls**: Using chips to filter data in tables. (Page 96)
    *   **Full Page Apps**: Designing comprehensive, multi-view interfaces within the Dashboard. (Page 97)
    *   **Lists**: Displaying collections of information effectively. (Page 98)
    *   **Loading**: Using spinners to indicate data loading. (Page 108)
    *   **Onboarding**: Creating effortless and intuitive user onboarding flows. (Page 29, Page 101)
    *   **Progress Stepping**: Guiding users through multi-step tasks. (Page 109)
    *   **Redirects**: Creating clear redirects for user navigation. (Page 102)
    *   **Settings Sign In**: Onboarding users via a settings page for backend-only apps. (Page 103)
    *   **Sign In Template**: Implementing secure and focused sign-in flows. (Page 104)
    *   **Sign Out**: Providing users with a clear way to sign out of your app. (Page 105)
    *   **Waiting Screens**: Informing users about wait times and next steps during onboarding. (Page 110)

### Reference and Tools

*   **Stripe Apps CLI Reference**: Install and use the command-line interface to manage your Stripe Apps. (Page 36)
*   **Permissions Reference**: Understand available events and their required permissions for your app. (Page 37)
*   **Viewports Reference**: A list of available viewports where your app's UI extensions can be displayed within the Dashboard. (Page 42)
*   **Extension SDK API Reference**: Documentation for the Extension SDK API, including context props and utility functions. (Page 38)
*   **Route Descriptors**: Navigate within the Dashboard using soft, context-preserving navigation. (Page 43)
*   **Sample Apps**: Explore working examples of Stripe Apps to use as a starting point for your own development. (Page 44)
*   **Embedded Stripe Apps**: Integrate third-party Stripe Apps into your platform using embedded components. (Page 9)
    *   **Marketing Software Integrations**: Specific examples of integrating marketing tools like Mailchimp. (Page 10)