Full framework. Zero guesswork.
Routing, forms, rendering, and i18n, with clear patterns for you and your agent.
npx @zerolith/cli@alpha new my-app
Features
- Fine-grained signals: an update reaches only its bindings.
- HTML templates: they run in the browser with no compiler.
- A typed router: loaders, head tags, and plain anchors.
- Native forms: fetch, pending state, and field errors.
- Server rendering and hydration: on Request and Response.
- Coded diagnostics: every error names its cause and fix.
- One command line: start, develop, bundle, and preview.
- Ready for coding agents: every new project holds an AGENTS.md and the zerolith skill.
import { computed, html, signal } from "zerolith";const count = signal(1);const doubled = computed(() => count.get() * 2);function Counter(){const add = () => count.set(count.get() + 1);return html`<p>Count: ${count}, doubled: ${doubled}</p><button @click=${add}>Add one</button>`;}Count: 1, doubled: 2
- Text nodes changed
- 0
- Elements created
- 0
- Counter() calls
- 1
Everything an application needs
One core and the packages around it. Each package is optional, has its own guide, and shares the core's signals, so nothing needs an adapter.
Characteristics
Each value is computed when this site is built or checked by the test suite, so it describes the version in the header.
| Characteristic | Value | How it is checked |
|---|---|---|
| Core size | 9,896 B gzip, against a budget of 10,240 B | npm run size bundles and minifies the production build and fails over budget |
| Runtime dependencies | 0 | Counted from the manifests of the 9 runtime packages when this site was built |
| Documented exports | 225 across 19 modules | The docs build fails on an export without a doc comment |
| Diagnostic codes | 33, each with a page | Generated from the runtime's catalog |
| Build step | Optional: an import map, or zerolith build | The test suite runs the same files unbundled and bundled |
| Content Security Policy | script-src 'self' with Trusted Types and no unsafe-eval | A browser test runs both builds under that policy |
| Node | 24 or newer, for the command line and the build tools | engines in every package |
| License | Apache-2.0 | Every package and the crate |
Start a project
Node 24 or newer is required. The command writes a starter that asks for the language, the build tool, and the inspector; --yes takes every default.
To add zerolith to a project you have, install zerolith@alpha and the packages you need. To serve with no build step at all, zerolith importmap writes an import map with integrity hashes.
npx @zerolith/cli@alpha new my-app
cd my-app
npm run devLearn zerolith
- TutorialBuild a packing list from an empty folder to a deployed app, one idea per step.
- GuideEvery concept with its one pattern and an example that runs as a test.
- PlaygroundEdit zerolith in the browser, see it run, and share a link to what you made.
- ReferenceEvery export of every package, generated from the source.
- Coding agentsWhat an agent reads in a zerolith app, the AGENTS.md and the zerolith skill, and when.
Revision history
zerolith is in alpha: the API may change until it is frozen for 1.0, and the roadmap lists what remains.
| Version | Date | Notes |
|---|---|---|
| 0.1.0-alpha.7 | 2026-11-01 | Release notes |
| 0.1.0-alpha.6 | 2026-11-01 | Release notes |
| 0.1.0-alpha.5 | 2026-10-31 | Release notes |
| 0.1.0-alpha.4 | 2026-10-30 | Release notes |
| 0.1.0-alpha.3 | 2026-10-30 | Release notes |
| 0.1.0-alpha.2 | 2026-10-30 | Release notes |
| 0.1.0-alpha.1 | 2026-10-29 | Release notes |