This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
ReleasePort's take
Light signalIn Zenbu.js v0.0.25, `client.update(fn)` batches multiple mutations into a single commit.
Why it matters: Reduces state update overhead and race conditions for apps performing batched writes; the change triggers a warning if mutation paths exceed 64 segments.
Summary
AI summaryMultiple mutations inside client.update(fn) are now committed as a single update.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
`vite.config.ts` can now live next to renderer code; closest config wins. `vite.config.ts` can now live next to renderer code; closest config wins. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Feature | Medium |
Plugin views automatically inherit host app's theme tokens and dark-mode toggle. Plugin views automatically inherit host app's theme tokens and dark-mode toggle. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Feature | Medium |
Multiple mutations inside `client.update(fn)` are committed as a single update. Multiple mutations inside `client.update(fn)` are committed as a single update. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Bugfix | Medium |
Advice registered with `view: "*"` now applies to every concrete view. Advice registered with `view: "*"` now applies to every concrete view. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Bugfix | Medium |
Advice with short module names matches full file path; ambiguous matches now throw. Advice with short module names matches full file path; ambiguous matches now throw. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Bugfix | Medium |
Concurrent `useCollection` subscribers no longer interfere when one unmounts. Concurrent `useCollection` subscribers no longer interfere when one unmounts. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Bugfix | Medium |
`useCollection` subscribes via `useSyncExternalStore`, eliminating inconsistent reads in React 18 concurrent mode. `useCollection` subscribes via `useSyncExternalStore`, eliminating inconsistent reads in React 18 concurrent mode. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Bugfix | Medium |
`client.update(fn)` emits a warning when mutation traversal exceeds 64 path segments. `client.update(fn)` emits a warning when mutation traversal exceeds 64 path segments. Source: llm_adapter@2026-05-23 Confidence: low |
— |
Full changelog
Features
vite.config.tscan now live next to your renderer code (e.g.packages/app/vite.config.ts) instead of being required next tozenbu.config.ts. Closest config to the renderer entrypoint wins.ae129fc- Plugin views automatically inherit the host app's theme tokens.
<View>iframes follow the host's dark-mode toggle and other theme changes without plugin-side code.005deab - Multiple mutations inside one
client.update(fn)are now committed as a single update. Subscribers see one new state, not one per mutation.93589d8
Fixes
- Advice registered with
view: "*"was not being applied to concrete views. It now applies to every view as documented.50d7e5b - Advice registered with a short module name (e.g.
"App.tsx") is matched against the full file path. Ambiguous matches (two files with the same suffix) now throw instead of resolving non-deterministically.319aa00(@rakshit9) - Concurrent
useCollectionsubscribers on the same collection no longer interfere. Previously, one consumer unmounting could drop data still in use by another.491af2b useCollectionnow subscribes viauseSyncExternalStore, eliminating inconsistent reads under React 18 concurrent rendering.93589d8client.update(fn)emits a warning when mutation traversal exceeds 64 path segments, surfacing accidental cyclic or non-plain inputs.0b0bc88
Contributors: @RobPruzan, @rakshit9
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Zenbu.js
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]