mrkeyoor.com_
Tue 01 Sept 17:40 UTC
Dataevaluationupdated 25 Aug 2026

streamlit review

Streamlit turns a Python script into an interactive browser app, so a data scientist can ship a dashboard or model interface without building a separate frontend. It is best at getting an internal tool in front of users quickly, with widgets, charts, tables, and app state expressed in Python.

+43stars / 7d
Verdict

Our Streamlit checkout installed 35 packages in 77 seconds but failed its source build after 11 seconds, so using the package is much easier than joining its development workflow. Choose it when a Python team needs a credible data app quickly and can work with full-script reruns. Choose Dash or Shiny when update boundaries and frontend behavior need tighter control.

We ran it

Lab card: what happened when we ran streamlitScreenshot of streamlit (streamlit.io)
Install✓ · 77s35 packages · 37 MB
Build✗ · 11s
Testsn/ano test script
Known vulns0(pip-audit)
Repo9777 files~607,778 lines of source · 150.1 MB · 44 CI workflows

Answers from our run

Does streamlit build from source?

Dependencies installed in 77 seconds (35 packages), and the build failed. We cloned commit 09bbfcb into a clean Debian container with 3 CPUs and no project-specific setup.

Does streamlit have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does streamlit have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use streamlit?

Developers building high-frequency live dashboards that cannot rerun the script for each refresh: open issue #12980 asks for native chart updates without whole-script reruns.

What are the alternatives to streamlit?

Dash, Gradio, Shiny for Python. Our Streamlit checkout installed 35 packages in 77 seconds but failed its source build after 11 seconds, so using the package is much easier than joining its development workflow.

Setup4/5Package quick start is easy; the source build failed in our run
Docs5/5Clear quick start backed by extensive API and deployment guides
Community5/5Active releases and issue traffic, though outside PRs are paused
Maturity5/5Frequent releases and a broad, established application API

Discussed on

  1. hnPrettymapp – Create maps from OpenStreetMap data in a Streamlit webapp324 points
  2. hnSnowflake acquires Streamlit for $800M to help customers build data-based apps129 points
  3. hnShow HN: Hstream – quick Python web apps – Streamlit alternative using htmx104 points
  4. hnStreamlit launches open-source machine learning application dev framework102 points
  5. hnUse pygwalker to build visual analysis app in streamlit71 points

Who it’s for

Python teams turning analyses, models, or data workflows into internal web apps.
Data scientists who need useful feedback before a frontend team can take over.
Educators and researchers publishing interactive examples with little web code.
Small teams comfortable with Streamlit's script-rerun execution model.

Who it’s NOT for

Developers building high-frequency live dashboards that cannot rerun the script for each refresh: open issue #12980 asks for native chart updates without whole-script reruns.
Teams that need precise client-side routing, layout behavior, or a custom application shell beyond Streamlit's component model.
External contributors expecting normal pull-request access: the README says contributions are paused outside the Streamlit maintainer team.
Source contributors who need a clean Python-only build: our Debian build exited 1 after 11 seconds, and the supplied lab record contains no log tail that identifies the failing command.

Setup reality

Our sandbox install succeeded in 77 seconds, adding 35 packages and 37 MB. The checkout was much larger at 9,777 files, about 607,778 source lines, and 150.1 MB. Its build then exited 1 in 11 seconds. The lab record supplied for this review does not include the failing log lines, so we cannot name a cause. No test target was exposed, and pip-audit found 0 known vulnerabilities.

Running a normal app is far simpler than building the repository: install the package, create a Python file, then use streamlit run. Local apps need no account. Community Cloud requires signup and access to the source repository, while private data sources bring their own credentials. The script reruns when users interact, so expensive loading belongs behind caching and session behavior needs deliberate testing.

Python scripts become browser apps with very little ceremony

Streamlit's appeal is easy to explain. Write a Python file, call functions such as st.slider and st.write, then launch it with streamlit run. The framework renders widgets in a browser and reruns the script as input changes. That lets a data scientist turn an analysis into something colleagues can use without first learning a JavaScript framework, designing an API, and wiring the two together.

The project covers more than toy charts. Its API includes dataframes, charts, input controls, layout primitives, multipage apps, chat elements, session state, caching, and custom components. Community Cloud provides a hosted path for sharing an app. Local or privately hosted deployments remain possible under Apache 2.0, which matters when source data cannot leave an organization's environment.

The rerun model favors analysis apps over live control panels

