## Stripe Apps Documentation

This documentation section covers the development of Stripe Apps, a platform that allows developers to extend Stripe's functionality by embedding custom user interfaces within the Stripe Dashboard and orchestrating the Stripe API.

---

### Core Concepts & Getting Started

*   **Stripe Apps Overview**: An introduction to Stripe Apps, their capabilities, and how they can be used to authenticate users for third-party services, listen for events, or automate workflows. (Page 30)
*   **Getting Started with Stripe Apps**: A guide to building your first Stripe App, including creating, previewing, and updating it. (Page 18)
*   **How Stripe Apps Work**: Explains the fundamental architecture of Stripe Apps, including frontend (UI extensions) and backend components. (Page 21)
*   **Common Use Cases**: Demonstrates how to build Stripe Apps for various business needs, categorized into backend, frontend, and full-stack applications. (Page 14)

### Building Your App

*   **Build an App**: General guidance on app development within Stripe Apps. (Page 18)
*   **Build a UI**: Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK. (Page 17)
*   **Add Server-Side Logic**: Implement backend code to validate user actions, process data, integrate with third-party systems, and handle webhooks. (Page 6)
*   **App Settings Page**: Create a dedicated page for users to configure their app settings within the Stripe Dashboard. (Page 45)
*   **API Authentication Methods**: Understand and select the appropriate method for your app to authenticate requests to the Stripe API, including Platform key, OAuth 2.0, and Restricted API Keys. (Page 2)
    *   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for authentication. (Page 3)
    *   **Restricted API Key Authentication**: Information on using Restricted API Keys (RAKs) for secure authentication. (Page 4)
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like authentication credentials using the Secret Store API. (Page 46)
*   **Handle Different Modes**: Adapt your app to function correctly in both live mode and Stripe's sandbox testing environments. (Page 19)
*   **Enable Sandbox Support**: Configure your public app to allow installation in Stripe's sandbox environments for testing. (Page 12)
*   **Enable Local Network Access**: Understand and configure local network access for app previewing during development. (Page 11)

### UI Components and Design

*   **UI Components**: A comprehensive reference to the available UI components for building your app's interface. (Page 49)
    *   **Accordion**: For collapsible content sections. (Page 50)
    *   **Badge**: To indicate the state of an item or object. (Page 51)
    *   **Banner**: For displaying alerts or important messages. (Page 52)
    *   **BarChart**: To visualize data using bars. (Page 53)
    *   **Box**: A versatile container for styling and layout. (Page 54)
    *   **Button**: For user actions and directing attention. (Page 55)
    *   **ButtonGroup**: To manage the layout of multiple buttons. (Page 56)
    *   **Checkbox**: For indicating or controlling boolean values. (Page 57)
    *   **Chip**: To display and manipulate values. (Page 58)
    *   **ContextView**: The root view for apps, allowing side-by-side context with Stripe content. (Page 59)
    *   **DateField**: To collect date information. (Page 61)
    *   **Divider**: To render a simple horizontal rule. (Page 65)
    *   **FocusView**: For opening a dedicated space to complete a specific task. (Page 66)
    *   **FormFieldGroup**: To group form fields. (Page 67)
    *   **Icon**: To display icon graphics. (Page 70)
    *   **Img**: To display images. (Page 71)
    *   **Inline**: For styling inline content like text. (Page 72)
    *   **LineChart**: To visualize data as a connected line. (Page 73)
    *   **Link**: For navigation and subtle actions. (Page 74)
    *   **List**: To display collections of information. (Page 75)
    *   **Menu**: To present a group of actions. (Page 76)
    *   **OnboardingView**: To implement an onboarding flow. (Page 77)
    *   **PropertyList**: To display data as key-value pairs. (Page 79)
    *   **Radio**: For making selections from mutually exclusive options. (Page 80)
    *   **Select**: To pick options from a dropdown. (Page 82)
    *   **SettingsView**: To allow users to change app settings. (Page 83)
    *   **SignInView**: To render a sign-in screen. (Page 84)
    *   **Sparkline**: A concise line chart for succinct data display. (Page 85)
    *   **Spinner**: To indicate loading states. (Page 86)
    *   **Switch**: For indicating or controlling boolean values. (Page 87)
    *   **Table**: To display tabular data. (Page 88)
    *   **Tabs**: To display sections of content. (Page 89)
    *   **TextArea**: For multi-line text input. (Page 91)
    *   **TextField**: For single-line text input. (Page 92)
    *   **Toast**: To inform users of temporary status. (Page 93)
    *   **Tooltip**: To provide additional contextual information. (Page 94)
