Build1 distinct publisher3 min readUpdated
A six-route commerce app rebuilt in Kudzu, Astro, React Router, TanStack Start and Next.js argues hydration cost is the number to defend. The harness is open source, so the claim is attackable.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Someone rebuilt the same commerce store five times, in Kudzu, Astro with React islands, React Router, TanStack Start and Next.js App Router, and published the benchmark as open source [1][2]. The interesting part is not which one won but the choice of yardstick: the harness treats time-to-first-text as close to useless and asks instead when a control actually works, and what the browser had to download to get there [10].
The reasoning is sound. All five implementations emit complete HTML [8], so the content arrives at roughly the same moment in every version [13]. The Largest Contentful Paint element is generally a product image, and the image bytes are identical between implementations by design, which means LCP does not separate these builds in this fixture [9]. A benchmark whose dominant measurement is the same JPEG five times is a benchmark about a JPEG. The gap that does open up is between seeing the interface and being able to use it reliably [14].
So the instrumentation is behavioural: contentReady, actReady, stepLatency, navigation latency, dropped early clicks, total bytes transferred across the session, JavaScript downloaded per route, and behaviour when JavaScript is delayed or partly unavailable [10]. The author explicitly refuses framework-internal "hydration complete" signals and lets the browser decide [11]. The main run is Slow 4G with a 4x CPU slowdown, replaying the same interactions five times per implementation [12]. Six routes are covered: home, search with filtering and sorting, collections, product details, policy content, and checkout [5], with product options, cart adds, filtering, sorting, forward and back navigation all in the scripted path [6]. That is thirty route builds held to one behavioural contract [24][7].
The comparative medians are presented as tables that the text supplied to us does not carry; the only absolute figure stated in prose is that Kudzu's compiler-generated behaviour is available after roughly 250 ms, with the React-based implementations waiting on more client-side machinery to arrive and execute [25][15][16]. Treat the ordering as the claim and the exact milliseconds as unverified here. Two methodological details are worth more than the table anyway. JavaScript is measured from observed network activity rather than by crawling the import graph, because Astro can pull island runtime code through dynamic imports that a naive static crawler misses [17]. And session transfer is measured with prefetching included and the cache carried forward, on the argument that users navigate and reuse rather than reload isolated pages [21].
To the author's credit, the result is not a sweep. On listing to product navigation, React Router and TanStack Start beat Kudzu's document navigation, and the post says plainly that removing a persistent application runtime does not make every operation faster, it moves where the cost sits [19][20]. Kudzu's own search route ships more JavaScript than its siblings because it needs keyed-list behaviour, while the other routes do not pay for it [18].
The obvious caveat: the benchmark was written by Kudzu's author, who says the goal was not a synthetic fixture Kudzu could win [4][23]. That is why the open-sourcing matters more than the numbers.
Watch whether anyone outside the project runs the harness and reports back, and whether actReady and stepLatency survive contact with hostile reviewers, since a metric that only its inventor can compute is not yet a metric. Also watch the degradation matrix: six capabilities under three conditions, one of them JavaScript fully blocked [22]. That table, not the 250 ms, is where a commerce team's risk actually lives.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The large difference appears between seeing the interface and being able to reliably use it.
For the React-based implementations, more client-side machinery has to arrive and execute before interactivity.
The author states that removing a persistent application runtime does not make every operation faster; it changes where the costs occur.
The author built the same commerce application five times: in Kudzu, Astro with React islands, React Router, TanStack Start, and Next.js App Router.
The author describes Kudzu as a compiler-first framework that turns a statically analyzable subset of React-shaped TSX into static HTML and route-specific JavaScript without shipping React, a virtual DOM, or a hydration runtime.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed self-run methodology, unpublished numbers
Methodology is unusually explicit for a framework comparison — defined browser-observable signals, a stated throttling profile with five replays and medians, network-derived JavaScript accounting, session-level transfer with cache carry-forward, and a degradation matrix — and the harness is open source, which makes the claim falsifiable. Against that: a single source, authored by the framework's own creator, with the median interactivity, per-route gzip, navigation-latency and session-transfer tables absent from the captured text, leaving roughly 250 ms as the only absolute figure. No independent replication, no hardware or variance disclosure.
No adoption signal beyond the author's own benchmark
The supplied source contains no deployment, download, star, customer, or usage disclosure for Kudzu or for any of the four comparison frameworks in this fixture. The only observable event is the author publishing his own benchmark and harness, which is not adoption. Scoring adoption would require inventing facts the source does not provide.
Mildly overstated, but self-limited by the author
The headline framing — hydration cost as the number to defend, roughly 250 ms to usable controls — rests on one self-run, unreplicated benchmark whose tables are not in the captured text, which pushes the gap positive. It stays small because the author repeatedly argues against his own advantage: SPA routers navigate faster, no implementation keeps full interactivity without JavaScript, cost is relocated rather than removed, Kudzu has the steepest build-scaling curve, and he explicitly declines to call the result proof that Kudzu scales.
Framework author benchmarking his own framework
The benchmark's designer, implementer, scorer and publisher is the creator of one of the five entrants, published on a self-publishing developer platform with no editorial gatekeeping. He chose the fixture, the framework configurations, the metrics that discriminate (actReady, per-route JavaScript) and the metric he argues away (LCP). That is a maximal structural conflict, partially mitigated by open-sourcing the harness and disclosing the build-scaling regression rather than hiding it.
Single self-interested source, no replication
Confidence is limited by structure rather than by sloppiness: one publisher, one author, one run of one fixture, with the numeric results unavailable in the supplied text and no third-party reproduction. The transparent methodology, the open harness and the author's disclosed counter-results raise it above the floor, but the directional finding — compiler-first output reaches usable interactivity earlier under constrained networks while paying at navigation and build time — should be treated as a hypothesis awaiting independent replication.