## Stripe Apps Documentation

This documentation set provides comprehensive guidance on developing, deploying, and managing Stripe Apps. Stripe Apps allow developers to extend Stripe's functionality by embedding custom user interfaces directly into the Stripe Dashboard or orchestrating the Stripe API for various business needs.

### Core Concepts and Getting Started

*   **Stripe Apps Overview** (`/stripe-apps`): Introduces Stripe Apps, their capabilities, and how they can be used to authenticate users, listen for events, automate workflows, or create custom UIs within the Stripe Dashboard.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): Guides users through the initial steps of building a basic Stripe App, including setting up the Stripe CLI and creating a "Hello, world!" example.
*   **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 platform.
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Outlines various scenarios for building Stripe Apps, categorized by app type (backend, frontend, full-stack), with examples.

### Building Your Stripe App

#### App Structure and Logic

*   **Build an App** (general entry point, not a specific page): This section likely covers the overall process of app creation.
*   **Back-end App Example** (`/stripe-apps/back-end-app-example`): Demonstrates how to build a Stripe App that performs backend processing without a user interface.
*   **Front-end App Example** (`/stripe-apps/front-end-app-example`): Shows how to build a Stripe App with a user interface that renders within the Stripe Dashboard.
*   **Full-stack App Example** (`/stripe-apps/full-stack-app-example`): Guides users on creating a Stripe App that includes both a UI and backend functionality.
*   **Add Server-Side Logic** (`/stripe-apps/build-backend`): Explains how to integrate server-side logic into your Stripe App using a self-hosted backend for secure third-party integrations, webhook handling, and long-running processes.

#### User Interface (UI) Development

*   **Build a UI** (`/stripe-apps/build-ui`): Introduces the process of creating a custom UI for your Stripe App using TypeScript, React, and Stripe's UI Extensions SDK.
*   **How UI Extensions Work** (`/stripe-apps/how-ui-extensions-work`): Details the UI extensions system, explaining how to render custom UIs within Stripe's sandboxed iframes using React and Stripe's UI toolkit.
*   **Component Hierarchy Constraints** (`/stripe-apps/component-hierarchy-constraints`): Describes rules and constraints that govern how UI components can be composed to ensure a predictable UI.
*   **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.
    *   **Accordion** (`/stripe-apps/components/accordion`)
    *   **Badge** (`/stripe-apps/components/badge`)
    *   **Banner** (`/stripe-apps/components/banner`)
    *   **BarChart** (`/stripe-apps/components/barchart`)
    *   **Box** (`/stripe-apps/components/box`)
    *   **Button** (`/stripe-apps/components/button`)
    *   **ButtonGroup** (`/stripe-apps/components/buttongroup`)
    *   **Checkbox** (`/stripe-apps/components/checkbox`)
    *   **Chip** (`/stripe-apps/components/chip`)
    *   **ContextView** (`/stripe-apps/components/contextview`)
    *   **DataTable** (`/stripe-apps/components/datatable`)
    *   **DateField** (`/stripe-apps/components/datefield`)
    *   **DetailPageModule** (`/stripe-apps/components/detailpagemodule`)
    *   **DetailPagePropertyList** (`/stripe-apps/components/detailpagepropertylist`)
    *   **DetailPageTable** (`/stripe-apps/components/detailpagetable`)
    *   **Divider** (`/stripe-apps/components/divider`)
    *   **FocusView** (`/stripe-apps/components/focusview`)
    *   **FormFieldGroup** (`/stripe-apps/components/formfieldgroup`)
    *   **FullPageTabs** (`/stripe-apps/components/fullpagetabs`)
    *   **FullPageView** (`/stripe-apps/components/fullpageview`)
    *   **Icon** (`/stripe-apps/components/icon`)
    *   **Img** (`/stripe-apps/components/img`)
    *   **Inline** (`/stripe-apps/components/inline`)
    *   **LineChart** (`/stripe-apps/components/linechart`)
    *   **Link** (`/stripe-apps/components/link`)
    *   **List** (`/stripe-apps/components/list`)
    *   **Menu** (`/stripe-apps/components/menu`)
    *   **OnboardingView** (`/stripe-apps/components/onboardingview`)
    *   **OverviewPage** (`/stripe-apps/components/overviewpage`)
    *   **PropertyList** (`/stripe-apps/components/propertylist`)
    *   **Radio** (`/stripe-apps/components/radio`)
    *   **SearchField** (`/stripe-apps/components/searchfield`)
    *   **Select** (`/stripe-apps/components/select`)
    *   **SettingsView** (`/stripe-apps/components/settingsview`)
    *   **SignInView** (`/stripe-apps/components/signinview`)
    *   **Sparkline** (`/stripe-apps/components/sparkline`)
    *   **Spinner** (`/stripe-apps/components/spinner`)
    *   **Switch** (`/stripe-apps/components/switch`)
    *   **Table** (`/stripe-apps/components/table`)
    *   **Tabs** (`/stripe-apps/components/tabs`)
    *   **TaskList** (`/stripe-apps/components/tasklist`)
    *   **TextArea** (`/stripe-apps/components/textarea`)
    *   **TextField** (`/stripe-apps/components/textfield`)
    *   **Toast** (`/stripe-apps/components/toast`)
    *   **Tooltip** (`/stripe-apps/components/tooltip`)
