## Stripe Apps Development

This section provides comprehensive documentation for developing Stripe Apps, a platform that allows for the extension of Stripe's functionality and the embedding of custom user interfaces within the Stripe Dashboard.

### Getting Started with Stripe Apps

*   **Overview**: Understand the core concepts and capabilities of Stripe Apps, including how they can be used to authenticate users for third-party services, listen for events, automate workflows, and design custom user interfaces within the Stripe Dashboard.
*   **Create an App**: Learn the basics of app development by building, previewing, and updating a sample Stripe app.
*   **How Stripe Apps Work**: Gain a deeper understanding of the different app patterns and the fundamental components of Stripe Apps, such as frontend and backend components.
*   **Sample Apps**: Explore a variety of working Stripe Apps from design to code, serving as practical examples and starting points for your own development.
*   **Common Use Cases**: Discover how to build Stripe Apps for common business needs, with guides and examples for backend, frontend, and full-stack applications.

### Building Your Stripe App

*   **Build a UI**: Learn how to create, test, and edit custom user interfaces that extend the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI extensions work**: Understand the UI extensions system and how to extend the Stripe Dashboard.
    *   **Next generation UI components**: Get early access to updated UI components.
    *   **Component hierarchy constraints**: Understand the rules governing component composition.
    *   **UI testing**: Learn how to test your app's UI with provided utilities.
    *   **Developer tools**: Utilize bundled tools for type checking, linting, and testing.
    *   **Design your app**: Get started with design tools, guidelines, and philosophy.
    *   **Style your app**: Learn how to style UI components to match the Dashboard's visual style.
*   **Add server-side logic**: Implement backend code to validate and process user actions and data, enabling secure third-party integrations, webhook event subscriptions, and long-lived app logic.
*   **API Authentication Methods**: Select the most suitable API authentication method for your app, including Platform key, OAuth 2.0, and Restricted API keys.
    *   **OAuth 2.0**: Implement industry-standard OAuth 2.0 for authentication.
    *   **Restricted API key authentication**: Generate permissioned API keys for enhanced security.
*   **Authorization Flows**: Implement PKCE OAuth workflows for secure authorization.
*   **Store secret credentials and tokens**: Utilize the Secret Store API to securely persist sensitive data like authentication credentials.
*   **App settings page**: Create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **Handle different modes**: Adapt your app to function correctly in both live mode and sandbox environments.
*   **Enable sandbox support**: Configure your public app for sandbox installation to allow users to evaluate features.
*   **Enable local network access**: Grant permission for your app to access the local network, necessary for certain development workflows.

### Distributing and Managing Your Stripe App

*   **Distribution options**: Understand the methods for sharing your Stripe Apps with users, including public availability and team-specific sharing.
*   **Upload and install your Stripe App**: Make your app available to team members on your Stripe account or publish it to the Stripe App Marketplace.
*   **Publish your app to the Stripe App Marketplace**: Learn the process of getting your app approved for the Stripe App Marketplace.
*   **Stripe Apps quality requirements**: Familiarize yourself with the qualitative requirements for apps on the App Marketplace.
*   **Test your app externally**: Set up and distribute test versions of your app before official publication.
*   **Manage your app's versions and releases**: Learn about app versioning and releases to manage changes over time.
*   **Promote your app**: Discover how to partner with Stripe to accelerate your app's growth.

### Migrating from Legacy Extensions

*   **Migrate an extension to Stripe Apps**: Understand the reasons and process for migrating legacy extensions to the modern Stripe Apps platform.
*   **Migrate a plugin to Stripe Apps or Stripe Connect**: Explore your migration options for third-party integrations that previously relied on secret API keys.
    *   **Migrate a plugin to an OAuth 2.0 app**: Learn to migrate to OAuth 2.0 authentication.
    *   **Migrate a plugin to a RAK app**: Learn to migrate to Restricted API Key authentication.

### Design Patterns and UI Components

*   **Design patterns for Stripe Apps**: Follow recommended design patterns to expedite your Stripe app review and ensure a consistent user experience.
    *   Full page apps
    *   Action buttons
    *   Onboarding flow
    *   Additional context
    *   Back link
    *   Communicating state
    *   Demo content
    *   Empty state
    *   Filter controls
    *   Lists
    *   Loading
    *   Progress stepping
    *   Redirects
    *   Settings sign in
    *   Sign in template
    *   Sign out
    *   Waiting screens
*   **UI components**: Utilize the Stripe components library to build your user interface.
    *   Accordion
    *   Badge
    *   Banner
    *   BarChart
    *   Box
    *   Button
    *   ButtonGroup
    *   Checkbox
    *   Chip
    *   ContextView
    *   DataTable
    *   DateField
    *   DetailPageModule
    *   DetailPagePropertyList
    *   DetailPageTable
    *   Divider
    *   FocusView
    *   FormFieldGroup
    *   FullPageTabs
    *   FullPageView
    *   Icon
    *   Img
    *   Inline
    *   LineChart
    *   Link
    *   List
    *   Menu
    *   OnboardingView
    *   OverviewPage
    *   PropertyList
    *   Radio
    *   SearchField
    *   Select
    *   SettingsView
    *   SignInView
    *   Sparkline
    *   Spinner
    *   Switch
    *   Table
    *   Tabs
    *   TaskList
    *   TextArea
    *   TextField
    *   Toast
    *   Tooltip

### Reference and Advanced Topics

*   **App manifest reference**: Understand the app manifest file, which describes how your app integrates with the Stripe platform.
*   **Stripe Apps CLI reference**: Install and use the command-line interface to manage your app's lifecycle.
*   **Permissions reference**: Learn about available events and their required permissions for your app.
*   **Extension SDK API reference**: Access documentation for context props and utility functions provided by the Extension SDK.
*   **Viewports reference**: Understand the available viewports for Stripe Apps and how they are displayed to users.
*   **Route descriptors**: Navigate within the Dashboard using route descriptors for soft, context-preserving navigation.
*   **Using install links**: Allow users to install public apps outside of the Stripe App Marketplace.
*   **Using roles in UI extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.