## Introduction to Stripe Apps

Stripe Apps provide a powerful way to extend Stripe's functionality and integrate it with other services. This documentation suite covers everything you need to know to build, deploy, and manage your own Stripe Apps.

### Core Concepts

*   **Stripe Apps Overview**: Understand the fundamental concepts behind Stripe Apps, including what they are, how they work, and their benefits.
*   **How Stripe Apps Work**: Delve deeper into the architecture and components of Stripe Apps, including frontend and backend interactions.
*   **Build an App**: Get started with the basics of app development, from creating your first app to previewing and updating it.
*   **Common Use Cases**: Explore various scenarios and examples of how Stripe Apps can be leveraged to solve business needs.

### Development and Building

*   **Build a UI**: Learn how to create custom user interfaces within the Stripe Dashboard using Stripe's UI Extensions SDK and UI toolkit.
*   **Add Server-Side Logic**: Implement backend code to validate and process user actions and data, integrate with third-party systems, and handle webhooks.
*   **API Authentication Methods**: Choose and implement the most suitable authentication method for your app, including OAuth 2.0 and Restricted API Keys.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like authentication credentials using the Secret Store API.
*   **Handle Different Modes**: Adapt your app to work seamlessly in both live and sandbox environments.
*   **Enable Sandbox Support**: Configure your public app for installation in Stripe's testing environment.
*   **Enable Local Network Access**: Understand and configure local network access for app previewing.
*   **UI Extension Developer Tools**: Utilize bundled tools for type checking, linting, and testing your app's UI.
*   **Style Your App**: Learn how to style UI components to match the Stripe Dashboard's visual consistency.
*   **Design Your App**: Follow design guidelines and utilize provided tools to create a user-friendly app experience.

### UI Components and Patterns

*   **UI Components**: Explore the comprehensive library of pre-built UI components for building your app's interface.
    *   Accordion
    *   Badge
    *   Banner
    *   BarChart
    *   Box
    *   Button
    *   ButtonGroup
    *   Checkbox
    *   Chip
    *   ContextView
    *   DataTable
    *   DateField
    *   DetailPageModule
    *   DetailPagePropertyList
    *   DetailPageTable
    *   Divider
    *   FocusView
    *   FormFieldGroup
    *   FullPageTabs
    *   FullPageView
    *   Icon
    *   Img
    *   Inline
    *   LineChart
    *   Link
    *   List
    *   Menu
    *   OnboardingView
    *   OverviewPage
    *   PropertyList
    *   Radio
    *   SearchField
    *   Select
    *   SettingsView
    *   SignInView
    *   Sparkline
    *   Spinner
    *   Switch
    *   Table
    *   Tabs
    *   TaskList
    *   TextArea
    *   TextField
    *   Toast
    *   Tooltip
*   **Next Generation UI Components**: Get early access to upcoming UI component updates.
*   **Component Hierarchy Constraints**: Understand the rules governing component composition.
*   **Design Patterns**: Follow recommended patterns for consistent and scalable app design.
    *   Full Page Apps
    *   Action Buttons
    *   Onboarding Flow
    *   Additional Context
    *   Back Link
    *   Communicating State
    *   Demo Content
    *   Empty State
    *   Filter Controls
    *   Lists
    *   Loading
    *   Progress Stepping
    *   Redirects
    *   Settings Sign In
    *   Sign In Template
    *   Sign Out
    *   Waiting Screens

### Authentication and Authorization

*   **API Authentication Methods**: Select and implement the right authentication method for your app.
*   **OAuth 2.0**: Understand and implement OAuth 2.0 for secure user authentication.
*   **Restricted API Key Authentication**: Utilize Restricted API Keys for fine-grained access control.
*   **Add Authorization Flows**: Implement PKCE OAuth workflows for enhanced security.
*   **Permissions Reference**: Learn about available events and their required permissions.

### Migration and Integration

*   **Migrate 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**: Explore your options for migrating third-party integrations.
*   **Migrate a Plugin to an OAuth 2.0 App**: Specifically migrate plugins to OAuth 2.0 authentication.
*   **Migrate a Plugin to a RAK App**: Migrate plugins to use Restricted API Keys for authentication.
*   **Embed Third-Party Stripe Apps**: Integrate third-party Stripe Apps into your platform using embedded components.
*   **Marketing Software Integrations**: Embed marketing software integrations for enhanced customer engagement.

### Distribution and Management

*   **Distribution Options**: Learn how to share your Stripe Apps with users, either privately or publicly.
*   **Upload and Install Your Stripe App**: Make your app available to team members on your Stripe account.
*   **Test Your App Externally**: Set up and distribute test versions of your app before publication.
*   **Publish Your App to the Stripe App Marketplace**: Prepare your app for review and listing on the global Stripe App Marketplace.
*   **Stripe Apps Quality Requirements**: Understand the quality standards for apps on the App Marketplace.
*   **Manage Your App's Versions and Releases**: Ship new versions of your app and manage changes over time.
*   **App Settings Page**: Create a page for users to configure their app settings.
*   **Onboarding**: Guide your users through your app's sign-in and initial setup flows.
*   **Add Deep Links**: Create deep links to navigate users directly to your Stripe app within the Dashboard.
*   **Using Install Links**: Allow users to install public apps outside of the Stripe App Marketplace.
*   **Using Roles in UI Extensions**: Tailor app functionality based on user roles within the Stripe Dashboard.

### Reference

*   **App Manifest Reference**: Understand the structure and fields of your app manifest file.
*   **Stripe Apps CLI Reference**: Learn how to use the command-line interface to manage your Stripe Apps.
*   **Extension SDK API Reference**: Access documentation for the Extension SDK API.
*   **Viewports Reference**: Discover available viewports for placing your UI extensions.
*   **Route Descriptors**: Navigate within the Dashboard using route descriptors for soft, context-preserving navigation.

### Sample Apps

*   **Sample Apps**: Browse working examples of Stripe Apps from design to code.
*   **Back-end App Example**: Build a Stripe app with no user interface, focusing on backend processing.
*   **Front-end App Example**: Create a Stripe app that renders a user interface in the Stripe Dashboard.
*   **Full-stack App Example**: Develop a Stripe app with both a user interface and backend functionality.