Keep ordinary refs
Author top-level useRef(null) and useRef(0) values with direct .current access.
ISOLATE · OWN · CLEAN
Effect-exclusive mutable refs become ordinary setup-invocation closures. SDK handles, WebSockets, generation tokens, and animation frames keep familiar React-shaped source while Kudzu retains exact ownership.
EFFECT-PRIVATE OWNERSHIP
Author top-level useRef(null) and useRef(0) values with direct .current access.
The compiler moves exclusive refs into the inline setup closure and removes component captures.
Dependency changes invalidate and clean the old closure before creating a distinct replacement.
Mount effects preserve their closure across persisted pagehide and resume through authored listeners.
E2B terminal and WebSocket fixtures verify generation, listeners, stale callbacks, and exact close behavior.
Cross-effect/event refs, aliases, escaped objects, nonzero initializers, and missing cleanup invalidation remain diagnosed.
UPGRADE
npm install @kudzujs/core@^0.8.52