## Stripe Apps Documentation

This documentation section provides comprehensive guidance on developing, building, and managing applications within the Stripe ecosystem through Stripe Apps. It covers everything from initial setup and API authentication to UI development, distribution, and best practices.

### Getting Started and Core Concepts

*   **Stripe Apps Overview**: An introduction to Stripe Apps, explaining their purpose and capabilities for extending Stripe's functionality and embedding custom UIs.
*   **How Stripe Apps Work**: Delves into the fundamental architecture and components of Stripe Apps, including frontend and backend interactions.
*   **Getting Started with Stripe Apps**: A beginner-friendly guide to building your first Stripe App, covering the basics of development, previewing, and updating.
*   **Common Use Cases**: Explores various scenarios and business needs that can be addressed by building Stripe Apps, categorized by app type (backend, frontend, full-stack).

### Building Your Stripe App

*   **Build an App**: General guidance on the app development process.
*   **Build a UI**: Instructions on creating custom user interfaces within the Stripe Dashboard using React and the UI Extensions SDK.
    *   **How UI extensions work**: Explains the system for rendering custom UIs within Stripe.
    *   **Next generation UI components**: Introduces updated UI components for early access.
    *   **Component hierarchy constraints**: Details rules for composing UI components.
    *   **UI testing**: Guidance on testing your app's user interface.
    *   **Developer tools**: Information on bundled tools for type checking, linting, and testing.
*   **Add server-side logic**: Guides you on implementing backend code for processing user actions and data, including secure third-party integrations and webhook handling.
    *   **Back-end app example**: A practical example of building a backend-only Stripe App.
    *   **Front-end app example**: A practical example of building a frontend-only Stripe App.
    *   **Full-stack app example**: A practical example of building a Stripe App with both frontend and backend components.
*   **API Authentication Methods**: Explains the different ways your app can authenticate requests to the Stripe API.
    *   **OAuth 2.0**: Details the industry-standard OAuth 2.0 flow for authentication.
    *   **Restricted API key authentication**: Describes using RAKs for secure, permissioned access.
*   **Store secret credentials and tokens**: How to securely persist sensitive data like API keys using the Secret Store API.
*   **Handle different modes**: Adapting your app to work seamlessly in both live and sandbox environments.
*   **Enable sandbox support**: Configuring your app for installation in Stripe's testing environment.
*   **Enable local network access**: Allowing your app to access local network resources during development.

### UI Components and Design

*   **UI Components**: A reference to the library of pre-built UI components for building your app's interface.
    *   **Accordion**: For collapsible content sections.
    *   **Badge**: To indicate item state.
    *   **Banner**: For alerts and important messages.
    *   **BarChart**: For visualizing data with bars.
    *   **Box**: A versatile container for styling and layout.
    *   **Button**: For user actions.
    *   **ButtonGroup**: For managing multiple buttons.
    *   **Checkbox**: For indicating or controlling boolean values.
    *   **Chip**: For displaying and manipulating values.
    *   **ContextView**: To render apps alongside Stripe content in a drawer.
    *   **DateField**: For collecting date input.
    *   **DetailPageModule**: For rendering apps in Stripe dashboard pages.
    *   **DetailPagePropertyList**: For rendering apps in Stripe dashboard pages.
    *   **DetailPageTable**: For rendering apps in Stripe dashboard pages.
    *   **Divider**: For rendering a horizontal rule.
    *   **FocusView**: For dedicated task completion spaces.
    *   **FormFieldGroup**: For grouping form fields.
    *   **Icon**: For displaying icon graphics.
    *   **Img**: For displaying images.
    *   **Inline**: For styling inline content.
    *   **LineChart**: For visualizing data as a line.
    *   **Link**: For navigation and subtle actions.
    *   **List**: For displaying collections of information.
    *   **Menu**: For presenting a group of actions.
    *   **OnboardingView**: For implementing onboarding flows.
    *   **OverviewPage**: For implementing overview-style layouts.
    *   **PropertyList**: For displaying data as key-value pairs.
    *   **Radio**: For selecting from mutually exclusive options.
    *   **SearchField**: For searching and filtering content.
    *   **Select**: For picking from dropdown options.
    *   **SettingsView**: For allowing users to change app settings.
    *   **SignInView**: For rendering a sign-in screen.
    *   **Sparkline**: For succinct data visualization.
    *   **Spinner**: To indicate loading states.
    *   **Switch**: For indicating or controlling boolean values.
    *   **Table**: For displaying tabular data.
    *   **Tabs**: For displaying sections of content.
    *   **TaskList**: For tracking user progress through tasks.
    *   **TextArea**: For multi-line text input.
    *   **TextField**: For single-line text input.
    *   **Toast**: To inform users of temporary status.
    *   **Tooltip**: For providing additional contextual information.
