## Stripe Apps Documentation

This section of the documentation provides comprehensive guidance on developing, deploying, and managing Stripe Apps. Stripe Apps allow you to extend Stripe's functionality by embedding custom user interfaces directly into the Stripe Dashboard or by orchestrating the Stripe API for third-party services.

### Getting Started with Stripe Apps

*   **Overview**: Understand the fundamental concepts and capabilities of Stripe Apps.
*   **Create an App**: Learn the basics of app development by building a simple "Hello, world!" app.
*   **How Stripe Apps Work**: Gain insight into the different app patterns and how they interact with Stripe.
*   **Sample Apps**: Explore a collection of working examples to jumpstart your development.

### Building Your Stripe App

#### Core Concepts

*   **App Manifest Reference**: Understand the `stripe-app.json` file and its role in defining your app's integration with Stripe.
*   **API Authentication Methods**: Choose the appropriate method for your app to authenticate requests to the Stripe API (Platform key, OAuth 2.0, Restricted API Key).
*   **Authorization Flows**: Implement secure authorization mechanisms, including PKCE OAuth flows.
*   **Server-Side Logic**: Add backend code to validate and process user actions and data.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like authentication credentials using the Secret Store API.
*   **Handle Different Modes**: Adapt your app to function correctly in both live and sandbox environments.

#### User Interface (UI) Development

*   **Build a UI**: Learn how to create custom UIs that extend the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
*   **How UI Extensions Work**: Understand the architecture and constraints of UI extensions.
*   **Next Generation UI Components**: Get early access to updated UI components.
*   **UI Components**: Explore the library of pre-built 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
    *   DateField
    *   DetailPageModule
    *   DetailPagePropertyList
    *   DetailPageTable
    *   Divider
    *   FocusView
    *   FormFieldGroup
    *   Icon
    *   Img
    *   Inline
    *   LineChart
    *   Link
    *   List
    *   Menu
    *   OnboardingView
    *   PropertyList
    *   Radio
    *   SearchField
    *   Select
    *   SettingsView
    *   SignInView
    *   Sparkline
    *   Spinner
    *   Switch
    *   Table
    *   Tabs
    *   TaskList
    *   TextArea
    *   TextField
    *   Toast
    *   Tooltip
*   **Component Hierarchy Constraints**: Understand rules governing how components can be composed.
*   **UI Testing**: Learn how to test your app's UI using provided utilities and helpers.
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing.
*   **Upgrade Stripe's UI Extension SDK**: Stay up-to-date with the latest SDK features and breaking changes.
*   **Design Your App**: Follow design guidelines and use provided tools for a streamlined design process.
*   **Style Your App**: Learn how to style UI components using Stripe's design tokens for visual consistency.

#### Navigation and Integration

*   **Add Deep Links**: Create deep links to navigate users directly to your Stripe app within the Dashboard.
*   **Navigate within the Dashboard using Route Descriptors**: Implement soft, context-preserving navigation to Dashboard pages.
*   **Viewports Reference**: Understand where your UI extensions can be displayed within the Stripe Dashboard.
*   **Embedded Stripe Apps**: Integrate third-party Stripe Apps into your own platform.
*   **Post-Install Actions**: Support additional configurations that occur after app installation.

### Common Use Cases and Examples

*   **Common Use Cases**: Explore guides for building Stripe apps for various business needs.
*   **Back-end App Example**: Build a Stripe app that performs background processing without a user interface.
*   **Front-end App Example**: Build a Stripe app that renders a user interface in the Stripe Dashboard.
*   **Full-stack App Example**: Build a Stripe app with both a user interface and backend functionality.
*   **Marketing Software Integrations**: Embed marketing software integrations, such as Mailchimp, using Connect embedded components.

### Deployment and Distribution

*   **Distribution Options**: Learn how to share your Stripe Apps with users, either privately or publicly on the Stripe App Marketplace.
*   **Upload and Install Your Stripe App**: Make your app available to team members within your Stripe account.
*   **How to Publish an App to the Stripe App Marketplace**: Guide your app through the review process for public listing.
*   **Stripe Apps Quality Requirements**: Understand the qualitative requirements for apps on the App Marketplace.
*   **Test Your App Externally**: Set up and distribute test versions of your app before publication.
*   **Manage Your App's Versions and Releases**: Ship new versions and manage changes over time.

### Migration and Legacy Extensions

*   **Migrate an Extension to Stripe Apps**: Understand why and how to migrate legacy extensions to the new Stripe Apps platform.
*   **Migrate a plugin to Stripe Apps or Stripe Connect**: Learn about your migration options for third-party integrations.
*   **Migrate a plugin to an OAuth 2.0 app**: Guide your plugin to use OAuth 2.0 authentication.
*   **Migrate a plugin to a RAK app**: Guide your plugin to use Restricted API Key authentication.
*   **Legacy Extensions**: Information about the deprecated extensions integration pattern.

### Developer Tools and Resources

*   **Stripe Apps CLI Reference**: Install and use the command-line interface to manage your app.
*   **Permissions Reference**: Understand available events and their required permissions.
*   **Extension SDK API Reference**: Documented context props and utility functions for UI extensions.
*   **Design Patterns for Stripe Apps**: Follow recommended patterns for consistent and scalable app design. 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
*   **Enable Local Network Access**: Configure local network access for app preview.
*   **Enable Sandbox Support for Your Public App**: Allow users to install apps in sandboxes for evaluation.
*   **Onboarding**: Guide users through your app's sign-in and initial setup flows.

---

This documentation suite provides a comprehensive resource for developers looking to build powerful integrations and user experiences within the Stripe ecosystem using Stripe Apps.