## Stripe Apps: Building and Managing Applications on Stripe

This documentation set provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem through **Stripe Apps**. It covers everything from the foundational concepts of app architecture to the specifics of UI development, API integration, and distribution.

### Core Concepts and Getting Started

*   **Stripe Apps Overview** (`/stripe-apps`): Introduces the Stripe Apps platform, its capabilities for extending Stripe with third-party services, and embedding custom UIs. It outlines how to get started with app development, covering app creation, API authentication, and server-side logic.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): Guides users through building a basic "Hello, world!" app, including setting up the Stripe CLI and creating a UI extension.
*   **How Stripe Apps Work** (`/stripe-apps/how-stripe-apps-work`): Explains the fundamental architecture of Stripe Apps, detailing the frontend (UI extensions) and backend components, and how they interact with Stripe.
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Illustrates various scenarios for building Stripe Apps, categorized into backend, frontend, and full-stack applications, with examples for different authentication methods.

### Development and Integration

*   **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.
*   **How UI Extensions Work** (`/stripe-apps/how-ui-extensions-work`): Provides an in-depth look at the UI extensions system, including their sandboxed nature and the use of Stripe's UI components.
*   **Add Server-Side Logic** (`/stripe-apps/build-backend`): Explains how to integrate server-side logic with a self-hosted backend for secure third-party integrations, webhook handling, and long-running processes.
*   **API Authentication Methods** (`/stripe-apps/api-authentication`): Outlines the available methods for authenticating API requests, including Platform keys, OAuth 2.0, and Restricted API Keys (RAKs).
    *   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`): Details the OAuth 2.0 flow for app authentication.
    *   **Restricted API Key Authentication** (`/stripe-apps/api-authentication/rak`): Explains how to use Restricted API Keys (RAKs) for secure, permissioned access.
*   **Store Secret Credentials and Tokens** (`/stripe-apps/store-secrets`): Describes how to securely persist sensitive data like authentication credentials using the Secret Store API.
*   **Handle Different Modes** (`/stripe-apps/handling-modes`): Guides on adapting your app to work seamlessly in both live mode and sandboxes.
*   **Enable Sandbox Support** (`/stripe-apps/enable-sandbox-support`): Details how to enable your public app for sandbox installation, allowing users to test its functionality.
*   **Enable Local Network Access** (`/stripe-apps/enable-local-network-access`): Explains how to enable local network access for app previewing during development.

### UI Components and Design

*   **UI Components** (`/stripe-apps/components`): Serves as a reference for all available UI components within the Stripe Apps SDK, enabling the construction of app interfaces. This includes components such as:
    *   Layout: `Box`, `Inline`, `Stack`
    *   Input Controls: `Button`, `Checkbox`, `DateField`, `Radio`, `Select`, `TextArea`, `TextField`, `Switch`
    *   Navigation: `Link`, `Tabs`
    *   Data Display: `Badge`, `Banner`, `BarChart`, `Chip`, `List`, `Sparkline`, `LineChart`, `Table`, `DataTable`, `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`, `PropertyList`
    *   Feedback & Status: `Spinner`, `Toast`, `Tooltip`
    *   Structure & Workflow: `Accordion`, `ButtonGroup`, `ContextView`, `FocusView`, `FormFieldGroup`, `Menu`, `OnboardingView`, `SettingsView`, `SignInView`, `TaskList`, `FullPageTabs`, `FullPageView`, `OverviewPage`
*   **Design Your App** (`/stripe-apps/design`): Provides guidelines and philosophy for designing Stripe Apps, emphasizing platform consistency and accessibility.
*   **Style Your App** (`/stripe-apps/style`): Details how to style UI components using provided design tokens to match the Stripe Dashboard's visual appearance.
*   **Design Patterns** (`/stripe-apps/patterns`): Offers recommended patterns for common app functionalities, including:
    *   `Action buttons` (`/stripe-apps/patterns/action-buttons`)
    *   `Additional context` (`/stripe-apps/patterns/additional-context`)
    *   `Back link` (`/stripe-apps/patterns/back-link`)
    *   `Communicating state` (`/stripe-apps/patterns/communicating-state`)
    *   `Demo content` (`/stripe-apps/patterns/demo`)
    *   `Empty state` (`/stripe-apps/patterns/empty-state`)
    *   `Filter controls` (`/stripe-apps/patterns/filter-controls`)
    *   `Full page apps` (`/stripe-apps/patterns/full-page-apps`)
    *   `Lists` (`/stripe-apps/patterns/lists`)
    *   `Loading` (`/stripe-apps/patterns/loading`)
    *   `Onboarding` (`/stripe-apps/patterns/onboarding-experience`)
    *   `Progress stepping` (`/stripe-apps/patterns/progress-stepping`)
    *   `Redirects` (`/stripe-apps/patterns/redirects`)
    *   `Settings sign in` (`/stripe-apps/patterns/settings-signin`)
    *   `Sign in template` (`/stripe-apps/patterns/sign-in`)
    *   `Sign out` (`/stripe-apps/patterns/sign-out`)
    *   `Waiting screens` (`/stripe-apps/patterns/waiting-screens`)

### Migration and Legacy

*   **Migrate an Extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Explains why and how to migrate legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Helps developers choose the right migration path for their existing plugins.
    *   **Migrate a Plugin to an OAuth 2.0 App** (`/stripe-apps/plugins/oauth`)
    *   **Migrate a Plugin to a RAK App** (`/stripe-apps/plugins/rak`)
*   **Legacy Extensions** (`/building-extensions`): Provides historical reference for the deprecated extensions integration pattern.

### Distribution and Management

*   **Distribution Options** (`/stripe-apps/distribution-options`): Details the methods for sharing Stripe Apps with users, including public distribution on the App Marketplace.
*   **Upload and Install Your Stripe App** (`/stripe-apps/upload-install-app`): Guides users on making their app available to team members within their Stripe account.
*   **How to Publish an App to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Outlines the process for getting an app approved and listed on the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements** (`/stripe-apps/review-requirements`): Lists the quality standards that apps must meet for App Marketplace review.
*   **Test Your App Externally** (`/stripe-apps/test-app`): Explains how to set up and distribute test versions of an app before its official publication.
*   **Manage Your App's Versions and Releases** (`/stripe-apps/versions-and-releases`): Covers app versioning strategies and the process of releasing new versions.
*   **Add Deep Links** (`/stripe-apps/deep-links`): Describes how to create deep links for navigating users directly to specific sections within a Stripe app.
*   **Using Install Links** (`/stripe-apps/install-links`): Explains how to allow users to install public apps outside of the Stripe App Marketplace.
*   **App Analytics** (`/stripe-apps/analytics`): Details how to access and understand app performance data.

### Advanced Topics and References

*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): Provides a comprehensive reference for all fields and options within the `stripe-app.json` manifest file.
*   **Stripe Apps CLI Reference** (`/stripe-apps/reference/cli`): Documents the commands and usage of the Stripe Apps command-line interface for app management.
*   **Permissions Reference** (`/stripe-apps/reference/permissions`): Lists available events and their required permissions for Stripe Apps.
*   **Extension SDK API Reference** (`/stripe-apps/reference/extensions-sdk-api`): Documents the Extension SDK API, including context props and utility functions for UI extensions.
*   **Viewports Reference** (`/stripe-apps/reference/viewports`): Lists available viewports within the Stripe Dashboard where UI extensions can be rendered.
*   **Component Hierarchy Constraints** (`/stripe-apps/component-hierarchy-constraints`): Explains the rules governing how UI components can be composed within a Stripe App.
*   **Add Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Details how to implement PKCE OAuth workflows for secure authorization.
*   **Using Roles in UI Extensions** (`/stripe-apps/using-roles-in-ui-extensions`): Explains how to leverage user roles within UI extensions to tailor functionality.
*   **UI Testing** (`/stripe-apps/ui-testing`): Describes utilities and helpers for testing the UI of Stripe Apps.
*   **Upgrade Stripe's UI Extension SDK** (`/stripe-apps/upgrade-stripes-ui-extension-sdk`): Provides guidance on upgrading the UI extension SDK and managing breaking changes.
*   **App Settings Page** (`/stripe-apps/app-settings`): Guides on creating a settings page for users to configure app preferences.
*   **Post-Install Actions** (`/stripe-apps/post-install-actions`): Details how to enable additional configurations that occur after app installation.