## Stripe Apps: Building and Distributing Integrations

This documentation group provides comprehensive guidance on developing, distributing, and managing **Stripe Apps**. Stripe Apps allow developers to extend Stripe's functionality by embedding custom user interfaces within the Stripe Dashboard and orchestrating the Stripe API.

The core concepts covered include:

*   **Getting Started:** Learn the basics of app development with Stripe Apps, including building a simple "Hello, world!" app.
*   **App Architecture:** Understand the different types of Stripe Apps (backend, frontend, full-stack) and their components.
*   **Building Your App:**
    *   **UI Extensions:** Develop custom user interfaces using TypeScript, React, and Stripe's UI Extensions SDK. This includes details on UI components, component hierarchy, and styling.
    *   **Server-Side Logic:** Integrate securely with third-party systems and handle webhooks using a self-hosted backend.
    *   **API Authentication:** Choose and implement authentication methods like OAuth 2.0 and Restricted API Keys (RAKs).
    *   **App Manifest:** Configure your app's integration with Stripe using the `stripe-app.json` file.
*   **Key Features and Functionality:**
    *   **API Authentication Methods:** Understand options like Platform keys, OAuth 2.0, and Restricted API Keys.
    *   **Authorization Flows:** Implement PKCE OAuth workflows.
    *   **Deep Linking:** Create links to navigate users directly to specific parts of your app within the Dashboard.
    *   **Embedded Components:** Integrate third-party Stripe Apps into your own platform.
    *   **Local Network Access:** Enable local network access for app preview.
    *   **Sandbox Support:** Configure your app for testing in Stripe's sandbox environments.
    *   **App Settings Page:** Create a page for users to configure their app settings.
    *   **Secret Store API:** Securely store and retrieve sensitive data like credentials and tokens.
    *   **UI Testing:** Learn how to test your app's user interface.
    *   **Route Descriptors:** Implement soft, context-preserving navigation within the Dashboard.
    *   **Roles in UI Extensions:** Tailor functionality based on user roles.
*   **Distribution and Management:**
    *   **Distribution Options:** Learn how to make your app publicly available or share it privately.
    *   **Publishing to the App Marketplace:** Understand the process of getting your app approved and listed.
    *   **App Review Requirements:** Familiarize yourself with the quality standards for apps.
    *   **Testing Your App:** Set up external tests before publication.
    *   **Upload and Install:** Learn how to upload and install your app for testing and internal use.
    *   **Versions and Releases:** Manage app updates and changes over time.
*   **Migration:**
    *   **Migrating Legacy Extensions:** Transition from older extension patterns to Stripe Apps.
    *   **Migrating Plugins:** Update plugins to use secure authentication methods like OAuth 2.0 or RAKs.
*   **Design Patterns and Best Practices:**
    *   **Design Your App:** Follow guidelines for creating a user-friendly and consistent app experience.
    *   **Style Your App:** Utilize provided design tokens to match the Stripe Dashboard's look and feel.
    *   **Common Use Cases:** Explore examples of what can be built with Stripe Apps.
    *   **Sample Apps:** Refer to working examples for design and code inspiration.
    *   **Onboarding:** Guide users through a seamless setup process.
    *   **Design Patterns:** Implement recommended patterns for various aspects of app functionality, including action buttons, filter controls, loading states, and more.

This documentation suite empowers developers to leverage Stripe Apps to build powerful integrations that enhance the Stripe experience for their users.