Full-stack like Next.js.Islands like Astro.
Routes, loaders and actions, rendered to HTML. Only the islands you mark ship JavaScript, and a Jetstream island ships none.
No Rust needed. Alpha: the API may still change.
New in this release
Lazy hydration
Astro-style client:* directives.
Typed end to end
Routes, env and client:*.
Images optimized in Rust
No sharp, no native addon.
Vercel adapter
Build Output API v3.
This page ships 14 KB of JavaScript.
Two copy buttons are the only code that runs here. The wind is CSS.
One click, zero component JavaScript.
A live island keeps its state on the server. Press it.
Click
A ~2 KB runtime, no component code.
WebSocket
To the Rust server.
Re-render
Node renders the island.
Patch
HTML back down the socket.
Morph
Applied in place.
Simulated in CSS, not to scale.
Write a route. Mark an island. Ship.
All features in the docsPages render to HTML. Only the components you mark ship JavaScript.
Layouts, middleware, loaders, actions and API routes, one file each.
oxc parses, bundles and hashes. Node renders with Preact, so npm packages work.
Next to Next.js and Astro.
Where it differs, and where it doesn't.
| Nowaki | Next.js | Astro | |
|---|---|---|---|
| Live islands, zero client JSOnly Nowaki | Jetstream | RSC ships React | Server Islands render once |
| Toolchain | Rust (oxc) | Turbopack (SWC) | Vite, Rolldown |
| JavaScript by default | Zero, islands only | React and hydration | Zero, islands only |
| Full-stack app | Loaders, actions, API | Mature | Growing |
| Maturity | Alpha | Mature | Mature |
Server functions, streaming SSR and deploy adapters exist in all three.
Where it fits, and where it stands.
Read the roadmapA good fit
- Pages that are mostly content and server data.
- Forms and auth without a client runtime everywhere.
Not yet
- Apps where nearly everything is stateful.
- Production-critical work: it is alpha.
Before 1.0
- State-preserving HMR
- Scoped CSS for .tsrx islands
- RSC-style streaming boundaries
- A stable public API