## Stripe Apps: Building and Managing Integrations

This documentation section provides a comprehensive guide to developing, deploying, and managing applications within the Stripe ecosystem. It covers the entire lifecycle of a Stripe App, from initial concept and development to distribution and ongoing maintenance.

### Core Concepts and Getting Started

*   **Stripe Apps Overview:** Understand the fundamental purpose and capabilities of Stripe Apps, which allow for extending Stripe's functionality and embedding custom user interfaces within the Stripe Dashboard. (Page 30)
*   **Getting Started with Stripe Apps:** Learn the basics of app development, including building, previewing, and updating a sample "Hello, world!" app. (Page 18)
*   **How Stripe Apps Work:** Delve into the architecture of Stripe Apps, understanding their frontend and backend components, and how they interact with the Stripe API. (Page 21)
*   **App Manifest Reference:** Familiarize yourself with the `stripe-app.json` file, which describes how your app integrates with the Stripe platform, including essential fields like ID, version, name, icon, distribution type, and API access type. (Page 35)
*   **Stripe Apps CLI Reference:** Learn how to use the Stripe command-line interface to create, develop, configure, and upload your Stripe apps. (Page 36)

### Development and Building

*   **Build an App:** This is the central hub for app development, guiding you through the process of creating your Stripe App. (Page 18)
*   **Build a UI:** Discover how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit. (Page 17)
*   **How UI Extensions Work:** Understand the system for rendering your own UI within Stripe's products using TypeScript and React, including the differences from standard browser-based React applications. (Page 22)
*   **Next Generation UI Components:** Get early access to updated UI components that will be part of future SDK releases. (Page 28)
*   **UI Components Reference:** Explore the library of prebuilt UI components available for building your app's interface, such as Accordion, Badge, Button, and more. (Page 49)
    *   Specific component documentation is available for: Accordion (Page 50), Badge (Page 51), Banner (Page 52), BarChart (Page 53), Box (Page 54), Button (Page 55), ButtonGroup (Page 56), Checkbox (Page 57), Chip (Page 58), ContextView (Page 59), DateField (Page 61), Divider (Page 65), FocusView (Page 66), FormFieldGroup (Page 67), Icon (Page 70), Img (Page 71), Inline (Page 72), LineChart (Page 73), Link (Page 74), List (Page 75), Menu (Page 76), OnboardingView (Page 77), PropertyList (Page 79), Radio (Page 80), SearchField (Page 81), Select (Page 82), SettingsView (Page 83), SignInView (Page 84), Sparkline (Page 85), Spinner (Page 86), Switch (Page 87), Table (Page 88), Tabs (Page 89), TextArea (Page 91), TextField (Page 92), Toast (Page 93), Tooltip (Page 94).
*   **Add Server-Side Logic:** Learn how to integrate securely with third-party systems, subscribe to webhook events, and implement long-lived app logic using a self-hosted backend. (Page 6)
*   **Back-end App Example:** A guide to building a Stripe app that performs backend processing without a user interface. (Page 13)
*   **Front-end App Example:** A guide to building a Stripe app that renders a user interface but performs no backend processing. (Page 15)
*   **Full-stack App Example:** A guide to building a Stripe app with both a user interface and backend functionality. (Page 16)
*   **Common Use Cases:** Explore examples of how Stripe Apps can be used for common business needs, categorized by app type (backend, frontend, full-stack). (Page 14)
*   **Store Secret Credentials and Tokens:** Securely persist sensitive data like authentication credentials using the Secret Store API. (Page 46)

### Authentication and Authorization

*   **API Authentication Methods:** Select the appropriate API authentication method for your app's use case, including Platform Key, OAuth 2.0, and Restricted API Keys. (Page 2)
*   **OAuth 2.0:** Understand how to use the industry-standard OAuth 2.0 for authenticating requests to the Stripe API on behalf of your users. (Page 3)
*   **Restricted API Key Authentication:** Learn how to generate permissioned, restricted API keys (RAKs) for secure authentication. (Page 4)
*   **Add Authorization Flows:** Implement PKCE OAuth workflows in your Stripe app to retrieve access tokens from OAuth providers. (Page 39)

### Testing and Previewing

