## Stripe Apps: Building and Distributing Integrations

This documentation set provides comprehensive guidance on developing, distributing, and managing **Stripe Apps**. Stripe Apps allow developers to extend Stripe's functionality by embedding custom user interfaces directly within the Stripe Dashboard and orchestrating the Stripe API.

This set covers the entire lifecycle of a Stripe App, from initial setup and development to distribution and ongoing management.

---

### Core Concepts and Getting Started

*   **Stripe Apps Overview (`/stripe-apps`)**: Introduces the concept of Stripe Apps, their capabilities, and how they can be used to authenticate users, listen for events, automate workflows, and create custom UIs within the Stripe Dashboard.
*   **Getting Started (`/stripe-apps/create-app`)**: Guides users through the initial steps of building a "Hello, world!" sample app, including setting up the Stripe CLI and creating a basic UI extension.
*   **How Stripe Apps Work (`/stripe-apps/how-stripe-apps-work`)**: Explains the fundamental architecture of Stripe Apps, including their frontend and backend components and how they interact with the Stripe Dashboard.

### Development and Customization

*   **Building a UI (`/stripe-apps/build-ui`)**: Details how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit.
*   **UI Extensions (`/stripe-apps/how-ui-extensions-work`)**: Provides an in-depth look at the UI extensions system, including how they run in a sandboxed iframe and utilize Stripe's provided UI components.
*   **Server-Side Logic (`/stripe-apps/build-backend`)**: Explains how to add server-side logic to Stripe Apps using a self-hosted backend for secure third-party integrations, webhook event handling, and long-lived app logic.
*   **API Authentication (`/stripe-apps/api-authentication`)**: Outlines the different methods for authenticating requests to the Stripe API on behalf of users, including Platform Key, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0 (`/stripe-apps/api-authentication/oauth`)**: Details the OAuth 2.0 flow for app authentication.
    *   **Restricted API Key (`/stripe-apps/api-authentication/rak`)**: Explains how to use Restricted API Keys (RAKs) for secure authentication.
*   **UI Components (`/stripe-apps/components`)**: Serves as a reference for all available UI components in the Stripe Apps UI toolkit, such as `Accordion`, `Button`, `TextField`, `DataTable`, and more. Each component has its own dedicated documentation page.
*   **Design Patterns (`/stripe-apps/patterns`)**: Offers guidance on recommended design patterns for building consistent, clear, and scalable Stripe Apps, covering areas like onboarding, navigation, state communication, and more.
    *   **Action Buttons (`/stripe-apps/patterns/action-buttons`)**: Guidelines for placing and using action buttons.
    *   **Additional Context (`/stripe-apps/patterns/additional-context`)**: How to provide extra information to users.
    *   **Back Link (`/stripe-apps/patterns/back-link`)**: Implementing navigation back to previous pages.
    *   **Communicating State (`/stripe-apps/patterns/communicating-state`)**: How to inform users about actions and status.
    *   **Demo Content (`/stripe-apps/patterns/demo`)**: Tips for showcasing app functionality.
    *   **Empty State (`/stripe-apps/patterns/empty-state`)**: Designing for when no data is available.
    *   **Filter Controls (`/stripe-apps/patterns/filter-controls`)**: Using chips for filtering data.
    *   **Full Page Apps (`/stripe-apps/patterns/full-page-apps`)**: Building custom full-page interfaces within the Dashboard.
    *   **Loading (`/stripe-apps/patterns/loading`)**: Indicating when data is being fetched.
    *   **Lists (`/stripe-apps/patterns/lists`)**: Displaying collections of information.
    *   **Onboarding (`/stripe-apps/patterns/onboarding-experience`)**: Creating user-friendly onboarding flows.
    *   **Progress Stepping (`/stripe-apps/patterns/progress-stepping`)**: Guiding users through multi-step tasks.
    *   **Redirects (`/stripe-apps/patterns/redirects`)**: Managing user redirects.
    *   **Settings Sign In (`/stripe-apps/patterns/settings-signin`)**: Onboarding users via a settings page.
    *   **Sign In Template (`/stripe-apps/patterns/sign-in`)**: Using the `SignInView` component.
    *   **Sign Out (`/stripe-apps/patterns/sign-out`)**: Implementing user sign-out functionality.
    *   **Waiting Screens (`/stripe-apps/patterns/waiting-screens`)**: Informing users during wait times.
*   **Styling Your App (`/stripe-apps/style`)**: Guidance on styling UI components using provided design tokens to match the Stripe Dashboard's visual style.
*   **Design Your App (`/stripe-apps/design`)**: An overview of design tools, guidelines, and philosophy for building Stripe Apps.
*   **App Settings Page (`/stripe-apps/app-settings`)**: How to create a dedicated page for users to configure their app settings.
*   **Storing Secrets (`/stripe-apps/store-secrets`)**: Using the Secret Store API to securely persist sensitive data like authentication credentials.
*   **Deep Links (`/stripe-apps/deep-links`)**: Creating URLs that navigate users directly to specific sections of your app within the Dashboard.
*   **Authorization Flows (`/stripe-apps/pkce-oauth-flow`)**: Implementing PKCE OAuth workflows for secure authorization.
*   **Handling Modes (`/stripe-apps/handling-modes`)**: Adapting your app to work seamlessly in both live and sandbox environments.
*   **Local Network Access (`/stripe-apps/enable-local-network-access`)**: Enabling local network access for app previewing.
*   **Sandbox Support (`/stripe-apps/enable-sandbox-support`)**: Configuring your app for installation in Stripe's testing environments.

