## Stripe Apps Development

This documentation group focuses on building and managing applications within the Stripe ecosystem, referred to as "Stripe Apps." It covers the entire lifecycle of app development, from initial setup and design to deployment, authentication, and UI implementation.

### Core Concepts and Getting Started

*   **Stripe Apps Overview (`/stripe-apps`)**: Introduces Stripe Apps, their capabilities, and how they extend Stripe's functionality. It provides entry points to key development areas.
*   **Getting Started (`/stripe-apps/create-app`)**: Guides users through the initial steps of creating their first Stripe App, including setting up the Stripe CLI and building a basic "Hello, world!" example.
*   **How Stripe Apps Work (`/stripe-apps/how-stripe-apps-work`)**: Explains the fundamental architecture of Stripe Apps, including their frontend and backend components.
*   **Common Use Cases (`/stripe-apps/common-use-cases`)**: Outlines typical scenarios for building Stripe Apps, categorizing them into backend, frontend, and full-stack applications.

### Building Your App

*   **App Manifest (`/stripe-apps/reference/app-manifest`)**: Details the `stripe-app.json` file, which serves as the configuration hub for your app, defining its ID, version, permissions, and more.
*   **API Authentication (`/stripe-apps/api-authentication`)**: Explains the different methods for authenticating API requests, including Platform Key, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0 (`/stripe-apps/api-authentication/oauth`)**: Provides in-depth guidance on implementing OAuth 2.0 for secure user authentication.
    *   **Restricted API Key (`/stripe-apps/api-authentication/rak`)**: Details how to use Restricted API Keys (RAKs) for more granular access control.
*   **Server-Side Logic (`/stripe-apps/build-backend`)**: Guides developers on integrating backend code to handle complex logic, webhooks, and third-party integrations.
    *   **Backend App Example (`/stripe-apps/back-end-app-example`)**: Provides a practical example of building a backend-only Stripe App.
*   **Building a UI (`/stripe-apps/build-ui`)**: Covers the process of creating custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK.
    *   **UI Extensions (`/stripe-apps/how-ui-extensions-work`)**: Explains the system for rendering custom UIs within Stripe's environment.
    *   **UI Components (`/stripe-apps/components`)**: Serves as a catalog of available UI components for building interfaces, with individual pages for each component.
        *   **Examples**: `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`.
    *   **Next Generation UI Components (`/stripe-apps/next-ui-components`)**: Introduces newer UI components available for early access.
    *   **Component Hierarchy Constraints (`/stripe-apps/component-hierarchy-constraints`)**: Explains rules for composing UI components to ensure predictable rendering.
*   **Store Secrets (`/stripe-apps/store-secrets`)**: Details how to securely store sensitive data like API keys and tokens using the Secret Store API.
*   **App Settings Page (`/stripe-apps/app-settings`)**: Guides on creating a dedicated page for users to configure app settings.
*   **Handling Modes (`/stripe-apps/handling-modes`)**: Explains how to adapt your app to work with both live and sandbox environments.
*   **Enable Sandbox Support (`/stripe-apps/enable-sandbox-support`)**: Instructions on configuring your app for installation in sandboxes.
*   **Enable Local Network Access (`/stripe-apps/enable-local-network-access`)**: How to enable local network access for app previewing.

### Navigation and User Experience

*   **Deep Links (`/stripe-apps/deep-links`)**: How to create deep links to navigate users directly to specific parts of your app within the Dashboard.
*   **Route Descriptors (`/stripe-apps/route-descriptors`)**: Enables soft, context-preserving navigation between Dashboard pages from your app.
*   **Viewports (`/stripe-apps/reference/viewports`)**: Lists the available locations within the Stripe Dashboard where your app's UI can be rendered.
*   **Onboarding (`/stripe-apps/onboarding`)**: Best practices and tools for guiding users through the initial setup of your app after installation.
    *   **Onboarding Flow Patterns (`/stripe-apps/patterns/onboarding-experience`)**: Detailed guidance on creating effective onboarding flows.
    *   **Sign In Template (`/stripe-apps/patterns/sign-in`)**: Recommended patterns for implementing sign-in within your app.
    *   **Settings Sign In (`/stripe-apps/patterns/settings-signin`)**: How to handle sign-in within the app's settings page.
    *   **Additional Context (`/stripe-apps/patterns/additional-context`)**: Strategies for providing extra information during onboarding.
    *   **Demo Content (`/stripe-apps/patterns/demo`)**: Tips for showcasing your app's functionality.
    *   **Waiting Screens (`/stripe-apps/patterns/waiting-screens`)**: How to inform users during periods of waiting.
