stoneware

Documentation

Everything, in 24 pages

Stoneware is small on purpose. If a page here feels long, that is a bug in the page rather than a sign of depth.

Source, issues and releases: stoneware-dev/stoneware-core

What it solves

The specific problems Stoneware exists for — and the ones it does not.

Quick start

Scaffold a project, run it, and understand what the two directories mean.

What gets generated

Every file create-stoneware writes, what it is for, and what a build adds.

How it works

The path a request takes, and what hydration does to the DOM.

Routing

File-based, Next.js-style conventions resolved by Bun's own router.

Islands

How a component earns its JavaScript, and what hydration actually does.

When islands hydrate

client:visible, client:idle and client:media — and what a page stops downloading.

Head and images

Per-page metadata, and an <Image> that fixes layout shift without a build pipeline.

SEO and sharing

One seo() call for search engines, every social network, and rich results.

Styling

Co-located CSS, collected by the build, with no import and no link tag to maintain.

Error pages

Custom 404 and 500 pages, and the three properties that hold whether or not you write them.

Error boundaries

Lose one subtree instead of the whole page, without losing the error.

Server actions

Form handling where CSRF verification is structural, not a decorator.

Middleware and APIs

One file that runs on every request, and what changed for API routes.

Databases

Where db.ts goes, where queries run, and the one place they must never.

Security defaults

What is on before you configure anything, and why it cannot be off by accident.

CLI and builds

Dev server, production build, and what each command actually emits.

Deploying

A checklist, one decision, and a walkthrough per platform — server or static, Vercel or Cloudflare.

Static export

Prerender the whole site to files any host can serve, and know exactly which pages cannot go.

Benchmark

The same 16-page site built in Stoneware, Astro and Next.js, measured.

What's new

0.1.7 — deployed sites keep their CSS, third parties get a policy that extends, the export checks its own links, and errors name the component.

v0.1.6

Error boundaries, a request hook, a request path about three times faster, and a dev server that stopped breaking itself.

v0.1.4 & v0.1.5

The two deploy releases — why a build would not run where it was not built.

Past releases

What shipped in 0.1.3 and 0.1.2, and what each change replaced.