## Building and Managing Stripe Apps

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

### Core Concepts and Development

*   **Getting Started with Stripe Apps:** Learn the fundamentals of app development, including building, previewing, and updating your first Stripe App.
*   **How Stripe Apps Work:** Understand the architecture and components of Stripe Apps, including frontend UI extensions and backend services, and how they integrate with the Stripe Dashboard.
*   **Common Use Cases:** Explore practical examples of how Stripe Apps can be used to extend Stripe's functionality for various business needs, categorized by app type (backend, frontend, full-stack).
*   **Build a UI:** Master the process of creating custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
*   **Add Server-Side Logic:** Implement robust backend code to validate user actions, process data, integrate with third-party systems, and handle webhook events.
*   **API Authentication Methods:** Choose and implement the most suitable authentication method for your app, including Platform keys, OAuth 2.0, and Restricted API Keys (RAKs).
*   **Authorization Flows:** Implement secure authorization flows, including PKCE OAuth workflows, to allow users to grant your app access to their 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 (testing) environments.
*   **Enable Sandbox Support:** Configure your public app for sandbox installation, allowing users to evaluate features before going live.
*   **Enable Local Network Access:** Understand and configure local network access for app previewing during development.

### UI Components and Design

*   **UI Components:** Explore the comprehensive library of pre-built UI components available for building consistent and visually appealing interfaces within Stripe Apps. This includes detailed documentation for individual components such as:
    *   **Layout and Structure:** `Box`, `Inline`, `Divider`, `FullPageView`, `OverviewPage`, `FullPageTabs`, `Tabs`
    *   **Input and Controls:** `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `Radio`, `Select`, `Switch`, `TextArea`, `TextField`, `SearchField`
    *   **Information Display:** `Accordion`, `Badge`, `Banner`, `BarChart`, `Chip`, `Icon`, `Img`, `LineChart`, `Link`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Spinner`, `Table`, `TaskList`, `Toast`, `Tooltip`
    *   **Views and Flows:** `ContextView`, `FocusView`, `OnboardingView`, `SettingsView`, `SignInView`
*   **Next Generation UI Components:** Get early access to upcoming UI components that represent the future of the Stripe Apps UI SDK.
*   **Component Hierarchy Constraints:** Understand the rules governing how UI components can be composed to ensure a predictable and functional user interface.
*   **Design Your App:** Leverage design tools, guidelines, and philosophy to create a user-friendly and visually consistent app experience.
*   **Style Your App:** Learn how to apply custom styles using provided design tokens to match the Stripe Dashboard's aesthetic.
*   **Design Patterns:** Follow recommended design patterns to expedite the app review process and ensure a consistent, clear, and scalable app. This includes patterns for:
    *   Onboarding (including sign-in templates, settings sign-in, demo content)
    *   Navigation (action buttons, back links, redirects)
    *   State Management (communicating state, loading, waiting screens)
    *   Data Display (lists, filter controls, empty states)
    *   Task Management (progress stepping)

### App Distribution and Management

*   **Distribution Options:** Learn about the different ways to share your Stripe Apps with users, including public distribution on the App Marketplace and private sharing.
*   **Upload and Install Your Stripe App:** Make your app available to team members on your Stripe account through a straightforward upload and installation process.
*   **How to Publish an App to the Stripe App Marketplace:** Guide your app through the review process and make it publicly available to the Stripe user community.
*   **Stripe Apps Quality Requirements:** Understand the qualitative requirements for apps to be listed on the App Marketplace.
*   **Test Your App Externally:** Set up and distribute test versions of your app to a limited group of testers before public release.
*   **Manage Your App's Versions and Releases:** Learn about app versioning and releases to effectively manage changes and ship new versions over time.
*   **Using Install Links:** Allow users to install public apps directly from your own website or application.
*   **Add Deep Links:** Create deep links that streamline navigation for users directly to your Stripe App within the Dashboard.
*   **Assign Roles in UI Extensions:** Tailor app functionality based on user roles within the Stripe Dashboard.
*   **Enable Post-Install Actions:** Support additional configurations that users might need to complete after installing your app.
*   **App Analytics:** Access and export data to understand how your apps are used and how your marketplace listings perform.

### Migration and Legacy Information

*   **Migrate an Extension to Stripe Apps:** Understand why and how to migrate legacy extensions to the modern Stripe Apps platform for better discoverability and functionality.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Explore your options for migrating third-party integrations that previously relied on secret API keys to secure authentication methods.
*   **Migrate a Plugin to an OAuth 2.0 App:** Specific guidance on migrating plugins to OAuth 2.0 authentication within Stripe Apps.
*   **Migrate a Plugin to a RAK App:** Specific guidance on migrating plugins to Restricted API Key (RAK) authentication within Stripe Apps.
*   **Legacy Extensions:** Information and reference for the deprecated extensions integration pattern.

### Developer Tools and References

*   **Stripe Apps CLI Reference:** Install and utilize the command-line interface to manage your Stripe app's lifecycle.
*   **App Manifest Reference:** Understand the structure and fields of the `stripe-app.json` file, which describes your app's integration with the Stripe platform.
*   **Permissions Reference:** Learn about available events and their required permissions for your app to access user data.
*   **Extension SDK API Reference:** Access documentation for the Extension SDK API, including context props and utility functions for UI extensions.
*   **Viewports Reference:** Understand the available viewports within the Stripe Dashboard where your app's UI extensions can be rendered.
*   **UI Testing:** Utilize utilities and helpers to write unit tests for your app's user interface.
*   **UI Extension Developer Tools:** Leverage bundled developer tools for type-checking, linting, and testing your UI extension code.
*   **Upgrade Stripe's UI Extension SDK:** Follow guides to navigate breaking changes and upgrade your application to the latest SDK versions.