## Developing Stripe Apps

This documentation section covers the process of developing and integrating applications with Stripe. It provides comprehensive guidance on building custom user experiences within the Stripe Dashboard, orchestrating the Stripe API, and extending Stripe's functionality.

### Key Concepts and Features

*   **Stripe Apps Overview:** Understand the fundamental concepts of Stripe Apps, including their purpose, capabilities, and how they extend Stripe's platform.
*   **Building a Stripe App:** Get started with app development by learning the basics of building, previewing, and updating your Stripe app.
*   **App Types:** Explore different app architectures, including backend-only, frontend-only, and full-stack applications, to choose the best fit for your use case.
*   **Common Use Cases:** Discover practical examples and guides for building Stripe apps for various business needs.

### Development and Integration

*   **API Authentication:** Learn about the different methods for authenticating requests to the Stripe API, including OAuth 2.0 and Restricted API Keys (RAKs).
*   **Authorization Flows:** Implement secure authorization flows, such as PKCE OAuth, to grant your app access to user data.
*   **Server-Side Logic:** Integrate backend code to validate and process user actions and data securely.
*   **UI Extensions:** Build custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extension SDK.
*   **UI Components:** Utilize a rich library of pre-built UI components to create consistent and user-friendly interfaces.
*   **Design Patterns:** Follow recommended design patterns to ensure your app is intuitive, clear, and scalable.
*   **Styling and Design:** Learn how to style your app to match Stripe's visual identity and maintain platform consistency.

### App Management and Distribution

*   **App Manifest:** Understand the app manifest file, which describes how your app integrates with the Stripe platform.
*   **Permissions:** Request and manage necessary permissions for your app to access user data and perform actions.
*   **Testing:** Test your app thoroughly, including UI testing and external testing, before publishing.
*   **Sandbox Support:** Enable sandbox support for your public app to allow users to evaluate its features in a testing environment.
*   **Local Network Access:** Configure local network access for app previewing during development.
*   **Distribution Options:** Learn how to distribute your apps, either privately to your team or publicly through the Stripe App Marketplace.
*   **Publishing:** Follow the steps and requirements for publishing your app to the Stripe App Marketplace.
*   **App Review:** Understand the quality requirements for apps to be approved for the App Marketplace.
*   **Versioning and Releases:** Manage your app's versions and releases to ship new features and updates effectively.
*   **Install Links:** Allow users to install your app outside of the Stripe App Marketplace.
*   **Post-Install Actions:** Configure additional actions or configurations that occur after app installation.
*   **App Settings Page:** Create a dedicated page for users to configure their app settings.
*   **Secret Store API:** Securely store and retrieve sensitive data, such as authentication credentials, using the Secret Store API.

### Migration and Legacy Integrations

*   **Migrating Extensions:** Learn why and how to migrate legacy extensions to Stripe Apps for better discoverability and enhanced features.
*   **Migrating Plugins:** Understand your options for migrating plugins to Stripe Apps or Stripe Connect, adopting secure authentication methods.

### Developer Tools and Resources

*   **Stripe Apps CLI:** Install and use the command-line interface to manage your Stripe app.
*   **Sample Apps:** Browse example Stripe Apps to get started with your own development.
*   **UI Extension SDK API Reference:** Access documentation for the Extension SDK API, including context props and utility functions.
*   **Viewports Reference:** Understand the available viewports for Stripe Apps and how they appear to end users.