Every interaction reruns Python code from top to bottom, with state and cache APIs preserving selected work. This is wonderfully legible in a notebook-like app because the visible page follows the file. It can become awkward when the interface needs independent regions with different update rates, long-running background behavior, or client-side state that should not trigger server work.

Open issue #12980 puts a specific edge on that concern. It asks for charts to accept incremental or real-time updates without rerunning the whole script, citing flicker and CPU use for frequently changing data. Streamlit has fragments and other ways to limit work, but the request was still open and active on August 25, 2026. Teams building sensor, log, or market-data screens should prototype their real refresh pattern before adopting the framework.

That same execution model is a good fit for reports, model controls, data review queues, and internal forms. These jobs usually care more about Python access and quick iteration than custom browser behavior. Cache expensive data loads, keep per-user values in session state, and the simple script can stay simple.

What happened when we ran it

Our run installed Streamlit's repository dependencies in 77 seconds: 35 packages using 37 MB on disk. The checkout itself contained 9,777 files, roughly 607,778 lines of source, and occupied 150.1 MB. Pip-audit reported 0 known vulnerabilities in the installed Python environment. Those figures describe our unprivileged Debian container at commit 09bbfcb, not a promise about an app built with the published package.

The build failed with exit code 1 after 11 seconds. The measurement record provided for this review has no build-log tail, so it would be fiction to blame a missing system package or a particular frontend tool. We can only report that the detected build target did not complete in the fresh Python 3.12 image. There was no detected test script or target, so the lab skipped tests rather than claiming a pass.

The repository signals explain some of the difference between package use and source work. This is a mixed, large product with 44 CI workflow files and no Dockerfile in the measured checkout. A normal user follows the short pip quick start. A contributor has to satisfy the project's development toolchain, and our generic container did not do that.

Hosting is easy until the app becomes an application

A local app needs Python and its own library dependencies. Community Cloud adds a managed deployment route and account signup. Self-hosting means treating Streamlit as a web service: pin dependencies, terminate TLS, control access, supply data credentials, and decide how several users share memory and compute. None of those are defects, but the two-line demo does not settle them.

Data apps often load database clients, model weights, or large frames near the top of the script. Because interaction causes reruns, cache boundaries affect both responsiveness and correctness. A stale cached query can mislead users; an uncached model load can make every click painful. Session state also deserves multi-user tests, especially where a tool edits records rather than only displaying them.

Maintainers move quickly, while outside code contributions are paused

The repository was pushed on August 25, 2026, and release 1.62.0 arrived on August 19. That release added typed selection state, more input types, layout wrapping controls, and numerous fixes. GitHub showed 1,193 open issues and pull requests combined, a large queue that fits the project's 45,607-star reach better than it signals neglect. Recent issues and maintainer pull requests were moving on the day of this review.

There is an unusual community constraint: the README says pull requests from outside the maintainer team are paused. People can still report bugs, request features, vote on issues, comment on specifications, create components, and contribute to the separate extras project. That is enough participation for most users, but it is a firm reason to walk away if adopting a dependency requires the ability to upstream your own fix.

Streamlit is the fastest route when the interface can stay Streamlit-shaped

The framework earns its place by making the first useful version unusually cheap. Python developers can expose a model or analysis with real controls before a custom web project would have its scaffolding finished. The documentation, hosted option, active release cadence, and component system support that initial speed after the demo.

The cost appears when requirements pull against full-script reruns or the standard page model. Teams then add cache rules, fragments, custom components, authentication layers, and deployment machinery until the original simplicity has thinned out. Start with Streamlit for internal data work and model interfaces. For a public product with exact interaction design or a high-frequency live dashboard, compare Dash, Shiny, or a normal web stack before the prototype becomes permanent.

Alternatives

ProjectWhat it isPick it when
Dash gh↗A Python web-app framework built around reactive callbacks and Plotly components.pick this instead when callback-level control and live dashboard updates matter more than Streamlit's shorter script model.
GradioA Python toolkit for quickly wrapping models and functions in shareable interfaces.pick this instead when the product is mainly an ML demo, media input tool, or model playground.
Shiny for PythonA reactive Python framework descended from the R Shiny application model.pick this instead when you want explicit reactive dependencies and finer control over updates.

What people are saying

  1. [velocity-scout] streamlit/streamlit

Sources

  1. Streamlit repository and README
  2. Streamlit 1.62.0 release
  3. Real-time chart update request
  4. Streamlit documentation

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →