v0.16.30Binding target specializationRead release notes →

v0.16.30 COMPILER FRAMEWORK

React-shaped input.
Static-first output.

Kudzu analyzes TypeScript ASTs and specializes familiar components, hooks, routes, effects, and collections into complete HTML plus only the browser capabilities each route uses.

$npm create kudzu@latest my-app
● ● ●counter.tsx
import { useState } from "@kudzujs/core"

export default function Counter() {
  const [count, setCount] = useState(0)

  return <button onClick={() => setCount(count + 1)}>
    Grown {count} times
  </button>
}
COMPILED OUTPUTHTML + route capabilities
0Virtual DOM
0 BStatic page JS
directDOM patches
syncState semantics

QUICK START

From zero to HTML.

Create a project, enter the directory, install dependencies, and start growing.

01npm create kudzu@latest my-app
02cd my-app
03npm install
04npm run dev

THE COMPILER MODEL

Analyze syntax.
Ship capabilities.

01

Normalize

Ordered AST passes lower supported React, Router, hook, and control-flow shapes.

source → canonical TSX
02

Analyze

The transformer records state, effects, handlers, bindings, lists, and ownership.

semantics → descriptors
03

Generate

Complete HTML ships with only the route-specific capability ESM it references.

descriptors → HTML + ESM

MEASURED IN 0.16.8

Application behavior.
Measured output.

COMMERCE JS

4.2-9.9 KiB

Initial JavaScript received across six routes in the public 1,000-product fixture.

Astro + React: 60.6-61.1 KiB
RELIABLE CLICK

300 ms

First tested post-paint delay with zero lost add-to-cart attempts in seven sessions.

4x CPU · Chrome Slow 4G
RESILIENCE

15 / 18

Matched capabilities surviving blocked, delayed, or partially missing JavaScript.

five-framework commerce matrix

SYNCHRONOUS BY DEFAULT

Two setters.
Two changes.

Logical state updates immediately. DOM writes wait until the synchronous turn ends.

growth0
setCount(count + 1)