*   **Next generation UI components** (`/stripe-apps/next-ui-components`): Provides early access to updated UI components.
*   **Style your app** (`/stripe-apps/style`): Guides on styling your app using design tokens for visual consistency with the Stripe Dashboard.
*   **Design your app** (`/stripe-apps/design`): Offers design tools, guidelines, and philosophy for creating Stripe Apps.

#### Authentication and Authorization

*   **API Authentication Methods** (`/stripe-apps/api-authentication`): Details the available methods for authenticating requests to the Stripe API.
*   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`): Explains how to use OAuth 2.0 for API authentication.
*   **Restricted API Key Authentication** (`/stripe-apps/api-authentication/rak`): Describes how to use Restricted API Keys (RAKs) for secure authentication.
*   **Add Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Guides on implementing PKCE OAuth workflows for authentication.
*   **Store Secret Credentials and Tokens** (`/stripe-apps/store-secrets`): Explains how to securely store sensitive data like credentials and tokens using the Secret Store API.

#### App Configuration and Management

*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): Provides a detailed reference for all fields, types, and descriptions within the app manifest file (`stripe-app.json`).
*   **Stripe Apps CLI Reference** (`/stripe-apps/reference/cli`): Details the commands and usage of the Stripe Apps command-line interface for managing app development.
*   **Permissions Reference** (`/stripe-apps/reference/permissions`): Lists available events and their required permissions for your Stripe App.
*   **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 your UI extensions can be displayed.
*   **Enable Sandbox Support** (`/stripe-apps/enable-sandbox-support`): Explains how to enable sandbox installation for your public app for testing purposes.
*   **Handle Different Modes** (`/stripe-apps/handling-modes`): Guides on adapting your app to handle both live mode and sandbox environments.
*   **Enable Local Network Access** (`/stripe-apps/enable-local-network-access`): Details how to enable local network access for app previewing.
*   **Add an App Settings Page** (`/stripe-apps/app-settings`): Shows how to create a custom settings page for users to configure your Stripe App.
*   **Enable Post-Install Actions and Configurations** (`/stripe-apps/post-install-actions`): Explains how to support additional configurations that occur after app installation.
*   **Manage Your App's Versions and Releases** (`/stripe-apps/versions-and-releases`): Covers app versioning and the process of releasing new versions.

### Distributing and Testing Your App

*   **Distribution Options** (`/stripe-apps/distribution-options`): Outlines the ways to share your Stripe Apps with users, including public distribution on the App Marketplace.
*   **How to Publish an App to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Guides on the process of publishing your app to the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements** (`/stripe-apps/review-requirements`): Details the quality standards and requirements for apps submitted to the App Marketplace.
*   **Test Your App Externally** (`/stripe-apps/test-app`): Explains how to set up and distribute test versions of your app before publication.
*   **Upload and Install Your Stripe App** (`/stripe-apps/upload-install-app`): Guides on making your app available to team members by uploading and installing it.
*   **Using Install Links** (`/stripe-apps/install-links`): Describes how to allow users to install public apps outside of the Stripe App Marketplace.
*   **Add Deep Links** (`/stripe-apps/deep-links`): Explains how to create deep links to navigate users directly to your Stripe App within the Dashboard.

### Migrating from Legacy Extensions

*   **Legacy Extensions** (`/building-extensions`): Provides historical reference information about the deprecated extensions integration pattern.
*   **Migrate an Extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Explains why and how to migrate existing legacy extensions to the new Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Helps users decide on their migration path for plugins to Stripe Apps or Stripe Connect.
*   **Migrate a Plugin to an OAuth 2.0 App** (`/stripe-apps/plugins/oauth`): Guides on migrating plugins to OAuth 2.0 authentication within Stripe Apps.
*   **Migrate a Plugin to a RAK App** (`/stripe-apps/plugins/rak`): Details how to migrate plugins to Restricted API Key (RAK) authentication within Stripe Apps.

### Design Patterns and Best Practices

*   **Design Patterns for Stripe Apps** (`/stripe-apps/patterns`): Introduces recommended design patterns for building consistent and user-friendly Stripe Apps.
    *   **Full Page Apps** (`/stripe-apps/patterns/full-page-apps`)
    *   **Action Buttons** (`/stripe-apps/patterns/action-buttons`)
    *   **Onboarding Flow** (`/stripe-apps/patterns/onboarding-experience`)
    *   **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`)
    *   **Lists** (`/stripe-apps/patterns/lists`)
    *   **Loading** (`/stripe-apps/patterns/loading`)
    *   **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`)
*   **Onboarding** (`/stripe-apps/onboarding`): Provides guidance on creating intuitive and polished onboarding flows for your users.
*   **UI Testing** (`/stripe-apps/ui-testing`): Explains how to test your app's UI using the provided utilities and helpers.
*   **UI Extension Developer Tools** (`/stripe-apps/ui-extension-developer-tools`): Details the bundled developer tools for type-checking, linting, and testing your UI extension code.

### Embedded Apps

*   **Embedded Stripe Apps Integration Guide** (`/stripe-apps/embedded-apps`): Guides on using embedded components for Stripe Apps to allow customers to manage payment data within third-party applications.
*   **Marketing Software Integrations** (`/stripe-apps/embedded-apps/marketing-integrations`): Focuses on embedding marketing software integrations, such as Mailchimp, using Connect embedded components.

### App Analytics

*   **App Analytics** (`/stripe-apps/analytics`): Explains how to access and interpret analytics data to understand app performance and marketplace listing success.