## Stripe Apps Development

This documentation section provides comprehensive guidance on developing, building, and deploying applications within the Stripe ecosystem using Stripe Apps. It covers the entire lifecycle of app development, from initial setup and authentication to UI design, backend integration, testing, and distribution.

### Getting Started with Stripe Apps

*   **Overview:** Understand the core concepts and capabilities of Stripe Apps, which allow you to extend Stripe's functionality and embed custom user experiences directly into the Stripe Dashboard.
*   **Create an App:** Learn the fundamental steps to create your first Stripe App, including setting up your development environment and using the Stripe CLI.
*   **How Stripe Apps Work:** Gain a deeper understanding of the architecture and components that make up a Stripe App, including frontend UI extensions and backend services.
*   **Sample Apps:** Explore a collection of sample applications to see practical implementations and learn from real-world examples.

### Building Your Stripe App

*   **App Manifest:** Understand the `stripe-app.json` file, which serves as the configuration hub for your app, defining its ID, version, permissions, and more.
*   **API Authentication:** Choose and implement the appropriate authentication method for your app, whether it's Platform key, OAuth 2.0, or Restricted API Keys (RAKs).
*   **Authorization Flows:** Learn how to implement secure authorization flows, including PKCE OAuth workflows, to grant your app access to user data.
*   **Server-Side Logic:** Integrate backend code to validate and process user actions, synchronize data with external systems, and handle webhook events.
*   **Build a UI:** Develop custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK and UI toolkit.
    *   **UI Extensions:** Understand how UI extensions work and how to leverage them to create interactive elements.
    *   **UI Components:** Explore the comprehensive library of pre-built UI components for building consistent and user-friendly interfaces.
    *   **Component Hierarchy Constraints:** Learn about the rules governing component composition to ensure predictable UI rendering.
    *   **Next Generation UI Components:** Get early access to and learn about upcoming UI component enhancements.
    *   **Design Your App:** Follow design guidelines and best practices to create a visually appealing and user-friendly app.
    *   **Style Your App:** Utilize design tokens and custom styling options to match the Stripe Dashboard's aesthetic.
*   **App Settings Page:** Create a dedicated page for users to configure their app settings and preferences.
*   **Store Secret Credentials:** Securely persist sensitive data, such as authentication tokens, using the Secret Store API.
*   **Handle Different Modes:** Adapt your app to function correctly in both live and sandbox (testing) environments.
*   **Enable Sandbox Support:** Configure your app for installation and testing in Stripe's sandbox environment.
*   **Enable Local Network Access:** Learn how to enable local network access for app previewing during development.

### Distributing and Managing Your App

*   **Distribution Options:** Understand the different ways to share your Stripe Apps, including public distribution via the App Marketplace and private sharing.
*   **Upload and Install Your App:** Learn the process of uploading and installing your app for team members or for testing.
*   **Publish Your App:** Follow the steps to publish your app to the Stripe App Marketplace, including app review requirements.
*   **App Review Requirements:** Familiarize yourself with the quality standards and guidelines for app review to ensure a smooth submission process.
*   **Test Your App Externally:** Set up and distribute test versions of your app to gather feedback from a limited group of testers before public release.
*   **Manage Versions and Releases:** Learn how to version your app and manage releases to deliver updates and new features to your users.
*   **Promote Your App:** Discover how to partner with Stripe to accelerate your app's growth and reach a wider audience.
*   **Install Links:** Allow users to install your public app outside of the Stripe App Marketplace.
*   **Deep Links:** Create deep links to navigate users directly to specific sections of your app within the Stripe Dashboard.
*   **Post-Install Actions:** Guide users through any necessary configurations or actions required after they install your app.

### Migrating from Legacy Extensions

*   **Migrate an Extension to Stripe Apps:** Understand why and how to migrate existing legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin:** Learn how to migrate plugins to either Stripe Apps or Stripe Connect, ensuring secure authentication methods.
    *   **Migrate a Plugin to an OAuth 2.0 App:** Specific guidance for migrating to OAuth 2.0 authentication.
    *   **Migrate a Plugin to a RAK App:** Specific guidance for migrating to Restricted API Key (RAK) authentication.

### Advanced Topics and Patterns

*   **App Analytics:** Access and analyze data to understand how your app is being used and its performance.
*   **Embedded Stripe Apps:** Integrate third-party Stripe Apps into your own platform using embedded components.
*   **Design Patterns:** Follow recommended design patterns for common app functionalities to ensure consistency and a high-quality user experience.
    *   Action Buttons
    *   Additional Context
    *   Back Link
    *   Communicating State
    *   Demo Content
    *   Empty State
    *   Filter Controls
    *   Full Page Apps
    *   Lists
    *   Loading
    *   Onboarding
    *   Progress Stepping
    *   Redirects
    *   Settings Sign In
    *   Sign In Template
    *   Sign Out
    *   Waiting Screens
*   **UI Extension Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing your app's UI.
*   **UI Testing:** Learn how to test your app's user interface using provided utilities and helpers.
*   **Viewports Reference:** Understand the available viewports within the Stripe Dashboard where your app's UI can be rendered.
*   **Route Descriptors:** Implement soft, context-preserving navigation within the Stripe Dashboard using route descriptors.
*   **Using Roles in UI Extensions:** Tailor app functionality based on user roles within the Stripe Dashboard.

### Reference

*   **App Manifest Reference:** A detailed guide to all fields, types, and descriptions for your app manifest file.
*   **Stripe Apps CLI Reference:** Documentation for the command-line interface used to manage your Stripe Apps.
*   **Permissions Reference:** A list of available events and their required permissions for your app.
*   **Extension SDK API Reference:** Documentation for the Extension SDK API, including context props and utility functions.
*   **UI Components Reference:** Comprehensive documentation for all available UI components.