APPSDash: the open-source Python framework for data applications
The most popular Python framework for analytical web apps
24K+
GitHub stars
10M+
PyPI downloads per month
8+
years of active development
How it works30 lines of Python. A fully interactive web app.
1. Define your layoutUse Python to declare your UI — dropdowns, graphs, sliders, tables, and 100+ other components. No HTML templates.
2. Write callbacksDecorate plain Python functions with
@app.callbackWhen an input changes, Dash calls your function and updates the UI automatically.
3. Run itpython app.py and open your browser. That's it. Your app is live at localhost and ready to deploy.
app.py
from dash import Dash, dcc, html, Input, Output
import plotly.express as px
import pandas as pd
df = pd.read_csv(
"https://raw.githubusercontent.com/""plotly/datasets/master/gapminder_unfiltered.csv"
)
app = Dash()
Works with AI tooEasy for you. Easy for AI agents.
Describe what you wantTell your AI coding agent — Claude, Cursor, Copilot, or any other — to build you a Dash app. "Show me a dashboard that lets me filter sales by region and date." That's the whole prompt.
Get a working app in minutesThe agent generates a complete Dash application — layout, callbacks, charts, and a runnable server. Not a skeleton. Not a TODO list. A working app you can open in a browser.
Iterate or ship — your callUse it as-is for a quick internal tool, or keep building. Add authentication, new pages, custom styling. Because Dash is a real framework, your AI-generated prototype doesn't hit a wall — it grows into your production app.
Pure Python reactiveWire UI to Python. No HTML, CSS, or JavaScript - just functions and decorators.
@callbackThe decorator that turns a Python function into a piece of reactive UI. Inputs, outputs, and state— all declared in Python.
Pattern-matching callbacksGenerate dynamic layouts that wire up automatically. Add or remove components at runtime without rewriting your callbacks.
Clientside & backgroundClientside callbacks run instantly in the browser. Background callbacks offload long jobs without freezing the UI.
Components for serious analyticsSpreadsheet-class grids. Production-ready charts.
Complete component libraries — accessible from Python, React under the hood.
Dash AG Grid
Filtering, grouping, pivoting, and editing at enterprise scale. The same grid powering data-heavy apps inside global banks.
Dash Mantine + Bootstrap
Complete UI kits - buttons, modals, tabs, layouts - wired up from Python with no front-end work required.
View the component libraries →
dcc.Graph
Embed any Plotly figure into a Dash app with crossfiltering, selection, and click events wired to Python callbacks.
Production readyFrom prototype to production data application.
Dash apps run in regulated industries, on global infrastructure, behind firewalls.
Multi-page appsDash Pages handles file-based routing, layout composition, and navigation state — modern web framework patterns, written in Python.
Streaming & long-running tasksWebSocket support, set_props for incremental updates, and background callbacks keep dashboards responsive under load.
Deploys anywhereEasy, fast, one-click deployment to Plotly Cloud and Dash Enterprise. Can be deployed on other platforms.
Tech Specs
License
MIT (open source)Form factor
Python frameworkInstall
pip install dashLanguages
PythonBuild on
Flask (server) + React (client) + plotly.jsComponents
dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model
Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming
WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth
None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server
Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on
Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop
Hot reload, debug toolbar, callback graph inspectorTesting
dash[testing] with pytest + Selenium/Playwright driversVersioning
SemVer; 12-month deprecation policy on public APIsPython
3.9+Source
plotly/dashon GitHub, 43k+ starsLicense
MIT (open source)Form factor
Python frameworkInstall
pip install dashLanguages
PythonBuild on
Flask (server) + React (client) + plotly.jsComponents
dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model
Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming
WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth
None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server
Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on
Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop
Hot reload, debug toolbar, callback graph inspectorTesting
dash[testing] with pytest + Selenium/Playwright driversVersioning
SemVer; 12-month deprecation policy on public APIsPython
3.9+Source
plotly/dashon GitHub, 43k+ starsLicense
MIT (open source)Form factor
Python frameworkInstall
pip install dashLanguages
PythonBuild on
Flask (server) + React (client) + plotly.jsComponents
dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model
Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming
WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth
None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server
Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on
Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop
Hot reload, debug toolbar, callback graph inspectorTesting
dash[testing] with pytest + Selenium/Playwright driversVersioning
SemVer; 12-month deprecation policy on public APIsPython
3.9+Source
plotly/dashon GitHub, 43k+ starsBuild your first Dash app in 20 minutes.