## Stripe Apps: Building and Managing Integrated Applications

This documentation set provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem through Stripe Apps. It covers the entire lifecycle of app development, from initial setup and API authentication to UI design, distribution, and ongoing maintenance.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps (`/stripe-apps`)**: Understand the fundamental capabilities of Stripe Apps, which allow for extending Stripe with third-party services or embedding custom user interfaces directly into the Stripe Dashboard. Learn about different app patterns and how to get started.
*   **Getting Started with Stripe Apps (`/stripe-apps/create-app`)**: This guide walks you through the basics of app development, including building, previewing, and updating a sample "Hello, world!" app.
*   **How Stripe Apps Work (`/stripe-apps/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.
*   **Common Use Cases (`/stripe-apps/common-use-cases`)**: Explore various scenarios for building Stripe Apps, categorized into backend, frontend, and full-stack applications.

### Development and Integration

*   **Building a UI (`/stripe-apps/build-ui`)**: Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit.
*   **UI Extension System (`/stripe-apps/how-ui-extensions-work`)**: Understand the principles behind UI extensions, how they run in a sandboxed environment, and their differences from standard React applications.
*   **Next Generation UI Components (`/stripe-apps/next-ui-components`)**: Get early access to and learn about the updated UI components that will be part of future SDK releases.
*   **UI Components Reference (`/stripe-apps/components`)**: A comprehensive catalog of all available UI components for building your app's interface, including detailed documentation for each.
    *   Examples include `Accordion`, `Badge`, `Banner`, `BarChart`, `Box`, `Button`, `ButtonGroup`, `Checkbox`, `Chip`, `ContextView`, `DateField`, `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`, `Divider`, `FocusView`, `FormFieldGroup`, `Icon`, `Img`, `Inline`, `LineChart`, `Link`, `List`, `Menu`, `OnboardingView`, `PropertyList`, `Radio`, `SearchField`, `Select`, `SettingsView`, `SignInView`, `Sparkline`, `Spinner`, `Switch`, `Table`, `Tabs`, `TaskList`, `TextArea`, `TextField`, `Toast`, and `Tooltip`.
*   **Component Hierarchy Constraints (`/stripe-apps/component-hierarchy-constraints`)**: Understand the rules and constraints that govern how UI components can be composed to ensure predictable rendering.
*   **Adding Server-Side Logic (`/stripe-apps/build-backend`)**: Learn how to integrate securely with third-party systems, subscribe to webhook events, and implement long-lived app logic using a self-hosted backend.
*   **API Authentication Methods (`/stripe-apps/api-authentication`)**: Explore the different ways your app can authenticate requests to the Stripe API, including Platform Key, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0 (`/stripe-apps/api-authentication/oauth`)**: Detailed guide on implementing OAuth 2.0 for authentication.
    *   **Restricted API Key (`/stripe-apps/api-authentication/rak`)**: Information on using Restricted API Keys for more secure access.
*   **Authorization Flows (`/stripe-apps/pkce-oauth-flow`)**: Implement PKCE OAuth workflows to retrieve access tokens from OAuth providers directly within your Stripe App.
*   **Handling Modes (`/stripe-apps/handling-modes`)**: Adapt your app to function correctly in both live mode and Stripe's sandbox testing environment.
*   **Enabling Sandbox Support (`/stripe-apps/enable-sandbox-support`)**: Configure your public app to allow installation in Stripe's sandbox environments for testing.
*   **Enabling Local Network Access (`/stripe-apps/enable-local-network-access`)**: Understand and configure Local Network Access (LNA) for previewing your app during development.
*   **Storing Secrets (`/stripe-apps/store-secrets`)**: Securely persist sensitive data like authentication credentials using the Secret Store API.
*   **App Settings Page (`/stripe-apps/app-settings`)**: Create a dedicated page within the Stripe Dashboard for users to configure their app settings.
*   **Deep Links (`/stripe-apps/deep-links`)**: Implement deep links to navigate users directly to specific sections within your Stripe App in the Dashboard.
*   **Install Links (`/stripe-apps/install-links`)**: Allow users to install your public app outside of the Stripe App Marketplace.
*   **Post-Install Actions (`/stripe-apps/post-install-actions`)**: Configure additional steps users might need to complete after installing your app.

### Migration and Legacy Extensions

*   **Legacy Extensions (`/building-extensions`)**: Information about the deprecated extensions integration pattern and historical reference.
*   **Migrating to Stripe Apps (`/stripe-apps/migrate-extension`)**: Understand why and how to migrate existing extensions to the newer Stripe Apps platform.
    *   **Migrate a Plugin to Stripe Apps or Stripe Connect (`/stripe-apps/plugins/decide-migration`)**: Guidance on choosing your migration path.
    *   **Migrate a Plugin to an OAuth 2.0 App (`/stripe-apps/plugins/oauth`)**: Specific steps for migrating to OAuth 2.0 authentication.
    *   **Migrate a Plugin to a RAK App (`/stripe-apps/plugins/rak`)**: Specific steps for migrating to Restricted API Key authentication.

### Distribution and Publishing

*   **Distribution Options (`/stripe-apps/distribution-options`)**: Learn about the different ways to share your Stripe Apps with users, including public and private distribution.
*   **Uploading and Installing Your App (`/stripe-apps/upload-install-app`)**: Steps for making your app available to team members within your Stripe account.
*   **Publishing to the App Marketplace (`/stripe-apps/publish-app`)**: A guide on how to get your app approved and listed on the global Stripe App Marketplace.
*   **App Review Requirements (`/stripe-apps/review-requirements`)**: Understand the quality standards and requirements for apps submitted to the App Marketplace.
*   **Testing Your App Externally (`/stripe-apps/test-app`)**: Set up and distribute test versions of your app to selected users before public release.
*   **Promoting Your App (`/stripe-apps/promote-app`)**: Learn how to partner with Stripe to accelerate your app's growth and reach.

### Design and Best Practices

*   **Design Your App (`/stripe-apps/design`)**: Get started with design tools, guidelines, and philosophy for creating user-friendly Stripe Apps.
*   **Style Your App (`/stripe-apps/style`)**: Learn how to style UI components using provided design tokens to match the Stripe Dashboard's visual consistency.
*   **Design Patterns (`/stripe-apps/patterns`)**: Explore recommended design patterns to expedite app review and ensure a consistent, clear, and scalable user experience.
    *   Includes patterns for `Action buttons`, `Additional context`, `Back link`, `Communicating state`, `Demo content`, `Empty state`, `Filter controls`, `Full page apps`, `Lists`, `Loading`, `Onboarding flow`, `Progress stepping`, `Redirects`, `Settings sign in`, `Sign in template`, `Sign out`, and `Waiting screens`.
*   **App Analytics (`/stripe-apps/analytics`)**: Access and understand data on how your apps are used and how your marketplace listings perform.
*   **Using Roles in UI Extensions (`/stripe-apps/using-roles-in-ui-extensions`)**: Tailor app functionality based on user roles within the Stripe Dashboard.
*   **Onboarding (`/stripe-apps/onboarding`)**: Guide your users through your app's sign-in and initial setup flows with intuitive and polished experiences.
*   **App Manifest Reference (`/stripe-apps/reference/app-manifest`)**: A detailed reference for all fields, types, and descriptions within your app manifest file (`stripe-app.json`).
*   **Permissions Reference (`/stripe-apps/reference/permissions`)**: A list of available events and their required permissions for your app.
*   **Viewports Reference (`/stripe-apps/reference/viewports`)**: Understand the available viewports where your app's UI can be displayed within the Stripe Dashboard.
*   **Extension SDK API Reference (`/stripe-apps/reference/extensions-sdk-api`)**: Documentation for the Extension SDK API, including context props and utility functions.
*   **Stripe Apps CLI Reference (`/stripe-apps/reference/cli`)**: Instructions on installing and using the Stripe Apps command-line interface to manage your app.
*   **Managing Versions and Releases (`/stripe-apps/versions-and-releases`)**: Learn about app versioning and releases to manage changes and ship new versions of your app.