## Stripe Apps: Building and Distributing Integrations

This documentation suite provides comprehensive guidance on developing, distributing, and managing Stripe Apps. Stripe Apps allow developers to extend Stripe's functionality by embedding custom user interfaces within the Stripe Dashboard and orchestrating the Stripe API. This enables seamless integration of third-party services, automation of workflows, and creation of tailored user experiences for Stripe users.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps (`/stripe-apps`)**: Understand the fundamental capabilities of Stripe Apps, including their purpose, how they extend Stripe, and the types of applications you can build.
*   **Getting Started (`/stripe-apps/create-app`)**: Learn the basics of app development by building a simple "Hello, world!" app, covering essential steps like setting up the Stripe CLI and creating your first UI extension.
*   **How Stripe Apps Work (`/stripe-apps/how-stripe-apps-work`)**: Gain a deeper understanding of the 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`)**: Discover how to create custom user interfaces for your Stripe App using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit.
*   **UI Components (`/stripe-apps/components`)**: Explore the library of pre-built UI components available for building your app's interface, from basic elements like Buttons and TextFields to more complex components like Charts and Tables.
    *   **Specific Components**: Detailed documentation is available for each component, including `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`), `DateField` (`/stripe-apps/components/datefield`), `Divider` (`/stripe-apps/components/divider`), `FocusView` (`/stripe-apps/components/focusview`), `FormFieldGroup` (`/stripe-apps/components/formfieldgroup`), `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`), `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`), `TextArea` (`/stripe-apps/components/textarea`), `TextField` (`/stripe-apps/components/textfield`), `Toast` (`/stripe-apps/components/toast`), and `Tooltip` (`/stripe-apps/components/tooltip`).
*   **Server-Side Logic (`/stripe-apps/build-backend`)**: Learn how to add backend code to your Stripe App to validate and process user actions, integrate with third-party systems, and handle webhook events.
*   **API Authentication (`/stripe-apps/api-authentication`)**: Understand the different methods for authenticating requests to the Stripe API on behalf of your users, including Platform keys, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0 (`/stripe-apps/api-authentication/oauth`)**: Detailed guide on implementing OAuth 2.0 for secure authentication.
    *   **Restricted API Key (`/stripe-apps/api-authentication/rak`)**: Information on using Restricted API Keys for more granular access control.
*   **Authorization Flows (`/stripe-apps/pkce-oauth-flow`)**: Implement PKCE OAuth workflows for secure authorization.
*   **Storing Secrets (`/stripe-apps/store-secrets`)**: Learn how to securely store sensitive data like authentication credentials and tokens using the Secret Store API.
*   **App Settings Page (`/stripe-apps/app-settings`)**: Create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **Handling Modes (`/stripe-apps/handling-modes`)**: Adapt your app to work seamlessly with both live mode and sandbox environments.
*   **Local Network Access (`/stripe-apps/enable-local-network-access`)**: Configure local network access for app preview during development.
*   **Sandbox Support (`/stripe-apps/enable-sandbox-support`)**: Enable your public app for installation in Stripe's testing environments.
*   **Deep Links (`/stripe-apps/deep-links`)**: Create deep links to navigate users directly to specific pages within your Stripe App in the Dashboard.
*   **Route Descriptors (`/stripe-apps/route-descriptors`)**: Implement soft, context-preserving navigation to Dashboard pages from your Stripe App.
*   **UI Extension Developer Tools (`/stripe-apps/ui-extension-developer-tools`)**: Utilize bundled tools for type checking, linting, and testing your app's UI.
*   **UI Testing (`/stripe-apps/ui-testing`)**: Learn how to test your app's UI using provided utilities and helpers.
*   **Component Hierarchy Constraints (`/stripe-apps/component-hierarchy-constraints`)**: Understand the rules that govern how components can be composed within your app's UI.
*   **Next Generation UI Components (`/stripe-apps/next-ui-components`)**: Get early access to upcoming UI component updates.
*   **Upgrading the UI Extension SDK (`/stripe-apps/upgrade-stripes-ui-extension-sdk`)**: Guide on upgrading your app to the latest version of the UI extension SDK.

### App Distribution and Management

*   **Distribution Options (`/stripe-apps/distribution-options`)**: Explore the different ways to share your Stripe Apps with users, including public distribution via the App Marketplace and private sharing.
*   **Publishing an App (`/stripe-apps/publish-app`)**: Learn the process of publishing your app to the Stripe App Marketplace, including app review requirements.
*   **App Review Requirements (`/stripe-apps/review-requirements`)**: Understand the quality standards and guidelines for getting your app approved for the App Marketplace.
*   **Testing Your App (`/stripe-apps/test-app`)**: Set up and distribute test versions of your app before publication.
*   **Upload and Install Your App (`/stripe-apps/upload-install-app`)**: Make your app available to team members on your Stripe account.
*   **App Analytics (`/stripe-apps/analytics`)**: Access data to understand how your apps are used and how your marketplace listings perform.
*   **Managing Versions and Releases (`/stripe-apps/versions-and-releases`)**: Learn about app versioning and releases to manage changes over time.

### Migration and Legacy Integrations

*   **Migrating Extensions (`/stripe-apps/migrate-extension`)**: Understand why and how to migrate legacy extensions to Stripe Apps for better discoverability and functionality.
*   **Migrating Plugins (`/stripe-apps/plugins/decide-migration`)**: Decide on the best migration path for your third-party integrations that require secret API key authentication.
    *   **Migrate to OAuth 2.0 (`/stripe-apps/plugins/oauth`)**: Guide on migrating plugins to OAuth 2.0 authentication.
    *   **Migrate to a RAK App (`/stripe-apps/plugins/rak`)**: Guide on migrating plugins to Restricted API Key (RAK) authentication.
*   **Legacy Extensions (`/building-extensions`)**: Reference information for deprecated extension patterns.

### Design and Best Practices

*   **Design Your App (`/stripe-apps/design`)**: Get started with design tools, guidelines, and philosophy for building user-friendly Stripe Apps.
*   **Style Your App (`/stripe-apps/style`)**: Learn how to style UI components using provided design tokens for consistency with the Stripe Dashboard.
*   **Design Patterns (`/stripe-apps/patterns`)**: Follow recommended design patterns to expedite your Stripe app review and ensure a consistent user experience. This includes patterns for:
    *   **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`)**: Guide your users through your app's sign-in and initial setup flows.