*   **Enable Sandbox Support:** Configure your public app for sandbox installation to allow users to evaluate its features in Stripe's testing environment. (Page 12)
*   **Handle Different Modes:** Adapt your app to work seamlessly in both live mode and sandboxes. (Page 19)
*   **Enable Local Network Access:** Understand and grant the necessary permissions for browser access to your local network during app preview. (Page 11)
*   **Test Your App Externally:** Set up and distribute test versions of your app to other accounts before publication. (Page 26)
*   **UI Testing:** Learn how to write unit tests for your app's user interface using the Extension SDK's testing utilities. (Page 41)
*   **UI Extension Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing your UI extension code. (Page 47)

### Distribution and Publishing

*   **Distribution Options:** Explore the two primary ways to distribute your apps: publicly on the Stripe App Marketplace or privately with your team. (Page 20)
*   **How to Publish an App to the Stripe App Marketplace:** Follow the steps to get your app approved and listed in the Stripe App Marketplace. (Page 24)
*   **Stripe Apps Quality Requirements:** Understand the qualitative requirements for apps to be accepted into the App Marketplace. (Page 25)
*   **Upload and Install Your Stripe App:** Make your app available to team members by uploading and installing it on your Stripe account. (Page 115)
*   **Using Install Links:** Allow users to install public apps outside of the Stripe App Marketplace with a streamlined flow. (Page 23)
*   **Promote Your App:** Learn how to partner with Stripe to accelerate your app's growth and gain visibility. (Page 34)

### Migration and Legacy Integrations

*   **Migrate an Extension to Stripe Apps:** Understand why and how to migrate legacy extensions to the modern Stripe Apps platform for better discoverability and permissions. (Page 27)
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Decide on the best migration path for your third-party integration that previously relied on secret API keys. (Page 32)
*   **Migrate a Plugin to an OAuth 2.0 App:** Learn how to migrate your plugin to use OAuth 2.0 authentication within Stripe Apps. (Page 31)
*   **Migrate a Plugin to a RAK App:** Learn how to migrate your plugin to use Restricted API Keys (RAKs) for authentication within Stripe Apps. (Page 33)
*   **Legacy Extensions:** Information about the deprecated extensions integration pattern and historical reference. (Page 1)

### Design and User Experience

*   **Design Your App:** Get started with design tools, guidelines, and philosophy for creating user-friendly Stripe Apps. (Page 114)
*   **Style Your App:** Learn how to style UI components using provided design tokens to match the Stripe Dashboard's visual consistency. (Page 113)
*   **Design Patterns for Stripe Apps:** Follow recommended patterns for common app functionalities to expedite the review process and ensure a consistent user experience. (Page 95)
    *   Patterns include: Action buttons (Page 111), Additional context (Page 99), Back link (Page 112), Communicating state (Page 106), Demo content (Page 100), Empty state (Page 107), Filter controls (Page 96), Full page apps (Page 97), Lists (Page 98), Loading (Page 108), Onboarding (Page 29), Onboarding flow (Page 101), Progress stepping (Page 109), Redirects (Page 102), Settings sign in (Page 103), Sign in template (Page 104), Sign out (Page 105), Waiting screens (Page 110).
*   **Onboarding:** Guide your users through your app's sign-in and initial setup flows for an intuitive and polished first interaction. (Page 29)
*   **App Settings Page:** Create a page that allows users to configure their app's settings within the Stripe Dashboard. (Page 45)
*   **Deep Links:** Create deep links that navigate users directly to your Stripe app within the Dashboard. (Page 8)
*   **Using Roles in UI Extensions:** Tailor functionality within UI extensions based on the active user's role in the Dashboard. (Page 116)

### Advanced Features and Reference

*   **Embedded Stripe Apps:** Utilize embedded components to allow customers to manage payments data within third-party applications. (Page 9)
*   **Marketing Software Integrations:** Embed marketing software integrations, such as Mailchimp, on your platform using Connect embedded components. (Page 10)
*   **App Analytics:** Access analytics to understand how your apps are used and how your marketplace listings perform. (Page 5)
*   **Permissions Reference:** Understand the available events and their required permissions for your Stripe App. (Page 37)
*   **Viewports Reference:** Specify the pages within the Stripe Dashboard where your app's views can appear. (Page 42)
*   **Route Descriptors:** Implement soft, context-preserving navigation to Dashboard pages from your Stripe App without full page reloads. (Page 43)
*   **Component Hierarchy Constraints:** Understand the rules that govern how components can be composed to ensure a predictable UI. (Page 7)
*   **Extension SDK API Reference:** Documentation for the Extension SDK API, providing context props and utility functions for UI extensions. (Page 38)
*   **Manage Your App's Versions and Releases:** Learn about app versioning and releases to ship new versions and manage changes over time. (Page 117)