*   **Design Patterns (`/stripe-apps/patterns`)**: A collection of recommended design patterns for building consistent and user-friendly Stripe Apps.
    *   **Action Buttons (`/stripe-apps/patterns/action-buttons`)**: Guidance on placing and using action buttons.
    *   **Back Link (`/stripe-apps/patterns/back-link`)**: How to implement navigation back to previous pages.
    *   **Communicating State (`/stripe-apps/patterns/communicating-state`)**: Strategies for informing users about the status of actions.
    *   **Empty State (`/stripe-apps/patterns/empty-state`)**: How to handle and display when no data is available.
    *   **Filter Controls (`/stripe-apps/patterns/filter-controls`)**: Using chips to enable filtering of data.
    *   **Full Page Apps (`/stripe-apps/patterns/full-page-apps`)**: Building apps that occupy an entire Dashboard page.
    *   **Lists (`/stripe-apps/patterns/lists`)**: Best practices for displaying collections of information.
    *   **Loading (`/stripe-apps/patterns/loading`)**: Using spinners to indicate loading states.
    *   **Progress Stepping (`/stripe-apps/patterns/progress-stepping`)**: Guiding users through multi-step tasks.
    *   **Redirects (`/stripe-apps/patterns/redirects`)**: Creating clear redirects for users.
    *   **Sign Out (`/stripe-apps/patterns/sign-out`)**: Implementing a sign-out functionality.
*   **Using Roles in UI Extensions (`/stripe-apps/using-roles-in-ui-extensions`)**: How to tailor app functionality based on user roles within the Dashboard.

### Distribution and Management

*   **Distribution Options (`/stripe-apps/distribution-options`)**: Explains the methods for sharing your Stripe Apps with users, including public and private distribution.
*   **Upload and Install (`/stripe-apps/upload-install-app`)**: Step-by-step guide on uploading and installing your app for team members.
*   **Publishing an App (`/stripe-apps/publish-app`)**: Instructions on how to submit your app to the Stripe App Marketplace.
*   **App Review Requirements (`/stripe-apps/review-requirements`)**: Details the quality standards and requirements for apps submitted to the marketplace.
*   **Test Your App Externally (`/stripe-apps/test-app`)**: How to set up and distribute test versions of your app before public release.
*   **Manage Versions and Releases (`/stripe-apps/versions-and-releases`)**: Information on app versioning and managing updates.
*   **Promote Your App (`/stripe-apps/promote-app`)**: Details on partnering with Stripe to grow your app's reach.
*   **App Analytics (`/stripe-apps/analytics`)**: How to access and understand data on your app's performance.

### Migration and Legacy

*   **Migrating Extensions (`/stripe-apps/migrate-extension`)**: Explains why and how to migrate older "legacy extensions" to the new Stripe Apps platform.
    *   **Migrate to OAuth 2.0 App (`/stripe-apps/plugins/oauth`)**: Specific guidance for migrating to OAuth 2.0.
    *   **Migrate to RAK App (`/stripe-apps/plugins/rak`)**: Specific guidance for migrating to Restricted API Keys.
    *   **Migrate a Plugin (`/stripe-apps/plugins/decide-migration`)**: A guide to help decide on the migration path for plugins.
*   **Legacy Extensions (`/building-extensions`)**: Information about the deprecated extensions integration pattern.

### Developer Tools and References

*   **Stripe Apps CLI Reference (`/stripe-apps/reference/cli`)**: Documentation for the command-line interface used to manage Stripe Apps.
*   **Extension SDK API Reference (`/stripe-apps/reference/extensions-sdk-api`)**: Details the API provided by the UI Extension SDK.
*   **Permissions Reference (`/stripe-apps/reference/permissions`)**: Lists available events and their required permissions for your app.
*   **UI Extension Developer Tools (`/stripe-apps/ui-extension-developer-tools`)**: Information on bundled tools for type checking, linting, and testing.
*   **Upgrade UI Extension SDK (`/stripe-apps/upgrade-stripes-ui-extension-sdk`)**: Guidance on upgrading to the latest version of the UI extension SDK.
*   **Design Your App (`/stripe-apps/design`)**: General design principles and tools for creating Stripe Apps.
*   **Style Your App (`/stripe-apps/style`)**: How to style UI components using provided design tokens.
*   **Sample Apps (`/stripe-apps/sample-apps`)**: Links to example Stripe Apps on GitHub to help developers get started.