0.12Release notes

Latest release · [email protected] · alpha

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.

Quickstart

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.

This site, gzip

This page14 KB
A page with no islands0 KB

Same counter app: first-load JS, uncompressed

Nowaki21.6 KB
Astro23.1 KB
Next.js app router103.0 KB

Same counter app: dev server ready, cold

Nowaki74 ms
Astro544 ms
Next.js1374 ms

One click, zero component JavaScript.

A live island keeps its state on the server. Press it.

Server state liked: falseliked: trueJavaScript this demo uses 0 bytes
  1. Click

    A ~2 KB runtime, no component code.

  2. WebSocket

    To the Rust server.

  3. Re-render

    Node renders the island.

  4. Patch

    HTML back down the socket.

  5. Morph

    Applied in place.

Simulated in CSS, not to scale.

Write a route. Mark an island. Ship.

All features in the docs
Islands, zero JS by default

Pages render to HTML. Only the components you mark ship JavaScript.

File-based routing

Layouts, middleware, loaders, actions and API routes, one file each.

A Rust toolchain

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.

FeatureNowakiNext.jsAstro
Live islands, zero client JSOnly NowakiJetstreamRSC ships ReactServer Islands render once
ToolchainRust (oxc)Turbopack (SWC)Vite, Rolldown
JavaScript by defaultZero, islands onlyReact and hydrationZero, islands only
Full-stack appLoaders, actions, APIMatureGrowing
MaturityAlphaMatureMature

Server functions, streaming SSR and deploy adapters exist in all three.

Where it fits, and where it stands.

Read the roadmap

A 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

Start with one command.

Read the quickstart