## Building and Managing Stripe Apps

This documentation section provides a comprehensive guide to 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.

### Getting Started with Stripe Apps

*   **Overview:** Understand the fundamental concepts and capabilities of Stripe Apps, which allow for extending Stripe's functionality and embedding custom user interfaces directly into the Stripe Dashboard.
*   **Create an App:** Learn the initial steps to create a new Stripe App, including setting up your development environment and using the Stripe CLI.
*   **How Stripe Apps Work:** Gain a deeper understanding of the architecture and components that make up a Stripe App, including frontend and backend interactions.
*   **Sample Apps:** Explore a collection of sample applications to see practical examples of Stripe Apps in action, from basic functionality to more complex use cases.

### Core Development Concepts

*   **App Manifest Reference:** Understand the `stripe-app.json` file, which serves as the central configuration for your app, defining its ID, version, permissions, and other critical settings.
*   **API Authentication Methods:** Choose and implement the appropriate authentication method for your app, whether it's using a Platform key, OAuth 2.0, or Restricted API Keys (RAKs).
*   **Authorization Flows:** Implement secure authorization flows, including PKCE OAuth workflows, to allow users to grant your app access to their Stripe data.
*   **Server-Side Logic:** Learn how to add backend code to your Stripe App to handle data processing, integrations with third-party systems, and webhook event subscriptions.
*   **Build a UI:** Discover how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work:** Understand the principles behind UI extensions, including their sandboxed environment and reliance on Stripe's UI component library.
    *   **Next Generation UI Components:** Get early access to upcoming UI components that offer enhanced functionality and improved APIs.
    *   **Component Hierarchy Constraints:** Learn about the rules governing how UI components can be composed to ensure a stable and predictable user experience.
    *   **UI Components Reference:** Explore the comprehensive library of pre-built UI components available for building your app's interface. This includes detailed documentation for each component, such as:
        *   **Layout and Structure:** `Box`, `Inline`, `Stack`, `Divider`, `FullPageView`, `OverviewPage`
        *   **Input and Controls:** `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `FormFieldGroup`, `Radio`, `Select`, `Switch`, `TextArea`, `TextField`
        *   **Data Display:** `Accordion`, `Badge`, `Banner`, `BarChart`, `Chip`, `DataTable`, `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`, `Icon`, `Img`, `LineChart`, `Link`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Spinner`, `Tabs`, `TaskList`, `Toast`, `Tooltip`
        *   **Specialized Views:** `ContextView`, `FocusView`, `OnboardingView`, `SettingsView`, `SignInView`
*   **Store Secret Credentials and Tokens:** Securely persist sensitive data like API keys and tokens using the Secret Store API.
*   **Handle Different Modes:** Adapt your app to function correctly in both live Stripe environments and sandboxes for testing.
*   **Enable Sandbox Support:** Configure your public app to allow installations in Stripe's testing environments.
*   **Enable Local Network Access:** Understand and configure local network access for app previewing during development.

### Migrating from Legacy Extensions

*   **Migrate an Extension to Stripe Apps:** Learn why and how to migrate existing legacy extensions to the modern Stripe Apps platform for better discoverability and functionality.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect:** Understand your migration options for third-party integrations that previously relied on secret API keys.
*   **Migrate a Plugin to an OAuth 2.0 App:** Specific guidance on migrating plugins to use OAuth 2.0 for secure authentication.
*   **Migrate a Plugin to a RAK App:** Specific guidance on migrating plugins to use Restricted API Keys (RAKs) for secure authentication.

### Distributing and Managing Your App

*   **Distribution Options:** Explore the different ways to share your Stripe Apps, including private distribution to your team and public publishing on the Stripe App Marketplace.
*   **Upload and Install Your Stripe App:** Learn the process of uploading your app for internal testing and installation within your Stripe account.
*   **Test Your App Externally:** Set up and distribute test versions of your app to a limited group of users before public release.
*   **Manage Your App's Versions and Releases:** Understand app versioning and the release process for shipping updates and managing changes over time.
*   **Publish Your App to the Stripe App Marketplace:** Follow the steps and requirements to get your app approved and listed on the global Stripe App Marketplace.
*   **Stripe Apps Quality Requirements:** Familiarize yourself with the quality standards and guidelines that your app must meet for marketplace submission.
*   **Promote Your App:** Learn about the Stripe Partner Ecosystem and how to leverage co-marketing opportunities to grow your app's reach.
*   **Using Install Links:** Allow users to install your public app directly from your own website or application.
*   **Add Deep Links:** Create deep links to navigate users directly to specific pages within your Stripe App in the Dashboard.

### Design and User Experience

*   **Design Your App:** Get started with design tools, guidelines, and philosophy for creating a user-friendly and consistent app experience.
*   **Style Your App:** Learn how to style UI components using Stripe's provided design tokens to match the Dashboard's visual identity.
*   **Design Patterns:** Follow recommended design patterns for common app functionalities to expedite development and ensure a high-quality user experience. 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
*   **Onboarding:** Guide your users through a seamless and intuitive sign-in and initial setup process.
*   **App Settings Page:** Create a dedicated page where users can configure their app settings within the Stripe Dashboard.
*   **Using Roles in UI Extensions:** Tailor functionality within your UI extensions based on the user's role in the Stripe Dashboard.

### Reference and Tools

*   **Stripe Apps CLI Reference:** Master the command-line interface for creating, developing, configuring, and uploading your Stripe Apps.
*   **Permissions Reference:** Understand the available events and their required permissions for your app to access user data.
*   **Extension SDK API Reference:** Explore the context props and utility functions available to UI extensions for interacting with the Stripe Dashboard.
*   **Viewports Reference:** Learn about the different viewports where your UI extensions can be rendered within the Stripe Dashboard.
*   **Route Descriptors:** Implement soft, context-preserving navigation within the Dashboard from your Stripe App.
*   **UI Extension Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing your app's UI extensions.
*   **Upgrade Stripe's UI Extension SDK:** Follow guides to upgrade your app to the latest version of the UI extension SDK, managing breaking changes.