## Stripe Apps: Building and Managing Integrations

This documentation section provides a comprehensive guide to developing, deploying, and managing **Stripe Apps**. These apps allow you to extend Stripe's functionality by embedding custom user interfaces directly into the Stripe Dashboard or by orchestrating the Stripe API for various automation and integration needs.

### Core Concepts and Getting Started

*   **What are Stripe Apps?** Understand the fundamental capabilities of Stripe Apps, including creating custom UIs within the Dashboard, synchronizing data with external systems, and automating workflows.
*   **Getting Started:** Learn the basics of app development, from building a simple "Hello, world!" app to previewing and updating your creations. This includes setting up the Stripe CLI.
*   **How Stripe Apps Work:** Delve into the architecture of Stripe Apps, understanding their frontend and backend components, and how they interact with the Stripe ecosystem.
*   **App Types:** Explore the different kinds of Stripe Apps you can build:
    *   **Back-end Apps:** For background processing and data synchronization without a user interface.
    *   **Front-end Apps:** For rendering user interfaces within the Stripe Dashboard.
    *   **Full-stack Apps:** Combining both UI and backend functionality.

### Development and Customization

*   **Building a UI:** Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit.
    *   **UI Extensions:** Understand how UI extensions work and how to extend the Stripe Dashboard.
    *   **UI Components:** Explore the comprehensive library of pre-built UI components for building your app's interface, including elements like `Accordion`, `Badge`, `Button`, `Input`, `Table`, and more.
    *   **Component Hierarchy Constraints:** Understand the rules governing how UI components can be composed to ensure a consistent and predictable user experience.
    *   **Next Generation UI Components:** Get early access to upcoming UI component updates.
    *   **Styling:** Learn how to style your app to match the Stripe Dashboard's visual language using provided design tokens.
    *   **Design Patterns:** Follow recommended design patterns for a consistent, clear, and scalable app design.
*   **Server-Side Logic:** Implement backend code to validate and process user actions and data, integrate with third-party systems, and handle webhook events.
*   **API Authentication:** Choose the appropriate method for authenticating requests to the Stripe API:
    *   **Platform Key:** For managing fewer keys per install.
    *   **OAuth 2.0:** The industry-standard protocol for secure authorization.
    *   **Restricted API Key (RAK):** For generating permissioned keys with specific access.
*   **Authorization Flows:** Implement secure authorization, including PKCE OAuth workflows.
*   **Storing Secrets:** Securely store sensitive data like authentication credentials using the Secret Store API.
*   **App Settings Page:** Create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **Deep Links:** Create deep links to navigate users directly to specific sections within your Stripe app in the Dashboard.
*   **Viewports:** Understand how viewports define where your app's UI can appear within the Stripe Dashboard.
*   **Route Descriptors:** Implement soft, context-preserving navigation between Dashboard pages.

### Testing and Deployment

*   **Enabling Sandbox Support:** Allow users to install your app in Stripe's testing environments to evaluate its features.
*   **Handling Modes:** Adapt your app to function correctly in both live and sandbox environments.
*   **Enabling Local Network Access:** Configure your app to access local network resources for development and previewing.
*   **Testing Your App:** Learn how to test your app externally before publishing.
*   **Distribution Options:** Choose how to share your Stripe Apps with users:
    *   **Publicly:** Publish on the Stripe App Marketplace.
    *   **Privately:** Share only with your team members.
*   **Uploading and Installing:** Make your app available to team members on your Stripe account.
*   **Publishing to the App Marketplace:** Follow the steps and requirements to get your app approved and listed on the Stripe App Marketplace.
    *   **App Review Requirements:** Understand the quality standards for apps on the Marketplace.
*   **Managing Versions and Releases:** Learn about app versioning to ship new versions and manage changes over time.

### Migration and Legacy

*   **Migrating to Stripe Apps:** Understand why and how to migrate from legacy extensions to the modern Stripe Apps platform.
    *   **Migrate a Plugin:** Guides for migrating plugins to OAuth 2.0 apps or RAK apps.
*   **Legacy Extensions:** Information about the deprecated extensions integration pattern.

### Developer Tools and Resources

*   **Stripe Apps CLI:** Install and use the command-line interface to manage your app's lifecycle.
*   **Extension SDK API Reference:** Documentation for the Extension SDK API.
*   **Permissions Reference:** Understand available events and their required permissions.
*   **Sample Apps:** Explore working examples to guide your app development.

### Design and User Experience Patterns

*   **Onboarding:** Guide users through a secure and intuitive sign-in and initial setup process.
*   **Design Patterns:** Follow recommended patterns for common app functionalities:
    *   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