## Stripe Apps Development

This documentation group provides comprehensive resources for developers looking to build and integrate applications with Stripe. It covers the entire lifecycle of Stripe App development, from initial setup and core concepts to advanced features, UI components, and best practices.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Introduces the Stripe Apps platform, its capabilities, and how it allows for extending Stripe's functionality and embedding custom UIs within the Stripe Dashboard.
*   **Getting Started with Stripe Apps**: Guides developers through the initial steps of building a basic Stripe App, including setting up the development environment with the Stripe CLI.
*   **How Stripe Apps Work**: Explains the fundamental architecture and components of Stripe Apps, including frontend (UI extensions) and backend components, and how they interact with Stripe.
*   **Common Use Cases**: Outlines various scenarios and business needs that can be addressed by building Stripe Apps, categorizing them into backend, frontend, and full-stack app types.

### Building Your App

*   **Build an App**: General guidance on the app creation process.
*   **App Manifest Reference**: Details the `stripe-app.json` file, which defines your app's configuration, permissions, and integration points.
*   **API Authentication Methods**: Explains how to authenticate requests to the Stripe API on behalf of users, covering Platform keys, OAuth 2.0, and Restricted API Keys (RAKs).
    *   **OAuth 2.0**: Specifics on implementing OAuth 2.0 for authentication.
    *   **Restricted API Key Authentication**: Details on using RAKs for secure, permissioned API access.
*   **Store Secret Credentials and Tokens**: Guides on securely storing sensitive information like API keys and tokens using the Secret Store API.
*   **Server-Side Logic**: Instructions on adding backend code to your app for processing user actions, handling webhooks, and executing long-running tasks.
*   **Build a UI**: Covers the process of creating custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work**: Explains the architecture and constraints of UI extensions.
    *   **Next Generation UI Components**: Introduces upcoming UI component updates.
    *   **UI Component Reference**: A comprehensive list of available UI components for building interfaces.
        *   Accordion
        *   Badge
        *   Banner
        *   BarChart
        *   Box
        *   Button
        *   ButtonGroup
        *   Checkbox
        *   Chip
        *   ContextView
        *   DataTable
        *   DateField
        *   DetailPageModule
        *   DetailPagePropertyList
        *   DetailPageTable
        *   Divider
        *   FocusView
        *   FormFieldGroup
        *   FullPageTabs
        *   FullPageView
        *   Icon
        *   Img
        *   Inline
        *   LineChart
        *   Link
        *   List
        *   Menu
        *   OnboardingView
        *   OverviewPage
        *   PropertyList
        *   Radio
        *   SearchField
        *   Select
        *   SettingsView
        *   SignInView
        *   Sparkline
        *   Spinner
        *   Switch
        *   Table
        *   Tabs
        *   TaskList
        *   TextArea
        *   TextField
        *   Toast
        *   Tooltip
*   **App Settings Page**: How to create a dedicated page for users to configure their app settings.
*   **Permissions Reference**: Details the available events and their required permissions for your app.
*   **Extension SDK API Reference**: Documentation for the Extension SDK, providing context props and utility functions for UI extensions.
*   **Viewports Reference**: Lists available viewports within the Stripe Dashboard where your app's UI extensions can be displayed.
*   **Route Descriptors**: How to implement soft, context-preserving navigation within the Stripe Dashboard.
*   **Deep Links**: Guidance on creating deep links to navigate users directly to specific parts of your app within the Dashboard.
*   **Install Links**: How to allow users to install your app outside of the Stripe App Marketplace.
*   **Component Hierarchy Constraints**: Rules governing how UI components can be composed.

### Testing, Distribution, and Deployment

*   **Enable Sandbox Support**: How to enable your public app for installation in Stripe's testing environments.
*   **Handle Different Modes**: Adapt your app to function correctly in both live mode and sandbox environments.
*   **Enable Local Network Access**: Instructions for enabling local network access, crucial for previewing apps during development.
*   **Test Your App Externally**: Set up and distribute test versions of your app to a limited group of testers before public release.
*   **Distribution Options**: Explains how to make your app available to users, either privately or publicly on the Stripe App Marketplace.
*   **Upload and Install Your Stripe App**: Steps to upload your app for internal team use or for marketplace submission.
*   **Publish Your App to the Stripe App Marketplace**: A guide on the process of getting your app approved and listed on the marketplace.
*   **Stripe Apps Quality Requirements**: Details the qualitative requirements for apps to be accepted into the App Marketplace.
*   **Manage Your App's Versions and Releases**: Strategies for versioning your app and managing updates.

### Migration and Legacy Information

*   **Legacy Extensions**: Information about the deprecated extensions integration pattern and how to migrate to Stripe Apps.
    *   **Migrate an Extension to Stripe Apps**: Why and how to migrate existing extensions.
    *   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Guidance on migrating third-party integrations.
        *   **Migrate a Plugin to an OAuth 2.0 App**: Specifics on migrating to OAuth.
        *   **Migrate a Plugin to a RAK App**: Specifics on migrating to Restricted API Keys.

### Design and Best Practices

*   **Design Your App**: Guidelines and philosophy for designing user-friendly Stripe Apps.
*   **Style Your App**: How to style UI components using Stripe's design tokens for consistency.
*   **Design Patterns**: Recommended patterns for various aspects of app development, including:
    *   Full Page Apps
    *   Action Buttons
    *   Onboarding Flow
    *   Additional Context
    *   Back Link
    *   Communicating State
    *   Demo Content
    *   Empty State
    *   Filter Controls
    *   Lists
    *   Loading
    *   Progress Stepping
    *   Redirects
    *   Settings Sign In
    *   Sign In Template
    *   Sign Out
    *   Waiting Screens
*   **UI Testing**: Utilities and helpers for testing your app's user interface.
*   **UI Extension Developer Tools**: Tools for type checking, linting, and testing your UI extension code.
*   **Onboarding**: Guidance on creating intuitive onboarding flows for your users.
*   **Embedded Stripe Apps**: How to use embedded components to integrate Stripe Apps into third-party applications.
    *   **Marketing Software Integrations**: Examples of integrating marketing tools.

### Reference and Tools

*   **Stripe Apps CLI Reference**: Commands and usage for the Stripe Apps command-line interface.
*   **Sample Apps**: Examples of working Stripe Apps to use as starting points.