## Stripe Apps: Building and Managing Integrations

This documentation suite provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem. It covers the entire lifecycle of building a Stripe App, from initial setup and authentication to UI development, distribution, and ongoing maintenance.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental concepts of Stripe Apps, their capabilities, and how they extend Stripe's functionality.
*   **Getting Started with Stripe Apps**: Learn the basics of app development, including building, previewing, and updating your first Stripe App.
*   **How Stripe Apps Work**: Delve into the architecture and components of Stripe Apps, including frontend and backend considerations.
*   **Common Use Cases**: Explore various scenarios and examples of what can be built with Stripe Apps, categorized by app type (backend, frontend, full-stack).

### Building Your Stripe App

*   **Build an App**: A central hub for app development resources.
*   **App Manifest Reference**: Understand the `stripe-app.json` file and its role in configuring your app.
*   **API Authentication Methods**: Choose and implement the appropriate authentication strategy for your app (Platform key, OAuth 2.0, Restricted API Key).
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for authentication.
    *   **Restricted API Key Authentication**: Learn how to use Restricted API Keys for secure access.
*   **Server-Side Logic**: Integrate backend code to validate and process user actions and data.
*   **Build a UI**: Develop custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work**: Understand the system for rendering custom UIs within Stripe.
    *   **Next Generation UI Components**: Access and utilize the latest UI components for enhanced user experiences.
    *   **Component Hierarchy Constraints**: Learn about rules governing component composition.
    *   **UI Testing**: Implement testing strategies for your app's user interface.
*   **UI Components**: A comprehensive reference for all available UI components for building your app's interface. This includes detailed documentation for individual components such as:
    *   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

### Extending Functionality and User Experience

*   **App Settings Page**: Create a dedicated page for users to configure their app settings.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data using the Secret Store API.
*   **Add Authorization Flows**: Implement authorization workflows, including PKCE OAuth.
*   **Enable Post-Install Actions**: Support additional configurations required after app installation.
*   **Add Deep Links**: Create deep links to navigate users directly to specific sections within your Stripe App.
*   **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**: Understand and configure local network access for app previewing.
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.

### Distribution and Management

*   **Distribution Options**: Learn about the different ways to share your Stripe Apps with users.
*   **Upload and Install Your Stripe App**: Make your app available to team members or for wider distribution.
*   **Test Your App Externally**: Set up and distribute test versions of your app before public release.
*   **Manage Your App's Versions and Releases**: Understand app versioning and the release process.
*   **How to Publish an App to the Stripe App Marketplace**: Guide your app through the review process for public listing.
*   **Stripe Apps Quality Requirements**: Familiarize yourself with the standards for apps on the App Marketplace.
*   **Promote Your App**: Discover opportunities to partner with Stripe and grow your app's reach.

### Migration and Legacy Information

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Explore your options for migrating third-party integrations.
    *   **Migrate a Plugin to an OAuth 2.0 App**: Specific guidance for OAuth migration.
    *   **Migrate a Plugin to a RAK App**: Specific guidance for Restricted API Key migration.
*   **Legacy Extensions**: Information regarding the deprecated extensions integration pattern.

### Design and Development Tools

*   **Design Your App**: Get started with design tools, guidelines, and philosophy for building Stripe Apps.
*   **Style Your App**: Learn how to apply styling to match the Stripe Dashboard and maintain consistency.
*   **Design Patterns for Stripe Apps**: Follow recommended patterns for a consistent, clear, and scalable app experience. This includes patterns for:
    *   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
*   **App Manifest Reference**: Detailed documentation for all fields within the app manifest file.
*   **Stripe Apps CLI Reference**: Learn to use the command-line interface for managing your app.
*   **Permissions Reference**: Understand available events and their required permissions.
*   **Extension SDK API Reference**: Documentation for the Extension SDK API.
*   **Viewports Reference**: A list of available viewports for Stripe Apps.
*   **Route Descriptors**: Navigate within the Dashboard using route descriptors for soft, context-preserving navigation.
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing your code.
*   **Upgrade Stripe's UI Extension SDK**: Guidance on upgrading to the latest SDK versions.
*   **Sample Apps**: Explore working examples of Stripe Apps from design to code.