## Stripe Apps Development

This documentation set provides comprehensive guidance for developers looking to build and integrate applications with Stripe. It covers the entire lifecycle of Stripe App development, from initial setup and design to deployment and ongoing management.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps**: Understand the fundamental capabilities and benefits of building on the Stripe platform, including embedding custom UIs within the Stripe Dashboard and orchestrating the Stripe API.
*   **Getting Started with Stripe Apps**: A step-by-step guide to building your first "Hello, world!" Stripe App, covering essential tools like the Stripe CLI and basic UI extensions.
*   **How Stripe Apps Work**: Delve into the architecture of Stripe Apps, including their frontend and backend components, and how they interact with the Stripe ecosystem.

### Building Your Stripe App

*   **App Manifest Reference**: Learn about the `stripe-app.json` file, which serves as the central configuration for your app, defining its ID, version, permissions, and more.
*   **API Authentication Methods**: Explore the different ways your app can authenticate requests to the Stripe API, including Platform keys, OAuth 2.0, and Restricted API Keys (RAKs).
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for secure user authentication and authorization.
    *   **Restricted API Key Authentication**: Understand how to use RAKs for more granular and secure API access.
*   **Authorization Flows**: Implement secure authorization workflows, including the PKCE OAuth flow.
*   **Server-Side Logic**: Add backend code to your app for validating user actions, processing data, and integrating with third-party systems.
*   **Build a UI**: Learn to create custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work**: Understand the sandboxed environment and component model for UI extensions.
    *   **Next Generation UI Components**: Get early access to updated UI components for enhanced functionality.
    *   **UI Components Reference**: A comprehensive catalog of available UI components, from basic elements like `Box` and `Button` to more complex ones like `BarChart` and `DataTable`.
    *   **Component Hierarchy Constraints**: Understand the rules governing how UI components can be composed.
    *   **UI Testing**: Learn how to test your app's user interface effectively.
*   **App Settings Page**: Create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like API keys and tokens using the Secret Store API.
*   **Enable Local Network Access**: Configure your app for local development preview by enabling local network access.
*   **Enable Sandbox Support**: Ensure your public app can be installed and tested in Stripe's sandbox environments.
*   **Handle Different Modes**: Adapt your app to function correctly in both live and sandbox environments.

### Common Use Cases and Examples

*   **Common Use Cases**: Explore pre-defined scenarios for building Stripe Apps, including backend, frontend, and full-stack applications.
*   **App Examples**:
    *   **Back-end App Example**: Build an app that performs background processing without a user interface.
    *   **Front-end App Example**: Create an app with a user interface that runs within the Stripe Dashboard.
    *   **Full-stack App Example**: Develop an app that combines both a UI and backend functionality.
*   **Sample Apps**: Browse a collection of working examples on GitHub to jumpstart your development.

### Migration and Integration

*   **Migrating to Stripe Apps**: Understand the transition from legacy extensions to the modern Stripe Apps platform.
    *   **Migrate an Extension to Stripe Apps**: Guidance on migrating existing integrations.
    *   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Decide on the best migration path for your plugin.
    *   **Migrate a Plugin to an OAuth 2.0 App**: Specific steps for migrating to OAuth 2.0.
    *   **Migrate a Plugin to a RAK App**: Specific steps for migrating to Restricted API Keys.
*   **Embedded Stripe Apps Integration Guide**: Learn how to embed third-party Stripe Apps into your own platform.
    *   **Marketing Software Integrations**: Examples of integrating marketing tools like Mailchimp.

### Distribution, Testing, and Publishing

*   **Distribution Options**: Understand how to make your Stripe App available to users, either privately or publicly.
*   **Upload and Install Your Stripe App**: Learn how to upload your app for team members and test it in sandbox environments.
*   **Test Your App Externally**: Set up and distribute test versions of your app to a limited group of testers before public release.
*   **Manage Your App's Versions and Releases**: Understand app versioning and the release process for shipping updates.
*   **How to Publish an App to the Stripe App Marketplace**: A detailed guide on getting your app approved and listed in the marketplace.
*   **Stripe Apps Quality Requirements**: Familiarize yourself with the criteria for app review to ensure a smooth publishing process.
*   **Promote Your App**: Discover ways to partner with Stripe to accelerate your app's growth.

### Design and User Experience

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for creating user-friendly Stripe Apps.
*   **Style Your App**: Learn how to style UI components to match the Stripe Dashboard's visual language.
*   **Design Patterns**: Follow recommended patterns for common app functionalities to ensure consistency and clarity.
    *   **Action Buttons**: Best practices for placing and using action buttons.
    *   **Additional Context**: Strategies for providing extra information to users.
    *   **Back Link**: Implementing navigation to previous pages.
    *   **Communicating State**: Guiding users through actions and providing feedback.
    *   **Demo Content**: Tips for showcasing your app's core functionality.
    *   **Empty State**: Informing users when no data is available.
    *   **Filter Controls**: Using components to filter data.
    *   **Full Page Apps**: Building comprehensive, multi-view interfaces within the Dashboard.
    *   **Lists**: Displaying collections of information effectively.
    *   **Loading**: Using spinners to indicate data loading.
    *   **Onboarding**: Designing effortless and intuitive user onboarding flows.
    *   **Progress Stepping**: Guiding users through multi-step tasks.
    *   **Redirects**: Creating clear and user-friendly redirects.
    *   **Settings Sign In**: Onboarding users through a settings page.
    *   **Sign In Template**: Implementing secure sign-in experiences.
    *   **Sign Out**: Providing a clear sign-out process.
    *   **Waiting Screens**: Informing users about wait times and next steps.

### Reference and Tools

*   **Stripe Apps CLI Reference**: Learn to use the command-line interface for managing your Stripe Apps.
*   **Permissions Reference**: Understand available events and their required permissions for your app.
*   **Viewports Reference**: Discover the different locations within the Stripe Dashboard where your app's UI can be rendered.
*   **Extension SDK API Reference**: Documentation for the Extension SDK, providing context props and utility functions for UI extensions.
*   **Developer Tools**: Utilize bundled tools for type checking, linting, and testing your app's code.
*   **Upgrade Stripe's UI Extension SDK**: Guidance on upgrading to the latest versions of the UI extension SDK.