Tooling

Data Apps & Internal Tools

Streamlit, Dash, Marimo, Solara, Reflex — Python-first interactive apps for data teams.

Quick interactive apps backed by Python data code, without writing JavaScript. For full-fledged dashboards and BI, see BI & Dashboards. For interactive analysis, see Notebooks. For deeper component-level dashboards, see Charts.

Python-first script-style

  • Streamlitstreamlit run app.py and you have a web app; widgets re-run the whole script on interaction. Apache 2.0; Snowflake-owned. The default low-friction Python app framework. Streamlit Community Cloud is free for small public apps.
  • Marimo — reactive notebook stored as .py; deployable directly as an app. Apache 2.0. Often replaces Streamlit + Jupyter as the single "notebook + app" tool; see Notebooks.
  • Solara — React-flavored Python; declarative components, real reactivity; Apache 2.0; smaller community.
  • Mesop (Google) — Python web UI library used internally at Google; Apache 2.0; gaining traction in 2025.

Plotly Dash family

  • Plotly Dash — Flask + React under the hood; component-based; mature; MIT. The default for production-shaped Python data apps.
  • Dash Mantine Components, dash-bootstrap-components — UI toolkits.
  • Vizro (McKinsey OSS) — declarative YAML/Python config on top of Dash; ships polished defaults; Apache 2.0.

Python over JS frameworks

  • Reflex (formerly Pynecone) — Python that compiles to a React + FastAPI app; Apache 2.0. The pick when you want full UI flexibility but no JS.
  • NiceGUI — fast desktop-y Python UI; MIT; built on Vue + Quasar; great for internal tools.
  • Anvil — open-source server runtime + paid editor; Python-only full-stack apps.

Holoviz / scientific

  • Panel (HoloViz) — declarative dashboards over many backends (Bokeh / Plotly / Matplotlib / Plotly / Vega); BSD-3. Strong for scientific use cases.
  • Holoviews — high-level viz on top of Bokeh / Matplotlib / Plotly.
  • Voila — turn a Jupyter notebook into a read-only dashboard; see Notebooks.

R / Julia equivalents

  • Shiny — R's classic; works in Python now (shinyapps.io Python beta; Shiny for Python is GA on Posit Connect Cloud).
  • Genie.jl — Julia full-stack web framework with reactive UIs.
  • Quarto interactive — Quarto + Shiny / Observable / WebR for static-with-interactivity reports; see Notebooks.

ML demo / inference UIs

  • Gradio — drag-and-drop UIs for ML models; one-liner demos; Apache 2.0; HuggingFace-hosted free Spaces. The default for "show off this model."
  • Streamlit + LangChain / LlamaIndex — common pattern for chat apps; see AI/LLM.
  • Chainlit — chat UIs for LLM apps; Apache 2.0.

Adjacent: internal-tool builders

  • Retool — paid; the dominant internal-tool builder; SQL + JS; small free tier.
  • Appsmith — open-source Retool alternative; Apache 2.0.
  • Tooljet — open-source; AGPLv3.
  • Superblocks, UI Bakery — paid alternatives.
  • Budibase — open core; GPL-3 + paid.
  • Internal.io, Lowdefy — adjacent.
  • Windmill — see Data Orchestration; ships internal-tool UIs alongside its job runner.

Pick this if…

  • Default Python app, simplest possible: Streamlit.
  • You want notebook + app in one tool: Marimo.
  • Production-grade Python dashboards: Plotly Dash (or Vizro for declarative).
  • You want React-shaped UIs without JS: Reflex.
  • Show off an ML model: Gradio + HuggingFace Spaces.
  • Build internal admin tools, not analytics: Retool (paid) or Appsmith (OSS).
  • Already on R: Shiny (now also for Python).

On this page