*   **Using Roles in UI Extensions (`/stripe-apps/using-roles-in-ui-extensions`)**: Tailor functionality to different user roles within your app.

### Reference and Tools

*   **App Manifest Reference (`/stripe-apps/reference/app-manifest`)**: Understand the structure and fields of your app manifest file.
*   **Stripe Apps CLI Reference (`/stripe-apps/reference/cli`)**: Learn how to use the command-line interface to manage your Stripe App.
*   **Permissions Reference (`/stripe-apps/reference/permissions`)**: View available events and their required permissions for your app.
*   **Extension SDK API Reference (`/stripe-apps/reference/extensions-sdk-api`)**: Documentation for the Extension SDK API.
*   **Viewports Reference (`/stripe-apps/reference/viewports`)**: A list of available viewports for Stripe Apps and how end users see them.
*   **Sample Apps (`/stripe-apps/sample-apps`)**: Explore working examples of Stripe Apps to use as starting points for your own development.
*   **Common Use Cases (`/stripe-apps/common-use-cases`)**: Discover how to build Stripe Apps for various business needs, including backend, frontend, and full-stack applications.
*   **Backend App Example (`/stripe-apps/back-end-app-example`)**: A guide to building a Stripe app with backend processing and no user interface.
*   **Frontend 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 user interface and backend functionality.
*   **Embedded Stripe Apps (`/stripe-apps/embedded-apps`)**: Integrate third-party Stripe Apps into your platform using embedded components.
    *   **Marketing Software Integrations (`/stripe-apps/embedded-apps/marketing-integrations`)**: Embed marketing software integrations like Mailchimp.

This documentation suite aims to provide a comprehensive resource for developers looking to leverage Stripe Apps to build powerful and integrated solutions.