## Stripe Apps Documentation

This section of the documentation covers the development and management of Stripe Apps, which allow you to extend Stripe's functionality and integrate with third-party services.

### Getting Started with Stripe Apps

*   **Overview:** Understand what Stripe Apps are and how they can be used to enhance the Stripe platform.
*   **Create an App:** Learn the basics of app development by building a simple "Hello, world!" app.
*   **How Stripe Apps Work:** Delve into the core concepts and architecture of Stripe Apps, including frontend and backend components.

### Building Your Stripe App

*   **App Manifest:** Configure your app's behavior, permissions, and settings using the `stripe-app.json` file.
*   **API Authentication:** Choose and implement the appropriate authentication method for your app (Platform key, OAuth 2.0, or Restricted API Key).
*   **Server-Side Logic:** Add backend code to validate and process user actions, integrate with third-party systems, and handle webhooks.
*   **Build a UI:** Create custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK.
    *   **UI Extensions:** Understand how UI extensions work and how they render within the Stripe Dashboard.
    *   **UI Components:** Explore the library of pre-built UI components for building your app's interface.
    *   **Component Hierarchy Constraints:** Learn about the rules governing component composition.
    *   **Next Generation UI Components:** Get early access to upcoming UI component updates.
    *   **Design Your App:** Follow design guidelines and use provided tools to create a user-friendly app.
    *   **Style Your App:** Learn how to style your app using design tokens for visual consistency.
*   **Authorization Flows:** Implement secure authorization flows, including PKCE OAuth.
*   **App Settings Page:** Create a dedicated page for users to configure their app settings.
*   **Store Secret Credentials:** Securely store sensitive data like API keys and tokens using the Secret Store API.
*   **Deep Links:** Create deep links to navigate users directly to specific parts of your app within the Dashboard.
*   **Install Links:** Allow users to install your app outside of the Stripe App Marketplace.
*   **Post-Install Actions:** Configure actions that occur after a user installs your app.
*   **Handle Different Modes:** Adapt your app to work seamlessly in both live and sandbox environments.
*   **Enable Sandbox Support:** Configure your app for installation and testing in sandbox environments.
*   **Enable Local Network Access:** Allow your app to access local network resources for development and previewing.

### App Types and Use Cases

*   **Common Use Cases:** Explore examples of what you can build with Stripe Apps.
*   **Back-end App Example:** Build an app that runs in the background without a user interface.
*   **Front-end App Example:** Develop an app with a user interface that runs within the Stripe Dashboard.
*   **Full-stack App Example:** Create an app with both a user interface and backend functionality.
*   **Embedded Stripe Apps:** Integrate Stripe Apps into your own platform using embedded components.
*   **Marketing Software Integrations:** Integrate with marketing tools like Mailchimp.

### Testing and Debugging

*   **UI Testing:** Learn how to test your app's user interface using provided utilities.
*   **Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing.
*   **Test Your App Externally:** Set up and distribute test versions of your app before publication.

### Distribution and Publishing

*   **Distribution Options:** Understand the different ways to share your Stripe Apps with users.
*   **Upload and Install Your App:** Make your app available to team members on your Stripe account.
*   **Publish Your App:** Learn how to get your app approved for the Stripe App Marketplace.
*   **App Review Requirements:** Familiarize yourself with the quality requirements for apps on the App Marketplace.
*   **Promote Your App:** Discover how to partner with Stripe to accelerate your app's growth.

### Migration and Legacy

*   **Migrate an Extension to Stripe Apps:** Understand why and how to migrate legacy extensions to the new Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Decide on your migration path for existing plugins.
*   **Migrate a Plugin to an OAuth 2.0 App:** Convert your plugin to an OAuth 2.0 authenticated Stripe App.
*   **Migrate a Plugin to a RAK App:** Convert your plugin to a Restricted API Key (RAK) authenticated Stripe App.
*   **Legacy Extensions:** Information about the deprecated extensions integration pattern.

### Reference

*   **App Manifest Reference:** A detailed guide to all fields, types, and descriptions for your app manifest file.
*   **Stripe Apps CLI Reference:** Learn how to use the command-line interface to manage your app.
*   **Permissions Reference:** Understand available events and their required permissions.
*   **Extension SDK API Reference:** Documentation for the Extension SDK API.
*   **Viewports Reference:** A list of available viewports for Stripe Apps.
*   **Design Patterns:** Follow recommended design patterns for a consistent and scalable app 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 Reference:** Detailed documentation for each UI component.
    *   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