*   **Design Your App**: Guidelines and philosophy for designing your Stripe App. (Page 114)
*   **Style Your App**: Learn how to style UI components using provided design tokens for visual consistency. (Page 113)
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing your app's UI. (Page 47)
*   **UI Testing**: Learn how to test your app's UI with provided utilities and helpers. (Page 41)
*   **Component Hierarchy Constraints**: Understand rules governing component composition for predictable UI rendering. (Page 7)
*   **Next Generation UI Components**: Access early previews of upcoming UI component updates. (Page 28)
*   **Viewports Reference**: Understand where your app's views can appear within the Stripe Dashboard. (Page 42)
*   **Route Descriptors**: Implement soft, context-preserving navigation between Dashboard pages. (Page 43)

### App Distribution & Management

*   **Distribution Options**: Learn how to share your Stripe Apps with users, either privately or publicly on the App Marketplace. (Page 20)
*   **Upload and Install Your App**: Make your app available to team members on your Stripe account. (Page 115)
*   **Publish Your App to the Stripe App Marketplace**: Guide on getting your app approved for public listing. (Page 24)
*   **Stripe Apps Quality Requirements**: Understand the qualitative requirements for apps listed on the App Marketplace. (Page 25)
*   **Test Your App Externally**: Set up and distribute test versions of your app before publication. (Page 26)
*   **Manage Your App's Versions and Releases**: Learn about app versioning and releases to manage changes over time. (Page 117)
*   **App Analytics**: Access data to understand how your apps are used and their performance. (Page 5)
*   **Install Links**: Allow users to install public apps outside of the Stripe App Marketplace. (Page 23)

### Migration & Legacy

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate legacy extensions to the new Stripe Apps platform. (Page 27)
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Explore migration options for third-party integrations. (Page 32)
    *   **Migrate a Plugin to an OAuth 2.0 App**: Guide for migrating to OAuth 2.0 authentication. (Page 31)
    *   **Migrate a Plugin to a RAK App**: Guide for migrating to Restricted API Key authentication. (Page 33)
*   **Legacy Extensions**: Information about the deprecated extensions integration pattern. (Page 1)

### Reference & Tools

*   **App Manifest Reference**: Details on the app manifest file, which describes how your app integrates with Stripe. (Page 35)
*   **Stripe Apps CLI Reference**: Information on using the command-line interface to manage your Stripe app. (Page 36)
*   **Permissions Reference**: A list of available events and their required permissions for your app. (Page 37)
*   **Extension SDK API Reference**: Documentation for the Extension SDK API, providing context props and utility functions. (Page 38)
*   **Sample Apps**: Browse working examples of Stripe Apps from design to code. (Page 44)

### Design Patterns

*   **Design Patterns for Stripe Apps**: Follow recommended patterns for consistent, clear, and scalable app design. (Page 95)
    *   **Action Buttons**: Where to place action buttons for optimal user experience. (Page 111)
    *   **Additional Context**: Providing extra information during onboarding. (Page 99)
    *   **Back Link**: Helping users navigate back to previous pages. (Page 112)
    *   **Communicating State**: Guiding users on necessary actions and providing feedback. (Page 106)
    *   **Demo Content**: Tips for displaying a brief and functional app demonstration. (Page 100)
    *   **Empty State**: Informing users when no data is available. (Page 107)
    *   **Filter Controls**: Using chips to filter table rows. (Page 96)
    *   **Full Page Apps**: Building custom, multi-view pages within the Stripe Dashboard. (Page 97)
    *   **Lists**: Displaying collections of information effectively. (Page 98)
    *   **Loading**: Using the spinner component to indicate data loading. (Page 108)
    *   **Onboarding Flow**: Creating effortless, customizable, and relevant onboarding experiences. (Page 29, Page 101)
    *   **Progress Stepping**: Guiding users through multi-step tasks. (Page 109)
    *   **Redirects**: Creating clear redirects for users. (Page 102)
    *   **Settings Sign In**: Onboarding users via a settings page for backend-only apps. (Page 103)
    *   **Sign In Template**: Using the SignInView component for user authentication. (Page 104)
    *   **Sign Out**: Providing a clear way for users to sign out of your app. (Page 105)
    *   **Waiting Screens**: Informing users about wait times and next steps during processes. (Page 110)