## Stripe Apps Development Documentation

This documentation suite provides comprehensive guidance for developers looking to build, integrate, and manage applications within the Stripe ecosystem. It covers the entire lifecycle of Stripe Apps, from initial setup and core development concepts to distribution, testing, and advanced features.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental capabilities of Stripe Apps, including embedding custom user experiences into the Stripe Dashboard and orchestrating the Stripe API. Learn how to create apps for personal use or publish them on the Stripe App Marketplace.
*   **Getting Started with Stripe Apps**: A beginner-friendly guide to building your first Stripe App, covering the basics of development, previewing, and updating.
*   **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.
*   **Common Use Cases**: Explore practical examples of how Stripe Apps can be leveraged for various business needs, categorized into backend, frontend, and full-stack applications.

### Building Your Stripe App

*   **Build an App**: General guidance on the app development process.
*   **App Settings Page**: Learn how to create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **API Authentication Methods**: Choose and implement the most suitable method for your app to authenticate requests to the Stripe API, including Platform Key, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for secure authentication.
    *   **Restricted API Key Authentication**: Understand how to use Restricted API Keys (RAKs) for more granular access control.
*   **Authorization Flows**: Implement secure authorization workflows, including PKCE OAuth flows.
*   **Server-Side Logic**: Integrate backend code to validate and process user actions and data, enabling secure third-party system integrations and webhook event handling.
*   **Build a UI**: Develop custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK and UI toolkit.
    *   **How UI Extensions Work**: Understand the system for rendering custom UIs within Stripe.
    *   **Next Generation UI Components**: Get early access to updated UI components.
    *   **Component Hierarchy Constraints**: Learn the rules for composing UI components.
    *   **UI Testing**: Implement testing strategies for your app's user interface.
    *   **UI Components**: A comprehensive reference of available UI components for building your app's interface.
        *   *Specific Component Documentation*: Detailed guides for each UI component, including Accordion, Badge, Banner, BarChart, Box, Button, ButtonGroup, Checkbox, Chip, ContextView, DateField, DetailPageModule, DetailPagePropertyList, DetailPageTable, Divider, FocusView, FormFieldGroup, 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.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like authentication credentials using the Secret Store API.
*   **Enable Local Network Access**: Configure settings for app previewing that require 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.

### Migrating and Extending

*   **Migrate an Extension to Stripe Apps**: Understand the reasons and process for migrating legacy extensions to the modern Stripe Apps platform.
*   **Migrate a plugin to Stripe Apps or Stripe Connect**: Guidance on migrating third-party integrations that previously relied on secret API keys.
    *   **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.
*   **Legacy Extensions**: Information and historical reference for the deprecated extensions integration pattern.

### Distributing and Managing Your App

*   **Distribution Options**: Learn about the different ways to share your Stripe Apps with users, including public and private distribution.
*   **Upload and Install Your Stripe App**: Step-by-step instructions for uploading and installing your app for team members.
*   **Publish Your App to the Stripe App Marketplace**: A guide to getting your app approved and listed on the Stripe App Marketplace.
    *   **Stripe Apps Quality Requirements**: Understand the criteria for app review and marketplace listing.
*   **Test Your App Externally**: Set up and distribute test versions of your app before public release.
*   **Manage Your App's Versions and Releases**: Learn about app versioning and release management to ship updates effectively.
*   **Promote Your App**: Discover how to partner with Stripe to accelerate your app's growth and gain visibility.

### Design and User Experience

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for building user-friendly Stripe Apps.
*   **Style Your App**: Learn how to style UI components to match the Stripe Dashboard's visual language.
*   **Design Patterns for Stripe Apps**: Follow recommended patterns to ensure consistency, clarity, and scalability in your app's design.
    *   *Specific Design Patterns*: 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.
*   **Onboarding**: Guide your users through your app's sign-in and initial setup flows.
*   **Deep Links**: Create deep links to navigate users directly to specific sections of your Stripe App within the Dashboard.
*   **Install Links**: Allow users to install public apps outside of the Stripe App Marketplace.
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.

### Reference and Tools

*   **App Manifest Reference**: Understand the structure and fields of your app's manifest file (`stripe-app.json`).
*   **Stripe Apps CLI Reference**: Learn how to use the command-line interface to manage your Stripe App.
*   **Permissions Reference**: A guide to 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**: Information on available viewports within the Stripe Dashboard where your app's views can be rendered.
*   **Route Descriptors**: Navigate within the Dashboard using route descriptors for soft, context-preserving navigation.
*   **Sample Apps**: Explore working examples of Stripe Apps to use as a starting point for your own development.
*   **Developer Tools**: Utilize bundled developer tools for type checking, linting, and testing your app's code.
*   **Upgrade Stripe's UI Extension SDK**: Guidance on upgrading your app to the latest version of the UI extension SDK.