## Stripe Apps: Building and Managing Applications within Stripe

This documentation suite provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem. Stripe Apps allow developers to extend Stripe's functionality by embedding custom user interfaces directly into the Stripe Dashboard and orchestrating the Stripe API.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps**: Understand the fundamental capabilities and benefits of building on the Stripe platform. (Page 30)
*   **Getting Started**: Learn the basics of app development, including building, previewing, and updating your first Stripe app. (Page 18)
*   **How Stripe Apps Work**: Delve into the architecture and components that constitute a Stripe App, including frontend and backend interactions. (Page 21)
*   **App Manifest Reference**: Understand the `stripe-app.json` file, which describes how your app integrates with the Stripe platform. (Page 35)

### Development and Building

*   **Building a UI**: Learn to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK. (Page 17)
*   **UI Extension System**: Understand how UI extensions render within Stripe's products and the differences from standard browser-based React applications. (Page 22)
*   **Next Generation UI Components**: Explore early access to updated UI components for enhanced functionality. (Page 28)
*   **UI Components Reference**: A comprehensive guide to all available UI components for building your app's interface. (Page 49)
    *   Specific component documentation includes: 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**: Integrate secure server-side logic for third-party system integrations, webhook event subscriptions, and long-running processes. (Page 6)
*   **API Authentication Methods**: Choose and implement the appropriate method for your app to authenticate requests to the Stripe API. (Page 2)
    *   **OAuth 2.0**: Utilize the industry-standard protocol for secure authorization. (Page 3)
    *   **Restricted API Key (RAK)**: Generate permissioned API keys for enhanced security. (Page 4)
*   **Authorization Flows**: Implement PKCE OAuth workflows for secure authentication. (Page 39)
*   **Store Secret Credentials**: Securely persist sensitive data like authentication credentials using the Secret Store API. (Page 46)
*   **Enable Local Network Access**: Configure access for previewing your app with local development servers. (Page 11)
*   **Enable Sandbox Support**: Prepare your app for testing in Stripe's sandboxed environments. (Page 12)
*   **Handle Different Modes**: Adapt your app to function correctly in both live and sandbox environments. (Page 19)

### App Structure and Use Cases

*   **Common Use Cases**: Explore examples of how Stripe Apps can be built for various business needs, including backend, frontend, and full-stack applications. (Page 14)
    *   **Back-end App Example**: Build an app that runs in the background without a user interface. (Page 13)
    *   **Front-end App Example**: Develop an app that renders a user interface within the Stripe Dashboard. (Page 15)
    *   **Full-stack App Example**: Create an app with both a user interface and backend functionality. (Page 16)

### Distribution and Deployment

*   **Distribution Options**: Learn how to share your Stripe Apps with users, either privately or publicly on the Stripe App Marketplace. (Page 20)
*   **Publish Your App**: Guide on getting your app approved for the Stripe App Marketplace. (Page 24)
*   **Stripe Apps Quality Requirements**: Understand the standards your app must meet for marketplace inclusion. (Page 25)
*   **Test Your App Externally**: Set up and distribute test versions of your app before publication. (Page 26)
*   **Upload and Install Your App**: Make your app available to team members within your Stripe account. (Page 115)
*   **Using Install Links**: Allow users to install public apps outside of the Stripe App Marketplace. (Page 23)

### Migration and Legacy

*   **Legacy Extensions**: Information on the deprecated extensions integration pattern and guidance on migrating to Stripe Apps. (Page 1)
*   **Migrate an Extension to Stripe Apps**: Understand the benefits and process of migrating from legacy extensions. (Page 27)
*   **Migrate a Plugin**: Guidance on migrating existing plugins to secure authentication methods within Stripe Apps. (Page 32)
    *   **Migrate to OAuth 2.0 App**: Specific steps for migrating to an OAuth 2.0 app. (Page 31)
    *   **Migrate to a RAK App**: Specific steps for migrating to a Restricted API Key app. (Page 33)

### Design and User Experience

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for building user-friendly Stripe Apps. (Page 114)
*   **Style Your App**: Learn how to style UI components using provided design tokens for consistency with the Stripe Dashboard. (Page 113)
*   **Design Patterns**: Follow recommended patterns for consistent, clear, and scalable app design. (Page 95)
    *   Includes patterns for: 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, 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 users through your app's sign-in and initial setup flows. (Page 29)
*   **App Settings Page**: Create a page for users to configure their app settings. (Page 45)
*   **Deep Links**: Create URLs that navigate users directly to specific sections within your Stripe app in the Dashboard. (Page 8)
*   **Route Descriptors**: Implement soft, context-preserving navigation to Dashboard pages from your Stripe App. (Page 43)
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard. (Page 116)

### Reference and Tools

*   **Stripe Apps CLI Reference**: Install and use the command-line interface to manage your app. (Page 36)
*   **Permissions Reference**: Understand available events and their required permissions for your app. (Page 37)
*   **Extension SDK API Reference**: Documentation for the SDK used to build UI extensions. (Page 38)
*   **Viewports Reference**: A list of available viewports where your UI extensions can be displayed within the Dashboard. (Page 42)
*   **Sample Apps**: Explore working examples of Stripe Apps to use as a starting point. (Page 44)
*   **App Analytics**: Access data to understand how your apps are used and their performance. (Page 5)
*   **Embedded Stripe Apps**: Integrate third-party Stripe Apps using embedded components. (Page 9)
*   **Marketing Software Integrations**: Embed marketing software integrations, such as Mailchimp, into your platform. (Page 10)