## Building and Distributing Stripe Apps

This documentation set focuses on the development and deployment of **Stripe Apps**, a platform that allows developers to extend Stripe's functionality and integrate third-party services directly within the Stripe Dashboard.

The core of this documentation revolves around the **Stripe Apps platform**, detailing how to:

*   **Get Started:** Understand the fundamentals of app development, including building, previewing, and updating a Stripe app.
*   **Build Your App:**
    *   **App Structure:** Learn about the different app types (backend, frontend, full-stack) and their components.
    *   **User Interface (UI):** Utilize the `@stripe/ui-extension-sdk` and its extensive library of UI components (e.g., `Button`, `TextField`, `Table`, `Chart` components) to create custom user experiences within the Dashboard. This includes understanding UI extension concepts and component hierarchy constraints.
    *   **Server-Side Logic:** Implement backend code to validate user actions, process data, integrate with third-party systems, and handle webhook events.
    *   **Authentication:** Choose and implement appropriate API authentication methods, including OAuth 2.0 and Restricted API Keys (RAKs), to securely interact with the Stripe API on behalf of users.
    *   **Data Management:** Securely store sensitive data like credentials and tokens using the Secret Store API.
*   **App Configuration and Management:**
    *   **App Manifest:** Define your app's integration with Stripe using the `stripe-app.json` manifest file.
    *   **Permissions:** Request and manage necessary permissions for your app to access user data and Stripe APIs.
    *   **Modes:** Adapt your app to handle both live and sandbox environments for testing and production.
    *   **Local Network Access:** Enable local network access for app previewing during development.
    *   **Sandbox Support:** Configure your app for sandbox installations to allow users to evaluate its features.
    *   **App Settings:** Create a dedicated settings page for users to configure your app.
    *   **Onboarding:** Design intuitive onboarding flows to guide users through initial setup and authentication.
    *   **Post-Install Actions:** Support additional configurations that occur after app installation.
    *   **Versioning and Releases:** Manage app versions and releases to ship updates and track changes.
*   **Distribution and Deployment:**
    *   **Distribution Options:** Choose between public distribution via the Stripe App Marketplace or private sharing with team members.
    *   **Publishing:** Learn the process of publishing your app to the Stripe App Marketplace, including app review requirements and quality standards.
    *   **Testing:** Set up external tests for your app before publication.
    *   **Install Links:** Allow users to install public apps outside of the Stripe App Marketplace.
    *   **Uploading and Installing:** Understand how to upload and install your app for team members.
*   **Design and Best Practices:**
    *   **Design Your App:** Follow guidelines and utilize design tools for a cohesive user experience.
    *   **Style Your App:** Apply design tokens and custom styling to match the Stripe Dashboard's visual identity.
    *   **Design Patterns:** Implement recommended patterns for onboarding, authentication, error handling, and more to ensure consistency and clarity.
    *   **Deep Links:** Create deep links to navigate users directly to specific sections of your app within the Dashboard.
    *   **Authorization Flows:** Implement secure authorization flows, including PKCE OAuth.
*   **Migration:**
    *   **Migrate Extensions:** Transition legacy Stripe Connect extensions to the modern Stripe Apps platform.
    *   **Migrate Plugins:** Update plugins that previously relied on secret API keys to secure authentication methods like OAuth 2.0 or RAKs.
*   **Developer Tools:**
    *   **Stripe Apps CLI:** Utilize the command-line interface to manage app creation, development, configuration, and uploading.
    *   **UI Extension Developer Tools:** Leverage bundled tools for type checking, linting, and testing your app's UI.
    *   **UI Testing:** Implement unit tests for your app's user interface.

This documentation set is essential for developers looking to integrate their services with Stripe, enhance the Stripe Dashboard experience, or build custom workflows on top of the Stripe platform.