## Stripe Apps: Building and Managing Integrations

This documentation set provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem using Stripe Apps. It covers the entire lifecycle of app development, from initial setup and authentication to UI design, distribution, and ongoing maintenance.

### Core Concepts and Getting Started

*   **Overview of Stripe Apps:** Understand the fundamental capabilities of Stripe Apps, including embedding custom UIs into the Stripe Dashboard and orchestrating the Stripe API. Learn about the different app types (backend, frontend, full-stack) and how to get started with app development.
*   **Creating Your First App:** This guide walks you through the basics of app development, including building, previewing, and updating a sample "Hello, world!" app with a UI extension. It covers essential steps like installing 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 platform.
*   **App Manifest Reference:** Learn about the `stripe-app.json` file, which acts as an index for all fields, types, and descriptions related to your app's integration with Stripe.

### Development and Integration

*   **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:** Understand how to use the industry-standard OAuth 2.0 protocol for secure authentication and authorization within your Stripe Apps.
*   **Restricted API Key Authentication:** Learn how to leverage Restricted API Keys (RAKs) to grant your app specific, limited permissions, enhancing security.
*   **Authorization Flows:** Implement secure authorization flows, including PKCE OAuth workflows, to allow users to grant your app access to their Stripe data.
*   **Server-Side Logic:** Add backend code to your app to validate and process user actions, integrate with third-party systems, and handle webhook events.
*   **Building a UI:** Utilize Stripe's UI Extensions SDK and UI toolkit to create custom user interfaces within the Stripe Dashboard, using TypeScript and React.
*   **UI Components:** Discover and implement a wide range of pre-built UI components for building your app's interface, including elements for layout, input, data display, and navigation.
*   **Next Generation UI Components:** Get early access to updated UI components that offer enhanced functionality and improved API design.
*   **Component Hierarchy Constraints:** Understand the rules governing how UI components can be composed to ensure a predictable and functional user interface.
*   **Design Patterns:** Follow recommended design patterns for common app scenarios, such as onboarding, sign-in, filter controls, and lists, to create a consistent and intuitive user experience.
*   **Styling Your App:** Learn how to style your app using Stripe's provided design tokens to match the Dashboard's visual style and maintain consistency.
*   **Storing Secrets:** Securely store sensitive data like authentication credentials and tokens using the Secret Store API.
*   **App Settings Page:** Create a dedicated page within the Stripe Dashboard for users to configure their app settings.
*   **Handling Different Modes:** Adapt your app to function correctly in both live mode and Stripe's sandbox testing environments.
*   **Enabling Sandbox Support:** Configure your public app to allow installation in sandboxes for user evaluation.
*   **Enabling Local Network Access:** Learn how to grant permission for your app to access local network resources, crucial for local development and previewing.

### Distribution and Management

*   **Distribution Options:** Understand the different ways to share your Stripe Apps with users, including public distribution via the Stripe App Marketplace and private sharing with team members.
*   **Uploading and Installing Your App:** Follow a two-step process to upload your app to the test mode sandbox and then install it in live mode for your team.
*   **Publishing to the Stripe App Marketplace:** Learn the process of getting your app approved for the Stripe App Marketplace, including review requirements and best practices.
*   **App Review Requirements:** Familiarize yourself with the quality requirements for apps to be listed on the App Marketplace.
*   **Testing Your App Externally:** Set up and distribute test versions of your app to a limited group of testers before public release.
*   **Managing App Versions and Releases:** Understand how to manage changes to your app over time through versioning and releases.
*   **Using Install Links:** Allow users to install public apps directly from your own website or application.
*   **Deep Links:** Create deep links to navigate users directly to specific pages within your Stripe app in the Dashboard.
*   **Post-Install Actions:** Configure additional steps users might need to take after installing your app.

### Migration and Legacy

*   **Migrating Extensions to Stripe Apps:** Understand why and how to migrate legacy extensions to the modern Stripe Apps platform for better discoverability and functionality.
*   **Migrating Plugins:** Learn about your options for migrating third-party integrations that previously relied on secret API keys to Stripe Apps or Stripe Connect, ensuring secure authentication.

### Developer Tools and Resources

*   **Stripe Apps CLI Reference:** Install and utilize the Stripe Apps command-line interface to manage your app's lifecycle, from creation to uploading.
*   **Permissions Reference:** Understand the available events and their required permissions for your app to access user data.
*   **Extension SDK API Reference:** Explore the context props and utility functions available to your UI extensions for interacting with users and the Stripe Dashboard.
*   **Viewports Reference:** Learn about the different viewports available in the Stripe Dashboard where your app's UI extensions can be rendered.
*   **UI Testing:** Utilize the provided utilities and helpers to write unit tests for your app's user interface.
*   **UI Extension Developer Tools:** Leverage bundled developer tools for type checking, linting, and testing your UI extension code.
*   **Sample Apps:** Browse working examples of Stripe Apps on GitHub to use as a starting point for your own development.

This documentation suite aims to empower developers to build powerful and seamless integrations with Stripe, enhancing the capabilities of both Stripe users and third-party services.