## Stripe Apps: Building and Managing Custom Integrations

This documentation group provides comprehensive guidance on developing, deploying, and managing Stripe Apps, a platform for extending Stripe's functionality and integrating with third-party services.

### Core Concepts and Getting Started

*   **Stripe Apps Overview:** Understand the fundamental concepts behind Stripe Apps, including their purpose, capabilities, and how they integrate with the Stripe Dashboard.
*   **Getting Started with Stripe Apps:** Learn the initial steps to begin app development, including setting up your environment and building a basic "Hello, world!" app.
*   **How Stripe Apps Work:** Delve into the architecture of Stripe Apps, covering frontend and backend components, UI extensions, and different app types (backend, frontend, full-stack).
*   **Common Use Cases:** Explore practical examples of what can be built with Stripe Apps, categorized by app type.

### Development and Customization

*   **Building a UI:** Discover how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **UI Extensions:** Understand the system for rendering custom UIs within Stripe's environment.
    *   **UI Components:** Browse a comprehensive library of pre-built UI components for building your app's interface, with detailed documentation for each.
        *   **Layout and Structure:** `Box`, `Inline`, `Divider`, `FullPageView`, `OverviewPage`, `FullPageTabs`
        *   **Input and Controls:** `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `FormFieldGroup`, `Radio`, `SearchField`, `Select`, `Switch`, `TextArea`, `TextField`
        *   **Information Display:** `Accordion`, `Badge`, `Banner`, `BarChart`, `Chip`, `Icon`, `Img`, `LineChart`, `Link`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Table`, `Tabs`, `Tooltip`
        *   **Navigation and Flow:** `ContextView`, `FocusView`, `OnboardingView`, `SettingsView`, `SignInView`
        *   **Status and Feedback:** `Spinner`, `Toast`
        *   **Data Display:** `DataTable`, `DetailPageModule`, `DetailPageProperty`, `DetailPageTable`
        *   **Task Management:** `TaskList`
*   **Server-Side Logic:** Implement backend code to validate user actions, process data, integrate with third-party systems, and handle webhooks.
*   **API Authentication Methods:** Choose and implement the most suitable authentication method for your app, including Platform Key, OAuth 2.0, and Restricted API Keys (RAKs).
    *   **OAuth 2.0:** Detailed guide on using OAuth 2.0 for authentication.
    *   **Restricted API Key (RAK):** Understand how to use RAKs for secure API access.
    *   **Authorization Flows:** Implement PKCE OAuth workflows for secure authorization.
*   **App Manifest Reference:** Understand the structure and fields of the `stripe-app.json` file, which describes your app's integration with Stripe.
*   **Permissions Reference:** Learn about available events and their required permissions for your app to access user data.
*   **Extension SDK API Reference:** Access documentation for the Extension SDK, providing context props and utility functions for UI extensions.
*   **Design Your App:** Follow design guidelines and use provided tools to create a user-friendly and visually consistent app experience.
    *   **Style Your App:** Learn how to apply styling using design tokens and custom CSS.
    *   **Design Patterns:** Implement recommended patterns for common app functionalities like onboarding, sign-in, and data display.
        *   **Core Patterns:** `Action buttons`, `Additional context`, `Back link`, `Communicating state`, `Demo content`, `Empty state`, `Filter controls`, `Full page apps`, `Lists`, `Loading`, `Onboarding flow`, `Progress stepping`, `Redirects`, `Settings sign in`, `Sign in template`, `Sign out`, `Waiting screens`

### Deployment and Management

*   **Distribution Options:** Learn how to make your Stripe App available to users, either privately or publicly on the Stripe App Marketplace.
*   **Upload and Install Your App:** Guide your team members through the process of uploading and installing your app within your Stripe account.
*   **Manage Your App's Versions and Releases:** Understand app versioning and release management to ship updates and track changes.
*   **Test Your App Externally:** Set up and distribute test versions of your app to gather feedback before publication.
*   **Enable Sandbox Support:** Configure your app to work seamlessly with Stripe's testing environments.
*   **Handle Different Modes:** Adapt your app to function correctly in both live mode and sandbox environments.
*   **Enable Local Network Access:** Configure settings for previewing your app with local development servers.
*   **Add Deep Links:** Create deep links to navigate users directly to specific sections of your app within the Dashboard.
*   **Install Links:** Allow users to install your app outside of the Stripe App Marketplace.
*   **Post-Install Actions:** Configure actions that users need to complete after installing your app.
*   **App Settings Page:** Create a dedicated page for users to configure their app settings.
*   **Publish Your App:** Follow the steps to get your app approved and listed on the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements:** Understand the quality standards and guidelines for apps featured on the App Marketplace.

### Migration and Legacy

*   **Migrate an Extension to Stripe Apps:** Learn why and how to migrate legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Explore your options for migrating older integrations.
    *   **Migrate a Plugin to an OAuth 2.0 App:** Specific guidance for migrating to OAuth 2.0 authentication.
    *   **Migrate a Plugin to a RAK App:** Specific guidance for migrating to Restricted API Key (RAK) authentication.
*   **Legacy Extensions:** Information about the deprecated extensions integration pattern.

### Tools and Utilities

*   **Stripe Apps CLI Reference:** Learn how to use the command-line interface to manage your Stripe app's lifecycle.
*   **UI Extension Developer Tools:** Utilize bundled tools for type-checking, linting, and testing your app's UI.
*   **Upgrade Stripe's UI Extension SDK:** Follow guides for upgrading your app to the latest SDK versions and managing breaking changes.