# zerolith

Full framework. Zero guesswork. Routing, forms, rendering, and i18n, with clear patterns for you and your agent.

## Start

```sh
npx @zerolith/cli@alpha new my-app
cd my-app
npm run dev
```

## Features

- [Fine-grained signals](/guide/signals/): an update reaches only its bindings.
- [HTML templates](/guide/templates/): they run in the browser with no compiler.
- [A typed router](/guide/routing/): loaders, head tags, and plain anchors.
- [Native forms](/guide/forms/): fetch, pending state, and field errors.
- [Server rendering and hydration](/guide/server-rendering/): on Request and Response.
- [Coded diagnostics](/e/): every error names its cause and fix.
- [One command line](/guide/command-line/): start, develop, bundle, and preview.
- [Ready for coding agents](/guide/agents/): every new project holds an AGENTS.md and the zerolith skill.

## Packages

- [zerolith](/guide/): Signals, html and css templates, rendering, hydration, server rendering, custom elements, and coded diagnostics
- [@zerolith/router](/guide/routing/): Route table, loaders, head tags
- [@zerolith/forms](/guide/forms/): Fetch, pending state, field errors
- [@zerolith/client](/guide/client/): Typed calls from OpenAPI
- [@zerolith/i18n](/guide/i18n/): Locales and compiled messages
- [@zerolith/a11y](/guide/accessibility/): Focus, announcer, preferences
- [@zerolith/otel](/guide/observability/): Spans for navigation and requests
- [@zerolith/cli](/guide/command-line/): new, dev, build, preview, doctor, skill
- [@zerolith/vite](/guide/vite/): The build passes and hot replacement
- [@zerolith/test](/guide/testing/): Mount, settle, hydration checks
- [@zerolith/devtools](/guide/dev-tools/): Inspector and Performance tracks

## Characteristics

| 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 |

## Learn

- [Tutorial](/learn/): Build a packing list from an empty folder to a deployed app, one idea per step.
- [Guide](/guide/): Every concept with its one pattern and an example that runs as a test.
- [Playground](/playground/): Edit zerolith in the browser, see it run, and share a link to what you made.
- [Reference](/reference/zerolith/): Every export of every package, generated from the source.
- [Coding agents](/guide/agents/): What an agent reads in a zerolith app, the AGENTS.md and the zerolith skill, and when.

## Revisions

- 0.1.0-alpha.7, 2026-11-01
- 0.1.0-alpha.6, 2026-11-01
- 0.1.0-alpha.5, 2026-10-31
- 0.1.0-alpha.4, 2026-10-30
- 0.1.0-alpha.3, 2026-10-30
- 0.1.0-alpha.2, 2026-10-30
- 0.1.0-alpha.1, 2026-10-29
