## Stripe Apps Documentation

This documentation set covers the development and management of Stripe Apps, a platform that allows developers to extend Stripe's functionality and integrate third-party services directly into the Stripe Dashboard.

### Core Concepts

*   **Stripe Apps Overview:** Understand the fundamental capabilities of Stripe Apps, including embedding custom user interfaces, orchestrating the Stripe API, and automating workflows. (Page 30)
*   **How Stripe Apps Work:** Learn about the architecture of Stripe Apps, including frontend (UI extensions) and backend components, and how to build apps for personal use or for the Stripe App Marketplace. (Page 21)
*   **App Manifest Reference:** Familiarize yourself with the `stripe-app.json` file, which describes how your app integrates with the Stripe platform, including permissions, distribution types, and API access types. (Page 35)

### Building Your App

*   **Getting Started with Stripe Apps:** Begin your app development journey with a "Hello, world!" example, covering building, previewing, and updating your app. (Page 18)
*   **Common Use Cases:** Explore different app types (backend, frontend, full-stack) and common business needs they address. (Page 14)
*   **Backend App Example:** Learn to build a Stripe app that performs backend processing without a user interface. (Page 13)
*   **Frontend App Example:** Discover how to build a Stripe app that renders a user interface within the Stripe Dashboard. (Page 15)
*   **Full-Stack App Example:** Understand how to create a Stripe app with both a user interface and backend functionality. (Page 16)
*   **Server-Side Logic:** Implement backend code to securely integrate with third-party systems, handle webhooks, and execute long-lived app logic. (Page 6)
*   **Build a UI:** Create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK. (Page 17)
*   **UI Extensions:** Understand how UI extensions work, their sandboxed environment, and how to use Stripe's UI components. (Page 22)
*   **Next Generation UI Components:** Get early access to updated UI components for enhanced functionality. (Page 28)
*   **UI Components Reference:** Explore the library of pre-built UI components for building your app's interface, including Accordion, Badge, Banner, Button, and many more. (Page 49)
    *   **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)
    *   **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)
*   **Design Patterns:** Follow recommended design patterns for a consistent, clear, and scalable app experience. (Page 95)
    *   **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 Experience:** (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)
*   **Design Your App:** Utilize design tools and guidelines to simplify the app design process. (Page 114)
*   **Style Your App:** Learn to style UI components using provided design tokens for consistency with the Stripe Dashboard. (Page 113)

### Authentication and Authorization

*   **API Authentication Methods:** Choose the best authentication method for your app's use case, including Platform key, OAuth 2.0, and Restricted API keys. (Page 2)
*   **OAuth 2.0:** Implement industry-standard OAuth 2.0 for secure API authentication. (Page 3)
*   **Restricted API Key Authentication:** Utilize restricted API keys (RAKs) for enhanced security and granular control over permissions. (Page 4)
*   **Authorization Flows:** Implement PKCE OAuth workflows for secure authorization. (Page 39)
*   **Store Secret Credentials and Tokens:** Securely persist sensitive data like authentication credentials using the Secret Store API. (Page 46)

### App Management and Distribution

*   **Upload and Install Your App:** Make your app available to team members by uploading and installing it in test mode or live mode. (Page 115)
*   **Distribution Options:** Learn how to share your Stripe Apps publicly on the Stripe App Marketplace or privately with your team. (Page 20)
*   **Publish Your App:** Follow the steps to get your app approved for the Stripe App Marketplace. (Page 24)
*   **App Review Requirements:** Understand the quality requirements for apps listed on the App Marketplace. (Page 25)
*   **Test Your App Externally:** Set up and distribute test versions of your app before official publication. (Page 26)
*   **Manage Your App's Versions and Releases:** Learn about app versioning and releases to manage changes over time. (Page 117)
*   **App Analytics:** Access analytics to understand how your app is used and how your marketplace listings perform. (Page 5)

### Integration and Configuration

*   **Enable Sandbox Support:** Allow users to install apps in sandboxes for evaluation and testing. (Page 12)
*   **Handle Different Modes:** Adapt your app to function correctly in both live mode and sandbox environments. (Page 19)
*   **Enable Local Network Access:** Grant permission for your app to access the local network during development and preview. (Page 11)
*   **Deep Links:** Create deep links to navigate users directly to specific sections of your Stripe app within the Dashboard. (Page 8)
*   **Install Links:** Allow users to install public apps directly from your website or other external sources. (Page 23)
*   **Post-Install Actions:** Support additional configurations that occur after a user installs your app. (Page 40)
*   **App Settings Page:** Create a page that allows users to configure their app settings within the Stripe Dashboard. (Page 45)
*   **Embedded Stripe Apps:** Integrate third-party Stripe Apps into your platform using embedded components. (Page 9)
*   **Marketing Software Integrations:** Embed marketing software integrations, such as Mailchimp, into your platform. (Page 10)
*   **Using Roles in UI Extensions:** Tailor app functionality based on user roles within the Stripe Dashboard. (Page 116)

### Migration

*   **Migrate an Extension to Stripe Apps:** Understand why and how to migrate legacy extensions to the modern Stripe Apps platform. (Page 27)
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Explore your migration options for third-party integrations that require secret API key authentication. (Page 32)
*   **Migrate a Plugin to an OAuth 2.0 App:** Learn how to migrate your plugin to use OAuth 2.0 authentication. (Page 31)
*   **Migrate a Plugin to a RAK App:** Migrate your plugin to use Restricted API Key (RAK) authentication. (Page 33)
*   **Legacy Extensions:** Find reference information about the deprecated extensions integration pattern. (Page 1)

### Reference and Tools

*   **Stripe Apps CLI Reference:** Install and use the command-line interface to manage your Stripe app. (Page 36)
*   **Permissions Reference:** Understand available events and their required permissions for your app. (Page 37)
*   **Extension SDK API Reference:** Documented props and utility functions for UI extensions to interact with the Stripe Dashboard. (Page 38)
*   **Viewports Reference:** Learn about the available viewports where your UI extensions can be displayed within the Stripe Dashboard. (Page 42)
*   **Route Descriptors:** Implement soft, context-preserving navigation to Dashboard pages from your Stripe App. (Page 43)
*   **Sample Apps:** Explore working Stripe Apps from design to code on GitHub to use as starting points for your own applications. (Page 44)
*   **UI Extension Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing your app's code. (Page 47)
*   **Upgrade Stripe's UI Extension SDK:** Follow guides to upgrade your app to the latest version of the UI extension SDK, managing breaking changes. (Page 48)