### Migration and Legacy Extensions

*   **Migrate Extension to Stripe Apps (`/stripe-apps/migrate-extension`)**: Explains why and how to migrate legacy extensions to the newer Stripe Apps platform.
*   **Migrate Plugin (`/stripe-apps/plugins/decide-migration`)**: Guides developers on choosing between migrating plugins to Stripe Apps or Stripe Connect.
    *   **Migrate to OAuth 2.0 App (`/stripe-apps/plugins/oauth`)**: Specific steps for migrating to an OAuth 2.0-based Stripe App.
    *   **Migrate to RAK App (`/stripe-apps/plugins/rak`)**: Specific steps for migrating to a Restricted API Key (RAK) based Stripe App.
*   **Legacy Extensions (`/building-extensions`)**: Provides historical reference information about the deprecated extensions integration pattern.

### Distribution and Publishing

*   **Distribution Options (`/stripe-apps/distribution-options`)**: Details the methods for sharing Stripe Apps, including public distribution via the App Marketplace and private sharing.
*   **Upload and Install App (`/stripe-apps/upload-install-app`)**: Instructions on how to upload and install your Stripe App for team members.
*   **Publish App (`/stripe-apps/publish-app`)**: A guide to publishing your app on the Stripe App Marketplace, including the app review process.
*   **App Review Requirements (`/stripe-apps/review-requirements`)**: Outlines the quality requirements for apps to be listed on the App Marketplace.
*   **Test Your App (`/stripe-apps/test-app`)**: Information on setting up and distributing test versions of your app before publication.
*   **Install Links (`/stripe-apps/install-links`)**: How to allow users to install public apps outside of the Stripe App Marketplace.
*   **Promote Your App (`/stripe-apps/promote-app`)**: Information on partnering with Stripe to grow your app's reach.

### Reference and Tools

*   **App Manifest Reference (`/stripe-apps/reference/app-manifest`)**: Documentation for the `stripe-app.json` file, detailing all fields, types, and descriptions.
*   **Stripe Apps CLI Reference (`/stripe-apps/reference/cli`)**: Information on using the Stripe Apps command-line interface for app management.
*   **Permissions Reference (`/stripe-apps/reference/permissions`)**: A list of available events and their required permissions for Stripe Apps.
*   **Extension SDK API Reference (`/stripe-apps/reference/extensions-sdk-api`)**: Documentation for the Extension SDK API, including context props and utility functions.
*   **Viewports Reference (`/stripe-apps/reference/viewports`)**: Lists available viewports within the Stripe Dashboard where your app's UI can be displayed.
*   **UI Extension Developer Tools (`/stripe-apps/ui-extension-developer-tools`)**: Details on the bundled developer tools for type checking, linting, and testing UI extensions.
*   **Upgrade UI Extension SDK (`/stripe-apps/upgrade-stripes-ui-extension-sdk`)**: Guidance on upgrading your app to the latest version of the `@stripe/ui-extension-sdk`.
*   **Sample Apps (`/stripe-apps/sample-apps`)**: Links to example Stripe Apps on GitHub to serve as starting points for development.
*   **App Analytics (`/stripe-apps/analytics`)**: How to access and understand data on your app's performance.
*   **Component Hierarchy Constraints (`/stripe-apps/component-hierarchy-constraints`)**: Rules governing how UI components can be composed.
*   **Next UI Components (`/stripe-apps/next-ui-components`)**: Information on the next generation of UI components available in the SDK.
*   **Using Roles in UI Extensions (`/stripe-apps/using-roles-in-ui-extensions`)**: How to tailor app functionality based on user roles within the Dashboard.
*   **Versions and Releases (`/stripe-apps/versions-and-releases`)**: Managing app versions and releases for updates and distribution.
*   **Back-end App Example (`/stripe-apps/back-end-app-example`)**: A guide to building a Stripe app with back-end processing and no user interface.
*   **Front-end App Example (`/stripe-apps/front-end-app-example`)**: A guide to building a Stripe app with a user interface but no back-end processing.
*   **Full-stack App Example (`/stripe-apps/full-stack-app-example`)**: A guide to building a Stripe app with both a user interface and back-end functionality.
*   **Embedded Stripe Apps (`/stripe-apps/embedded-apps`)**: Details on using embedded components to integrate Stripe Apps into third-party applications.
    *   **Marketing Integrations (`/stripe-apps/embedded-apps/marketing-integrations`)**: Examples of embedding marketing software integrations.