chore: release packages - #210
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/master
branch
8 times, most recently
from
August 30, 2026 16:26
4404746 to
217cc29
Compare
github-actions
Bot
force-pushed
the
changeset-release/master
branch
from
August 31, 2026 08:52
217cc29 to
ab3eb43
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
@rabjs/observer@9.4.0
Minor Changes
map.set(k, v)for an existing key) now notify value-side iteration dependencies (forEach/values/entries/for...of/size), which previously never re-ran and kept reading stale data.Map.keys()iterations moved to a separate key-side bucket (Vue'sMAP_KEY_ITERATE_KEYdesign) so they are still only triggered by add/delete/clear, not by value overwrites (observer: Map 已有 key 的值覆盖不通知迭代依赖,forEach/values 永久读到脏数据 #211). Forged[object Map]plain objects still use the object set path and do not re-runownKeysobservers.Patch Changes
batch(fn)no longer lets a flush-time reaction error replace the callback's own in-flight exception. Previouslytry { batch(mutate) } catchcaught the reaction's error while the callback's original error was silently dropped; the flush error is now attached ascauseon the original error when possible (observer: batch() 的 flush 错误会吞掉回调自身的异常 #212).notify(target, key)now unwraps a proxy-form key the same way collection traps do. Passing an observable object as a Map/Set key tonotifypreviously looked up a fresh WeakRef that never matched the registered (raw-identity) dependencies, silently notifying no one (observer: notify() 不解包 proxy 形式的 key,静默漏通知 #214).observe(r)on a previously unobserved reaction now resets theunobservedflag, restoring it as a live reaction that collects dependencies and reacts to changes. Previously the reuse path returned a reaction that executed once (appearing revived) but never tracked dependencies again, silently ignoring all subsequent changes (observer: observe() 复用已 unobserve 的 reaction 时不重置状态,返回静默失效的 reaction #215).runAsReactionreleased all connections up front and a throw left only keys read before the throw point, so later keys went silent until the next successful run (observer: reaction 重跑抛错后只保留抛错点之前的部分依赖,后续变更漏通知 #213).@rabjs/react@9.4.0
Minor Changes
useReactiongains a two-function (MobXreaction-style) overloaduseReaction(dataFn, effect, { fireImmediately }): the data function collects dependencies on mount without running the effect, and the effect runs with(current, previous)only after dependencies change. This provides the "don't run on mount" semantics that the single-function form'simmediate: falsecannot express, since the effect and dependency collection share one function there (react: useReaction({ immediate: false }) 仍在挂载时执行副作用,选项实际是空操作 #200). The single-function form'simmediateJSDoc now documents this honestly.Patch Changes
bindServicesnow destroys its container on unmount instead of waiting for the FinalizationRegistry/GC fallback. Service cleanup (event listeners, debounce/throttle timers) previously stayed pending for an unbounded window. Destroy is scheduled on a microtask so React StrictMode's fake unmount/remount does not tear down a live container; the GC fallback is kept for concurrent renders that never commit (react: bindServices 卸载时不销毁容器,Service destroy 延迟到 GC 之后 #218).useDomainContextnow syncs its internal ref on every render, so consumers (useService/useContainer/useContainerEvents) followDomainContext.Providervalue changes instead of permanently resolving against the first-render container (react: useDomainContext 的 ref 永不更新,Provider 值切换后解析到旧容器 #217).bindServiceswith tuple-style service registrations,RSRoot/RSStrict) instead of the non-existentcreateDomain/Provider/createNestedDomainfunctions and the object-form{ identifier, factory }registrations that throw at runtime. The deadProviderOptions/ProviderResult/DomainComponenttypes and the brokentypes/window.d.tsare removed (react: domain README 记载的 createDomain API 不存在,bindServices 参数格式文档错误 #223).useAsObservableSourcenow wraps a shallow copy of the input instead of the original object, so passing React component props no longer throwsTypeError: 'set' on proxy: trap returned falsishin dev mode (React freezes props) (react: useAsObservableSource(props) 在 React dev 模式下直接崩溃(frozen props) #216). The caller's original object is never mutated.@rabjs/devtools@9.4.0
Patch Changes
@rabjs/rn-debug@9.4.0
Patch Changes
@rabjs/service@9.4.0
Patch Changes
cleanupAllMemos/cleanupAllDebounces/cleanupAllThrottlesnow walk the full prototype chain instead of only the direct prototype. Decorated members defined on a base class are cleaned up when a subclass instance is destroyed; previously their memo reactions kept running and debounce/throttle timers kept firing on destroyed instances (service: cleanupAllMemos/Debounces/Throttles 只扫直接原型,继承的装饰器成员 destroy 后泄漏 #221).@Debounce/@Throttlestate (timers, pending args,this, results) is now stored per instance instead of in the decorator closure shared by every instance of the class. Previously one instance's pending call was silently dropped when another instance invoked the same method, and destroying one instance cancelled every other instance's pending calls (service: @Debounce/@Throttle 状态闭包跨实例共享,destroy 互相取消 pending 调用 #220).@Injectcaches are now per-instance instead of shared across every instance of the class. Previously the first instance's resolved dependency (from whatever container it belonged to) leaked into all other instances, including cross-container and re-bound scenarios, and a manualseton one instance overwrote every other instance's injection (service: @Inject 的缓存闭包在所有实例间共享,跨实例/跨容器依赖污染 #219).$model.method.loadingis a boolean last-write flag (not a pending count) and$model.method.errorcannot be attributed under overlapping same-method calls.@rabjs/web-mcp@9.4.0
Patch Changes
@rabjs/rn-debug-server@9.4.0
@rabjs/shared@9.4.0
reactive-state@0.0.6
Patch Changes
@rabjs/website@9.0.6
Patch Changes