preswald
Preswald is a Python-based tool that packages interactive data apps into single HTML files that run entirely in the browser using WebAssembly. It bundles Python code, data, and visualizations (via Pyodide, DuckDB, Plotly, Matplotlib) into portable, offline-capable files—no server or dependencies required.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | StructuredLabs/preswald |
| Owner | StructuredLabs |
| Primary language | Python |
| License | Apache-2.0 — OSI-approved |
| Stars | 4.3k |
| Forks | 646 |
| Open issues | 329 |
| Latest release | v0.1.59 (2025-06-05) |
| Last updated | 2026-06-11 |
| Source | https://github.com/StructuredLabs/preswald |
What preswald is
Preswald is a static-site generator that compiles Python applications to WebAssembly via Pyodide, embeds DuckDB for SQL queries, and renders reactive UIs with prebuilt components. Apps are exported as self-contained HTML files with a dependency DAG for reactive state management, executable entirely in the browser.
Get the preswald source
Clone the repository and explore it locally.
git clone https://github.com/StructuredLabs/preswald.gitcd preswald# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Python code must be compatible with Pyodide; some native extensions (NumPy compiled modules, system calls) may not work. Test dependencies early in development.
- Data bundling is baked into the HTML export; large datasets inflate file size. Consider data sampling or pre-filtering for distribution.
- Reactive state relies on a DAG of dependencies; complex conditional logic or circular dependencies may require careful refactoring.
- Browser storage and memory are finite; monitor performance with browser DevTools. No built-in caching or pagination strategy for large result sets.
- Secrets and API keys in preswald.toml are bundled in the HTML; keep sensitive credentials out of exports or use client-side authentication flows (e.g., OAuth).
When to avoid it — and what to weigh
- Real-time multi-user collaboration required — Preswald exports static, single-user HTML files. No built-in support for live websockets, server-side state, or concurrent user sessions. For collaborative dashboards, consider Streamlit, Dash, or Voila with a backing server.
- Large dataset processing (>500MB+) — Browser memory and WASM runtime constraints limit practical dataset size. Apps run client-side with no lazy loading; massive datasets may cause performance degradation or crashes. Requires server-side data processing.
- Complex backend integrations needed — No built-in server component means direct API calls, scheduled jobs, authentication flows, or database connections must be pre-computed or handled via CORS-enabled endpoints. Traditional web frameworks are more suitable for enterprise integration.
- Frequent app updates and version control — Each export creates a new HTML file; no built-in versioning, update mechanisms, or staged rollout. Distribution and version management must be handled separately (e.g., file hosting, CDN).
License & commercial use
Licensed under Apache License 2.0 (Apache-2.0), a permissive OSI-approved license. Allows commercial use, modification, and distribution with minimal restrictions (Apache 2.0 requires attribution and includes an explicit patent grant).
Apache 2.0 is a permissive, business-friendly license. Commercial use is explicitly allowed. Derivative works and proprietary applications are permitted; you must retain license notices and include a copy of the license. No trademark rights are granted. Review internal policy on open-source compliance, but this license poses no known commercial barriers.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Low |
| DEV.co fit | Good |
| Assessment confidence | High |
All code and data run client-side in the browser, eliminating server-side attack surface. However, Pyodide/WASM security depends on browser sandbox robustness; user caution is required for arbitrary code execution. Bundled secrets (API keys, credentials in secrets.toml) are embedded in HTML and visible to any user with file access—do not include sensitive credentials. CORS policies restrict external API calls; verify cross-origin requests are intentional. No input validation or output encoding guarantees are documented; app author bears responsibility for XSS/injection prevention.
Alternatives to consider
Streamlit
Mature Python framework for interactive data apps; requires a server but scales to thousands of users, supports real-time collaboration, and integrates with cloud platforms (Streamlit Cloud, AWS, GCP). Better for production dashboards and enterprise deployments.
Plotly Dash
Full-featured Python web framework with client-server architecture, advanced callbacks, and enterprise support. Higher complexity but essential for multi-user apps, complex state management, and backend integrations.
Jupyter Notebooks + Voila
Convert Jupyter notebooks to interactive dashboards with Voila. Familiar notebook UX but requires deployment infrastructure. Good for analysts already in Jupyter; less portable than Preswald.
Build on preswald with DEV.co software developers
Preswald is ideal for analysts, data engineers, and AI teams shipping interactive reports and inspection tools. Start with preswald init, explore the docs, and export your first app in minutes.
Talk to DEV.coRelated open-source tools
Surfaced by semantic similarity across the DEV.co open-source index.
Related on DEV.co
Explore the category and the services that help you build with it.
preswald FAQ
Can I share a Preswald app with someone who has no technical skills?
What happens to my data when I export a Preswald app?
Can I use Preswald for real-time dashboards or live data feeds?
What Python libraries are supported?
Work with a software development agency
DEV.co is a software development agency delivering custom software development services to companies building on open source. Our software developers and web developers design, integrate, and ship production systems — spanning web development, APIs, AI, data, and cloud. If preswald is part of your ai frameworks roadmap, our team can implement, customize, migrate, and maintain it.
Ready to build shareable data apps?
Preswald is ideal for analysts, data engineers, and AI teams shipping interactive reports and inspection tools. Start with preswald init, explore the docs, and export your first app in minutes.