Posters
Scale
Paper

Stlite

Streamlit-Lite = In-browser Streamlit

Run an interactive Streamlit app entirely on the visitor's device, powered by Pyodide and WebAssembly.

Yuichiro Tachibana (@whitphx)

Streamlit turns a Python script into a web app

Behind the scenes, Streamlit starts a Python server, serves the frontend SPA, and maintains continuous network communication between them to power interactivity.

Stlite moves the Python server into the browser

Stlite replaces native CPython with Pyodide, a WebAssembly build of CPython, so the Streamlit server can run inside the browser while its familiar Python programming model remains intact.

Python code beside the Streamlit app it produces, with an interactive slider and sales forecast chart
Streamlit homepage hero video, 00:24

Nearly the same Streamlit stack.

The app and Streamlit stay; the supporting layers adapt.

Standard Streamlit

Remote server
Your app script
Written in Python
Streamlit server
ScriptRunner and app state
UvicornHTTP requests → ASGI calls
CPython
Native process on the host OS
HTTP + WebSocketover the network
Web browser
Streamlit frontend
React user interface
Same appStreamlit staysServer adaptationRuntime replacementTransport adaptationSame frontend

Stlite

Static file server
serves HTML, JavaScript, Python app code, and data
Web browser
Web Worker
Your app script
Written in Python
Streamlit server
ScriptRunner and app state
Custom ASGI serverHTTP requests → ASGI calls
Pyodide
CPython compiled to WebAssembly
In-browser transport bridgeWorker messages carrying HTTP + WebSocket traffic
Streamlit frontend
React user interface

Choose where Python runs

Target a browser SPA, desktop package, or experimental edge worker.

Browser SPA

Python runs on each visitor's device.

Self-host static HTML

Publish the runtime and app files from any static file server.

@stlite/browser

Embed in a React app

Mount a Stlite-powered Streamlit app inside the React UI you already have.

@stlite/react

Write and share online

Use the hosted editor to serialize app files into a URL and share them without self-hosting.

Stlite Sharing

Runtime: each visitor's browser

Desktop

Package the browser runtime as an installable app.

Electron shellStlite browser runtime
@stlite/desktop

Runtime: the user's computer

Cloudflare Workers

Experimental

Just as V8 brought browser-born JavaScript to the server, Cloudflare Workers bring Stlite’s browser-native stack full circle, running it server-side at the edge.

Browser frontendStreamlit on Pyodide in a Python Worker
@stlite/cloudflare

Runtime: Cloudflare's edge

When browser-run Stlite makes sense

Use it when running Python on the visitor's device is part of the solution.

Private data tools
Process selected files locally instead of sending them to an application server.
Offline apps
Keep working after the runtime, packages, and app resources have loaded.
Scale with visitors
Serve static files while each visitor supplies the Python compute.
New delivery formats
Place the same Streamlit experience in a web page, React app, or Electron shell.