0.8.21AUGUST 2026

SETUP · CLEANUP · OWNER

Record every effect.
Preserve every lifetime.

Effects now cross a deterministic JSON-safe source boundary with explicit setup, cleanup, dependencies, component and keyed ownership, provenance, and Worker edges.

170/170Tests passing
0 BRuntime graph delta
4Parity builds
01

WHAT CHANGED

Make effects explicit.
Keep lifecycle behavior.

EFFECT IR

Complete records

Setup handlers retain cleanup, ordered direct and derived dependencies, subscriptions, snapshots, and keyed-item fields.

OWNERSHIP

Lexical provenance

Components and keyed blocks retain effect ownership through local and imported row specialization.

WORKERS

Explicit graph edges

Relative Worker rewriting returns callback and edge results, and rendered emission derives only from EffectIR.

ANALYSIS

Focused validation

Dependency classification and cleanup-owned browser resource validation live in the effect analyzer.

OUTPUT

Byte parity

The complete site and effect, keyed-effect, and Worker-effect builds match 0.8.20 before release content.

RUNTIME

Same lifetimes

Build-time rendering still owns concrete IDs, mounting, stale-write invalidation, and cleanup order.

UPGRADE

Make ownership explicit. Keep effects exact.

$npm install @kudzujs/core@^0.8.21