## Building Stripe Apps

This documentation suite focuses on developing and integrating **Stripe Apps**, a platform for extending Stripe's functionality and embedding custom user experiences within the Stripe Dashboard. It covers the entire app development lifecycle, from initial setup and authentication to UI design, backend logic, distribution, and ongoing management.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps** (`/stripe-apps`): Understand the fundamental capabilities of Stripe Apps, including their purpose, benefits, and how they extend Stripe's platform.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): Learn the basics of app development by building a simple "Hello, world!" app, covering installation of the Stripe CLI and initial setup.
*   **How Stripe Apps Work** (`/stripe-apps/how-stripe-apps-work`): Gain a deeper understanding of the architecture and components of Stripe Apps, including frontend and backend considerations.
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Explore various scenarios and app types (backend, frontend, full-stack) that can be built with Stripe Apps.

### Development and Design

*   **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.
    *   **UI Extensions** (`/stripe-apps/how-ui-extensions-work`): Understand the system for rendering custom UIs within Stripe.
    *   **UI Components** (`/stripe-apps/components`): A comprehensive reference to all available UI components for building your app's interface. This includes detailed documentation for individual components like:
        *   Layout and Structure: `Accordion` (`/stripe-apps/components/accordion`), `Box` (`/stripe-apps/components/box`), `Divider` (`/stripe-apps/components/divider`), `Inline` (`/stripe-apps/components/inline`), `Tabs` (`/stripe-apps/components/tabs`)
        *   Data Display: `Badge` (`/stripe-apps/components/badge`), `BarChart` (`/stripe-apps/components/barchart`), `DataTable` (`/stripe-apps/components/datatable`), `Img` (`/stripe-apps/components/img`), `LineChart` (`/stripe-apps/components/linechart`), `List` (`/stripe-apps/components/list`), `PropertyList` (`/stripe-apps/components/propertylist`), `Sparkline` (`/stripe-apps/components/sparkline`), `Table` (`/stripe-apps/components/table`)
        *   User Input: `Button` (`/stripe-apps/components/button`), `ButtonGroup` (`/stripe-apps/components/buttongroup`), `Checkbox` (`/stripe-apps/components/checkbox`), `Chip` (`/stripe-apps/components/chip`), `DateField` (`/stripe-apps/components/datefield`), `FormFieldGroup` (`/stripe-apps/components/formfieldgroup`), `Menu` (`/stripe-apps/components/menu`), `Radio` (`/stripe-apps/components/radio`), `SearchField` (`/stripe-apps/components/searchfield`), `Select` (`/stripe-apps/components/select`), `Switch` (`/stripe-apps/components/switch`), `TextArea` (`/stripe-apps/components/textarea`), `TextField` (`/stripe-apps/components/textfield`)
        *   Navigation and Flow: `Link` (`/stripe-apps/components/link`), `OnboardingView` (`/stripe-apps/components/onboardingview`), `SignInView` (`/stripe-apps/components/signinview`), `SettingsView` (`/stripe-apps/components/settingsview`)
        *   Feedback and Status: `Banner` (`/stripe-apps/components/banner`), `Spinner` (`/stripe-apps/components/spinner`), `Toast` (`/stripe-apps/components/toast`), `Tooltip` (`/stripe-apps/components/tooltip`)
        *   Specialized Views: `ContextView` (`/stripe-apps/components/contextview`), `DetailPageModule` (`/stripe-apps/components/detailpagemodule`), `DetailPagePropertyList` (`/stripe-apps/components/detailpagepropertylist`), `DetailPageTable` (`/stripe-apps/components/detailpagetable`), `FocusView` (`/stripe-apps/components/focusview`), `FullPageView` (`/stripe-apps/components/fullpageview`), `OverviewPage` (`/stripe-apps/components/overviewpage`), `TaskList` (`/stripe-apps/components/tasklist`)
    *   **Next generation UI components** (`/stripe-apps/next-ui-components`): Get early access to upcoming UI component updates.
    *   **Component hierarchy constraints** (`/stripe-apps/component-hierarchy-constraints`): Understand the rules for composing UI components.
    *   **UI testing** (`/stripe-apps/ui-testing`): Learn how to test your app's user interface.
    *   **UI extension developer tools** (`/stripe-apps/ui-extension-developer-tools`): Utilize bundled tools for type checking, linting, and testing.
    *   **Upgrade Stripe's UI extension SDK** (`/stripe-apps/upgrade-stripes-ui-extension-sdk`): Guidance on updating your app to the latest SDK versions.
    *   **Design your app** (`/stripe-apps/design`): Get started with design tools, guidelines, and philosophy for building consistent and accessible apps.
    *   **Style your app** (`/stripe-apps/style`): Learn how to apply custom styles using design tokens.
