For AI agents: the complete documentation index is at llms.txt. Remove the trailing slash from a page URL and append .md to read its Markdown version. For the docs home, use index.md.

What you can build with Reflex

Reflex is a Python web app framework. Define the interface and backend logic in Python; Reflex compiles the interface to React. Combine forms, tables, interactive charts, and streamed model responses in one application. Start with a working example, then add the data access, authentication, and deployment configuration your application needs.

You can use Reflex for the data-app, dashboard, chat, model-demo, and internal-tool workflows commonly associated with Streamlit, Dash, and Gradio. These patterns can share a custom, multi-page interface: a conversation can sit beside a chart, a model prediction can populate an editable form, and a dashboard selection can update a table. The examples below demonstrate the individual building blocks; the framework comparisons explain the different development models.

Choose a starting point

I want to build…Start hereWhat the example demonstrates
A pandas data appPandas data appCSV upload, literal filtering, complete regional aggregates, and summary download
An analytics dashboardDashboard tutorialA table, an input form, and a chart that update from the same records
Linked charts and cross-filteringLinked charts tutorialSelecting points filters a second chart and a table
A custom AI chatbotStreaming chat tutorialProvider SDK calls, streamed responses, conversation state, and error handling
A web interface for a Python functionFunction-to-app tutorialValidated form input, a Python calculation, and a result view
An internal business toolDashboards and internal toolsRecord workflows, data loading, shared filters, and background refresh
An AI or document assistantAI applicationsExtending chat with retrieval, sources, persistence, and tool progress
A model or media interfaceModel and media interfacesLocal inference plus image and audio upload, processing, preview, and download workflows

These are application patterns, not separate Reflex products. The framework's components, state, and events are the building blocks in each case. Reflex Build is a separate way to generate applications; you can write these framework examples directly in Python.

Customize the whole interface

Reflex gives you control over the layout and behavior surrounding a chart, conversation, or model. You compose the interface from components and connect them to your application's state and events.

What you want to changeHow to do itWorking reference
Page structure and navigationCompose grids, sidebars, and multiple routesLayout recipes and pages
Branding, spacing, and mobile layoutSet CSS properties, themes, responsive values, or custom stylesheetsStyling and responsive layouts
A model's input and result experienceArrange your own controls and result components around the prediction functionFlower classifier demo
Interaction across componentsStore shared selections and derive the related viewsLinked XY charts
A specialized React componentDefine a wrapper exposing the props and events your app needsWrapping React

You can change the model demo's form, result panel, and surrounding page without changing predict_flower. Likewise, a streaming chat's provider call can stay the same while you change its message layout or add a source panel. Existing supported components can be composed directly; integrating a new React library requires wrapper code.

Understand the performance model

Reflex compiles Python component definitions into a React frontend. An ordinary interaction calls the associated Python event handler and synchronizes changed state; it does not rerun the whole Python page definition. Browser-local interactions and compiled Var expressions can run without a Python event. This lets you keep expensive data loading separate from controls that only change the view.

The Streamlit and Dash benchmarks show where these techniques delivered measurable gains: faster initial dashboard data visibility and faster bulk component updates. Read the results alongside their workload, rendering strategy, and measurement setup, then apply the execution guide to your own app.

Connect data and services

An event handler can call a Python library, query a database, or await an external service. Follow the database guide for database access and the background events guide for asynchronous work that can run alongside other events. Keep service credentials on the backend, and put access checks in the operation that reads or changes the data.

For an existing React component that is not exposed by the component library, use the React wrapping guide. Wrapping requires declaring the props and events your application uses; it is distinct from using an already supported component.

Grow the example into an application

The tutorials deliberately start small. Before deploying a shared application, decide where records and generated files persist, how users authenticate, which operations each user may perform, and how failures are reported. In-memory session state is not a database or an authorization system.

Read performance and execution to understand browser work, Python events, network round trips, and background tasks. Use the self-hosting guide for deployment instructions.

Choosing between Python frameworks

Explore the framework comparisons to find your current framework and understand how its interface, state, and backend fit into Reflex. Then choose a working tutorial above to implement your first workflow.