## Stripe Apps: Building and Managing Integrations

This documentation section provides a comprehensive guide to developing, deploying, and managing applications (Stripe Apps) that extend the functionality of the Stripe Dashboard. It covers everything from initial setup and authentication to UI development, distribution, and ongoing maintenance.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental purpose and capabilities of Stripe Apps, which allow for custom user interfaces within the Stripe Dashboard and orchestration of the Stripe API.
*   **How Stripe Apps Work**: Delve into the architecture and components of Stripe Apps, including frontend (UI extensions) and backend components.
*   **Getting Started with Stripe Apps**: Follow a step-by-step guide to build your first "Hello, world!" app, covering installation of the Stripe CLI and basic app creation.
*   **Common Use Cases**: Explore various scenarios and app types (backend, frontend, full-stack) that can be built with Stripe Apps.
*   **Migrating to Stripe Apps**: Learn why and how to migrate legacy extensions to the modern Stripe Apps platform for better discoverability and permissions.

### Development and Customization

*   **Build an App**: General guidance on the app development process.
*   **Build a UI**: Learn to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work**: Understand the sandboxed iframe environment and the use of Stripe's UI components.
    *   **Next UI Components**: Access early versions of upcoming UI components.
    *   **Component Hierarchy Constraints**: Adhere to rules for composing UI components.
    *   **UI Components Reference**: A detailed catalog of available UI components (e.g., Accordion, Badge, Button, Input fields, Charts, Tables) with usage examples and props.
    *   **Design Your App**: Guidelines and philosophy for designing user-friendly and visually consistent apps.
    *   **Style Your App**: Learn to use design tokens and custom styling to match the Stripe Dashboard's look and feel.
*   **Add Server-Side Logic**: Implement backend code for validating user actions, processing data, and integrating with third-party systems.
*   **API Authentication Methods**: Choose and implement the appropriate method (Platform key, OAuth 2.0, Restricted API Key) for your app to authenticate with the Stripe API.
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for secure authentication.
    *   **Restricted API Key Authentication**: Understand how to use RAKs for granular access control.
*   **Authorization Flows**: Implement secure authorization workflows, including PKCE OAuth.
*   **Store Secret Credentials and Tokens**: Utilize the Secret Store API for securely persisting sensitive data.
*   **Handle Different Modes**: Adapt your app to function correctly in both live and sandbox environments.
*   **Enable Sandbox Support**: Configure your app for testing in Stripe's sandbox environment.
*   **Enable Local Network Access**: Configure necessary permissions for app previewing.
*   **App Settings Page**: Create a dedicated page for users to configure app settings.
*   **Deep Links**: Implement deep links to navigate users directly to specific parts of your app within the Dashboard.
*   **Route Descriptors**: Enable soft, context-preserving navigation between Dashboard pages.
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.

### Deployment and Distribution

*   **Distribution Options**: Learn about the different ways to share your Stripe Apps with users.
*   **Upload and Install Your Stripe App**: Guide users through installing your app within their Stripe account.
*   **Publish Your App to the Stripe App Marketplace**: Prepare and submit your app for public listing.
    *   **Stripe Apps Quality Requirements**: Understand the criteria for app review and approval.
*   **Test Your App Externally**: Set up and distribute test versions of your app to a limited group of testers.
*   **Manage Your App's Versions and Releases**: Understand app versioning and the process of releasing new updates.
*   **Install Links**: Allow users to install public apps outside of the Stripe App Marketplace.
*   **Post-Install Actions**: Configure additional steps users might need to complete after installation.

### Reference and Tools

*   **App Manifest Reference**: A detailed guide to the `stripe-app.json` file, which describes your app's integration with Stripe.
*   **Stripe Apps CLI Reference**: Learn to use the command-line interface for creating, developing, and managing your Stripe Apps.
*   **Permissions Reference**: Understand available events and their required permissions for your app.
*   **Extension SDK API Reference**: Documentation for the SDK used to build UI extensions.
*   **Viewports Reference**: Information on where your app's UI can be rendered within the Stripe Dashboard.
*   **Sample Apps**: Explore working examples of Stripe Apps to use as a starting point.

### Design Patterns and Best Practices

*   **Design Patterns for Stripe Apps**: Follow recommended patterns for a consistent and user-friendly experience.
    *   **Action Buttons**: Placement and usage of buttons for user actions.
    *   **Additional Context**: Providing extra information during onboarding.
    *   **Back Link**: Implementing navigation to previous pages.
    *   **Communicating State**: Informing users about temporary statuses or required actions.
    *   **Demo Content**: Displaying a concise overview of your app's functionality.
    *   **Empty State**: Guiding users when no data is available.
    *   **Filter Controls**: Using chips to filter data in tables.
    *   **Full Page Apps**: Designing apps that occupy an entire Dashboard page.
    *   **Lists**: Displaying collections of information.
    *   **Loading**: Indicating when data is being fetched.
    *   **Onboarding Flow**: Creating an effortless and intuitive user onboarding experience.
    *   **Progress Stepping**: Guiding users through multi-step tasks.
    *   **Redirects**: Clear indication of navigation to external sites.
    *   **Settings Sign In**: Onboarding users via a settings page for backend-only apps.
    *   **Sign In Template**: Implementing secure sign-in flows.
    *   **Sign Out**: Providing a clear way for users to sign out.
    *   **Waiting Screens**: Informing users about wait times and next steps.

This documentation set empowers developers to build powerful and integrated applications on the Stripe platform, enhancing the capabilities of the Stripe Dashboard for users.