## Stripe Apps: Building and Managing Integrations

This documentation section provides a comprehensive guide to developing, deploying, and managing applications that extend Stripe's functionality. It covers the entire lifecycle of a Stripe App, from initial setup and development to distribution and ongoing maintenance.

### Core Concepts and Getting Started

*   **Stripe Apps Overview** (Page 30): Introduces Stripe Apps as a way to extend Stripe with third-party services or embed custom user interfaces directly within the Stripe Dashboard. It outlines the benefits and provides a starting point for app development.
*   **Getting Started with Stripe Apps** (Page 18): Guides users through building a basic "Hello, world!" app, covering essential steps like setting up the Stripe CLI and creating a UI extension.
*   **How Stripe Apps Work** (Page 21): Explains the fundamental architecture of Stripe Apps, including their frontend and backend components and how they interact with the Stripe API.
*   **Common Use Cases** (Page 14): Illustrates various scenarios for building Stripe Apps, categorized into backend, frontend, and full-stack applications.

### Development and Customization

*   **Build a UI** (Page 17): Details how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
*   **UI Extensions: How They Work** (Page 22): Provides an in-depth explanation of the UI extensions system, including their sandboxed environment and reliance on Stripe's UI components.
*   **UI Components** (Page 49): Serves as a reference for all available UI components in the Stripe Apps SDK, enabling developers to build rich and interactive interfaces. This includes specific component documentation such as:
    *   **Accordion** (Page 50)
    *   **Badge** (Page 51)
    *   **Banner** (Page 52)
    *   **BarChart** (Page 53)
    *   **Box** (Page 54)
    *   **Button** (Page 55)
    *   **ButtonGroup** (Page 56)
    *   **Checkbox** (Page 57)
    *   **Chip** (Page 58)
    *   **ContextView** (Page 59)
    *   **DateField** (Page 61)
    *   **Divider** (Page 65)
    *   **FocusView** (Page 66)
    *   **FormFieldGroup** (Page 67)
    *   **Icon** (Page 70)
    *   **Img** (Page 71)
    *   **Inline** (Page 72)
    *   **LineChart** (Page 73)
    *   **Link** (Page 74)
    *   **List** (Page 75)
    *   **Menu** (Page 76)
    *   **OnboardingView** (Page 77)
    *   **PropertyList** (Page 79)
    *   **Radio** (Page 80)
    *   **Select** (Page 82)
    *   **SettingsView** (Page 83)
    *   **SignInView** (Page 84)
    *   **Sparkline** (Page 85)
    *   **Spinner** (Page 86)
    *   **Switch** (Page 87)
    *   **Table** (Page 88)
    *   **Tabs** (Page 89)
    *   **TextArea** (Page 91)
    *   **TextField** (Page 92)
    *   **Toast** (Page 93)
    *   **Tooltip** (Page 94)
*   **Add Server-Side Logic** (Page 6): Explains how to integrate a self-hosted backend for secure third-party system integration, webhook handling, and long-running processes.
*   **API Authentication Methods** (Page 2): Details the different methods for authenticating API requests, including Platform Key, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0** (Page 3): Provides a guide to implementing OAuth 2.0 for secure API access.
    *   **Restricted API Key Authentication** (Page 4): Explains how to use Restricted API Keys (RAKs) for more granular and secure API access.
*   **Store Secret Credentials and Tokens** (Page 46): Covers the use of the Secret Store API for securely persisting sensitive data like authentication credentials.
*   **App Settings Page** (Page 45): Guides users on creating a customizable settings page within the Stripe Dashboard for app configuration.
*   **Enable Local Network Access** (Page 11): Explains how to enable local network access for app previewing and development.
*   **Enable Sandbox Support** (Page 12): Details how to enable sandbox installation for public apps, allowing users to test features before going live.
*   **Handle Different Modes** (Page 19): Provides guidance on adapting apps to work seamlessly in both live mode and sandboxes.
*   **Component Hierarchy Constraints** (Page 7): Explains rules and constraints for composing UI components to ensure predictable and functional user interfaces.
*   **Next Generation UI Components** (Page 28): Introduces early access to updated UI components for enhanced functionality and API design.
*   **Route Descriptors** (Page 43): Explains how to implement soft, context-preserving navigation within the Stripe Dashboard using route descriptors.
*   **Using Roles in UI Extensions** (Page 116): Describes how to leverage user roles within UI extensions to tailor functionality based on user permissions.

