Reactive web-component UIs configured in Python, executed in the browser.
Browse the standalone examples or open the interactive notebook. Python runs in Pyodide, so nothing needs to be installed locally.
Overview
Construct a UI as a tree of typed Python components from opt-in packages or any library that ships a Custom Elements Manifest. Attach behavior as declarative data: an action DSL (toggle a prop, send a model edit, call an endpoint) and reactive bindings (a control two-way-bound to a state field, or a prop computed from others). spaday's JavaScript runtime renders the tree to real web components and interprets that behavior client-side — so a toggle or a derived value updates with no round-trip to Python.
That UI state is a transports model, so it syncs over any connection (WebSocket, SSE, Jupyter comm) and any codec; the same tree drops into a web app or a Jupyter notebook unchanged.
Like transports, spaday is a Rust core with thin bindings: the component tree, the diff engine, the CEM parser, the action interpreter, and the reactive engine live in Rust and compile to PyO3 (Python authors the tree) and wasm (the browser runs it). One core, two bindings.
from spaday import Widget, element
# a checkbox two-way-bound to a state field, rendered in a Jupyter cell
ui = element("input", type="checkbox").bind("checked", "on", mode="two-way")
w = Widget(ui, state={"on": True})
w # flip the switch → w.state["on"] flips in Python; set w.state → the switch follows
Install
pip install spaday # core: author + serialize component trees
pip install "spaday[widget]" # + the Jupyter / anywidget host
Component ecosystem
Install only the integrations an application uses. Each package provides typed Python components and registers its browser assets with spaday:
Design Systems
- spaday-blueprint — BlueprintUI.
- spaday-calcite — Calcite Design System.
- spaday-fluent — Fluent UI.
- spaday-lion — Lion.
- spaday-spectrum — Adobe Spectrum Web Components.
- spaday-ui5 — UI5.
- spaday-vaadin — vaadin.
- spaday-webawesome — WebAwesome.
Individual Components
- spaday-codemirror — CodeMirror 6 code editor.
- spaday-dagre — interactive directed-graph rendering with dagre layout.
- spaday-diffs — read-only file comparisons and patches with line selection and annotations from Pierre Diffs.
- spaday-lightweight-charts — reactive TradingView Lightweight Charts.
- spaday-perspective — live Perspective workspaces and datagrids.
- spaday-regular-layout — serializable resizable panel layouts.
- spaday-regular-table — viewport-virtualized high-performance data tables.
- spaday-studio — AI-native visual development environment.
- spaday-trees — virtualized project and repository trees from Pierre.
- spaday-vega — Vega and Vega-Lite visualizations.
The spaday-shoelace compatibility package installs spaday-webawesome.
Select an installed integration by its entry-point name, for example serve(page, packages=["trees"]).
Documentation
- Tutorial — build your first interactive UI, step by step (in a notebook).
- How-to guides — author a component tree, add behavior and reactivity, serve and embed an app, theme it and ship your own variant, use it in a notebook, run Python UI logic in Pyodide, sync to a server over transports, wrap an imperative JS library, generate typed classes from a manifest.
- API reference — the Python surface.
- How spaday works — the architecture and the reasoning behind it.
- How spaday compares to alternatives — Streamlit, Dash, Panel, a JS frontend, and when to pick which.
Metadata
Release files for spaday 0.13.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| spaday-0.13.1.tar.gz | 2.0 MB | Without provenance | Details for spaday-0.13.1.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| spaday-0.13.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl | CPython 3.14 | CPython 3.14 | PyEmscripten 2026.0+ WebAssembly | Details for spaday-0.13.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl |
| spaday-0.13.1-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details for spaday-0.13.1-cp311-abi3-win_amd64.whl |
| spaday-0.13.1-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details for spaday-0.13.1-cp311-abi3-manylinux_2_28_x86_64.whl |
| spaday-0.13.1-cp311-abi3-manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64 | Details for spaday-0.13.1-cp311-abi3-manylinux_2_28_aarch64.whl |
| spaday-0.13.1-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details for spaday-0.13.1-cp311-abi3-macosx_11_0_arm64.whl |
Total release size: 15.7 MB
Release files / spaday-0.13.1.tar.gz
| Download URL | spaday-0.13.1.tar.gz |
|---|---|
| Size | 2.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce6eed60dccc61cb7f932f33392664b350777773a747eb6082eb02aa841d4e50
|
|
BLAKE2b-256 checksum How to use checksums |
98fb951aa1e10f6c94680dd7afd8c3aa176a28c57dc397bd0bc46e58f4574e3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / spaday-0.13.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
| Download URL | spaday-0.13.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.14 PyEmscripten 2026.0+ WebAssembly |
|
SHA-256 checksum How to use checksums |
e393df4092d1e04be2ab90412d7997907b3a346de3ed22de652f18d59f390b6e
|
|
BLAKE2b-256 checksum How to use checksums |
f2c4fbc81bafa677257ba978fe91aa08d6badd4ef47cc32bcd8ea5ec2ba74c09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / spaday-0.13.1-cp311-abi3-win_amd64.whl
| Download URL | spaday-0.13.1-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
cc60a0a87d0cb57f6ee36f83ce1acfd6b8bf9e00300ffd79db9b1c86f66e3bce
|
|
BLAKE2b-256 checksum How to use checksums |
325af1e4772c48a3b6b959e7ba71ec1d59da61539bd618269640328622a3daba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / spaday-0.13.1-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | spaday-0.13.1-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5430d89bcbcb00a46fcd92c7cfc7cf624a9bb3231b468745b69d48cf75eb7eb2
|
|
BLAKE2b-256 checksum How to use checksums |
d8794cb235e78c9de54a1846656e884bfbaef3cb5fb466fe35289054eb5471d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / spaday-0.13.1-cp311-abi3-manylinux_2_28_aarch64.whl
| Download URL | spaday-0.13.1-cp311-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
882954f3cc64b743d3c45f5fcbbff22bcf033f446640e7e3865b8dad9b8d7af6
|
|
BLAKE2b-256 checksum How to use checksums |
135e607bcd550c9538e81c6639d493416afc6b300da273ffdf567e15e14a3234
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / spaday-0.13.1-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | spaday-0.13.1-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dbeee390ea28f5886523d180ddeb7317fb6ec85af4a8d07216da47535e04bc2f
|
|
BLAKE2b-256 checksum How to use checksums |
2fd562596fb8594c14bd0f60fdd1ee11bce5fd30585189edecc8a609a8461209
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for spaday 0.13.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.