Skip to content

Kudzu 0.7.26 - React-shaped migration and faster lists

Choose a tag to compare

@bunzzeok bunzzeok released this 04 Aug 05:59
· 36 commits to main since this release

Kudzu 0.7.26 broadens ordinary React-shaped migration input and removes repeated keyed-row cleanup scans, making the matched 500-card search faster than React without adding a VDOM, hydration, or a retained component tree.

New in 0.7.26

  • JSX typing accepts React 19 ReactNode-shaped component output while preserving the compile-time element model.
  • Intrinsic DOM handlers retain contextual event typing through migration-compatible JSX declarations.
  • Direct setters and one-call value-adapter callbacks may cross one supported component boundary for ordinary controlled inputs.
  • Imported static collections remain analyzable through TypeScript-only wrappers such as as const.
  • Collection selectors cache state reads and avoid temporary arrays in hot expression paths.
  • Proven-safe keyed rows release binding and condition registrations directly by state ID instead of rescanning every removed subtree.
  • Effectful, nested, and shared-text rows retain the existing DOM-owned unmount path.
  • The complete suite passes 118/118 tests, including remove-all, unseen-key remount, and fresh row-state coverage.

Performance

A final isolated benchmark used one warm-up and 21 alternating fresh-profile samples:

  • Filter 500 cards to one: Kudzu 13.5 ms, React 13.9 ms - Kudzu is 2.88% faster.
  • Kudzu filter improvement from the preserved baseline: 52.30%.
  • Clean typecheck and build: Kudzu is 11.90% faster.
  • Keyed row-local state toggle: Kudzu is 7.02% faster.
  • Aggregate gzip JavaScript: Kudzu is 87.29% smaller.

Boundary

Indexed row release is compiler-selected only when cleanup can be proven from row-owned state IDs and the row has no effects, nested lists, or shared text targets. Setter adapters remain limited to one supported component boundary and one direct intrinsic handler call. React remains migration input only and is never emitted or executed.

Upgrade

npm install @kudzujs/core@^0.7.26

create-kudzu@0.1.81 scaffolds projects against the new core release.