### Migration and Legacy Integrations

*   **Legacy Extensions** (Page 1): Provides information about the deprecated extensions integration pattern and guidance on migrating to Stripe Apps.
*   **Migrate an Extension to Stripe Apps** (Page 27): Explains the reasons and process for migrating existing extensions to the newer Stripe Apps platform.
*   **Migrate a plugin to Stripe Apps or Stripe Connect** (Page 32): Offers guidance on migrating third-party integrations that previously relied on secret API keys.
    *   **Migrate a plugin to an OAuth 2.0 app** (Page 31)
    *   **Migrate a plugin to a RAK app** (Page 33)

### Distribution and Publishing

*   **Distribution Options** (Page 20): Outlines the different ways to share Stripe Apps, including private distribution and publishing on the Stripe App Marketplace.
*   **How to Publish an App to the Stripe App Marketplace** (Page 24): Details the process of getting an app approved for the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements** (Page 25): Lists the qualitative requirements for apps to be accepted on the App Marketplace.
*   **Test Your App Externally** (Page 26): Explains how to set up and distribute test versions of an app to gather feedback before official release.
*   **Upload and Install Your Stripe App** (Page 115): Guides users on how to upload and install their app for team members or for testing.
*   **Manage Your App's Versions and Releases** (Page 117): Provides information on app versioning and managing releases to ship updates effectively.

### Design and User Experience

*   **Design Your App** (Page 114): Offers design tools, guidelines, and philosophy for creating user-friendly Stripe Apps.
*   **Style Your App** (Page 113): Explains how to style UI components using provided design tokens to maintain visual consistency with the Stripe Dashboard.
*   **Design Patterns for Stripe Apps** (Page 95): Introduces recommended design patterns to streamline app development and ensure a consistent user experience. This includes patterns for:
    *   **Action Buttons** (Page 111)
    *   **Additional Context** (Page 99)
    *   **Back Link** (Page 112)
    *   **Communicating State** (Page 106)
    *   **Demo Content** (Page 100)
    *   **Empty State** (Page 107)
    *   **Filter Controls** (Page 96)
    *   **Full Page Apps** (Page 97)
    *   **Lists** (Page 98)
    *   **Loading** (Page 108)
    *   **Onboarding** (Page 29) and **Onboarding Flow** (Page 101)
    *   **Progress Stepping** (Page 109)
    *   **Redirects** (Page 102)
    *   **Settings Sign In** (Page 103)
    *   **Sign In Template** (Page 104)
    *   **Sign Out** (Page 105)
    *   **Waiting Screens** (Page 110)
*   **Onboarding** (Page 29): Provides guidance on designing intuitive and polished onboarding flows for users after app installation.
*   **App Analytics** (Page 5): Explains how to access and interpret app analytics to understand app performance and user engagement.
*   **Deep Links** (Page 8): Details how to create deep links to navigate users directly to specific sections within your Stripe App in the Dashboard.

### Reference and Tools

*   **Stripe Apps CLI Reference** (Page 36): A guide to using the Stripe Apps command-line interface for creating, developing, and managing Stripe Apps.
*   **App Manifest Reference** (Page 35): Documentation for the app manifest file, detailing all available fields, types, and descriptions.
*   **Permissions Reference** (Page 37): Lists available events and their required permissions for Stripe Apps.
*   **Extension SDK API Reference** (Page 38): Provides documentation for the Extension SDK API, including context props and utility functions for UI extensions.
*   **Viewports Reference** (Page 42): Lists available viewports within the Stripe Dashboard where UI extensions can be rendered.
*   **Sample Apps** (Page 44): Offers a collection of sample apps on GitHub to serve as starting points for developers.