*   **Design your app**: Guidelines and philosophy for designing your Stripe App.
*   **Style your app**: How to style UI components using provided design tokens for consistency.
*   **Design patterns**: Recommended patterns for building consistent, clear, and scalable Stripe Apps.
    *   **Action buttons**: Placement and usage of action buttons.
    *   **Additional context**: Providing extra information during onboarding.
    *   **Back link**: Helping users navigate to previous pages.
    *   **Communicating state**: Guiding users with feedback and status updates.
    *   **Demo content**: Tips for showcasing your app's functionality.
    *   **Empty state**: Informing users when no data is available.
    *   **Filter controls**: Using chips to filter table rows.
    *   **Full page apps**: Building custom, multi-view pages in the Dashboard.
    *   **Lists**: Displaying collections of information.
    *   **Loading**: Using spinners to indicate data loading.
    *   **Onboarding flow**: Designing effortless and intuitive onboarding experiences.
    *   **Progress stepping**: Guiding users through multi-step tasks.
    *   **Redirects**: Creating clear redirects for users.
    *   **Settings sign in**: Onboarding users on a settings page.
    *   **Sign in template**: Using the SignInView component for authentication.
    *   **Sign out**: Implementing user sign-out functionality.
    *   **Waiting screens**: Informing users about wait times and next steps.

### Distribution and Management

*   **Distribution options**: How to share your Stripe Apps with users, either privately or publicly.
*   **Upload and install your Stripe App**: Steps for making your app available to team members.
*   **Publish your app to the Stripe App Marketplace**: Guide to getting your app reviewed and listed on the marketplace.
*   **Stripe Apps quality requirements**: Essential criteria for app review.
*   **Test your app externally**: Setting up and distributing test versions of your app.
*   **Manage your app's versions and releases**: Strategies for handling app updates and changes.
*   **App analytics**: Accessing data to understand app performance.
*   **Add deep links**: Creating URLs that navigate users directly to your app within the Dashboard.
*   **Using install links**: Allowing users to install your app outside the Stripe App Marketplace.
*   **Assign roles in UI extensions**: Tailoring app functionality based on user roles.
*   **Enable post-install actions and configurations**: Supporting additional setup steps after app installation.

### Migration and Legacy Information

*   **Migrate an extension to Stripe Apps**: Reasons and steps for migrating from legacy extensions.
*   **Migrate a plugin to Stripe Apps or Stripe Connect**: 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 about the deprecated extensions integration pattern.

### Reference and Tools

*   **App manifest reference**: Details on the fields, types, and descriptions for your app manifest file.
*   **Stripe Apps CLI reference**: How to use the command-line interface to manage your app.
*   **Permissions reference**: Available events and their required permissions.
*   **Extension SDK API reference**: Documentation for the Extension SDK's context props and utility functions.
*   **Viewports reference**: Available viewports for displaying your UI extensions.
*   **Route descriptors**: Navigating within the Dashboard using soft, context-preserving navigation.
*   **Sample apps**: Working examples to help you get started with your own app development.