*   **Add server-side logic** (`/stripe-apps/build-backend`): Implement backend code for validating actions, processing data, and integrating with third-party systems.
    *   **Back-end app example** (`/stripe-apps/back-end-app-example`): A guide to building a Stripe app with 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 backend processing.
    *   **Full-stack app example** (`/stripe-apps/full-stack-app-example`): A guide to building a Stripe app with both a UI and backend functionality.
*   **Design patterns** (`/stripe-apps/patterns`): Follow recommended patterns for common app functionalities:
    *   `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 flow` (`/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`)

### Authentication and API Interaction

*   **API authentication methods** (`/stripe-apps/api-authentication`): Choose the best method for your app's use case, including Platform key, OAuth 2.0, and Restricted API keys.
    *   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`): Implement industry-standard OAuth 2.0 for secure authentication.
    *   **Restricted API key authentication** (`/stripe-apps/api-authentication/rak`): Utilize RAKs for more granular access control.
*   **Add authorization flows** (`/stripe-apps/pkce-oauth-flow`): Implement PKCE OAuth workflows for enhanced security.
*   **Store secret credentials and tokens in your app** (`/stripe-apps/store-secrets`): Securely persist sensitive data using the Secret Store API.

### App Management and Distribution

*   **Distribution options** (`/stripe-apps/distribution-options`): Learn how to share your Stripe Apps with users, either privately or publicly on the App Marketplace.
*   **Upload and install your Stripe App** (`/stripe-apps/upload-install-app`): Make your app available to team members within your Stripe account.
*   **Manage your app's versions and releases** (`/stripe-apps/versions-and-releases`): Understand app versioning and release management for shipping updates.
*   **Test your app externally** (`/stripe-apps/test-app`): Set up and distribute test versions of your app before publication.
*   **How to publish an app to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Guide to getting your app approved for the Stripe App Marketplace.
*   **Stripe Apps quality requirements** (`/stripe-apps/review-requirements`): Understand the qualitative requirements for apps on the App Marketplace.
*   **App analytics** (`/stripe-apps/analytics`): Access data to understand how your apps are used and their performance.

### Migration and Legacy Information

*   **Migrate an extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Learn why and how to migrate legacy extensions to the new Stripe Apps platform.
*   **Migrate a plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Understand your migration options for 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`): Information about the deprecated extensions integration pattern.

### Advanced Features and Configuration

*   **Enable local network access** (`/stripe-apps/enable-local-network-access`): Configure LNA for app previewing.
*   **Enable sandbox support for your public app** (`/stripe-apps/enable-sandbox-support`): Allow users to install apps in sandboxes for evaluation.
*   **Handle different modes** (`/stripe-apps/handling-modes`): Adapt your app to handle both live mode and sandboxes.
*   **Add deep links** (`/stripe-apps/deep-links`): Create deep links to navigate users directly to your Stripe app.
*   **Add an app settings page** (`/stripe-apps/app-settings`): Create a page for users to configure their app settings.
*   **Enable post-install actions and configurations** (`/stripe-apps/post-install-actions`): Support additional configurations after app installation.
*   **Using roles in UI extensions** (`/stripe-apps/using-roles-in-ui-extensions`): Tailor functionality based on user roles within the Dashboard.
*   **App manifest reference** (`/stripe-apps/reference/app-manifest`): Detailed documentation for the app manifest file.
*   **Stripe Apps CLI reference** (`/stripe-apps/reference/cli`): Commands and usage for the Stripe Apps command-line interface.
*   **Permissions reference** (`/stripe-apps/reference/permissions`): A list of available events and their required permissions.
*   **Extension SDK API reference** (`/stripe-apps/reference/extensions-sdk-api`): Documentation for the Extension SDK API.
*   **Viewports reference** (`/stripe-apps/reference/viewports`): Available viewports for displaying your UI extensions.
*   **Navigate within the Dashboard using route descriptors** (`/stripe-apps/route-descriptors`): Implement soft, context-preserving navigation.
*   **Embedded Stripe Apps integration guide** (`/stripe-apps/embedded-apps`): Integrate third-party Stripe Apps using embedded components.
    *   **Marketing software integrations** (`/stripe-apps/embedded-apps/marketing-integrations`): Example of integrating marketing software like Mailchimp.
*   **Sample apps** (`/stripe-apps/sample-apps`): Explore working examples of Stripe Apps to use as a starting point.