npm / @vue/reactivity
@vue/reactivity
What changed in @vue/reactivity 3, from its official release notes, upgrade guides and advisories. Also covers @vue/compiler-sfc, @vue/server-renderer. Sources checked 2026-10-24.
1 security1 performance22 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@vue/reactivity 324 changes
Security 1
@vue/server-renderer: XSS via missing CR in attribute-name blacklist
Performance 1
Type checks are skipped for cached proxies, improving reactivity performance.
Fixes and other changes 22
Reactivity no longer mutates native array iterators.
A once watcher now stops when its callback throws.
Shallow collection behavior is preserved.
Dependencies are no longer tracked in watcher callbacks run inside another effect.
Array copy methods now preserve readonly wrappers.
Map and Set values are now compared correctly in reactivity.
Fixes handling of effects removed while an effect scope is stopping.
Effects are no longer triggered when setting a reactive value fails.
Triggers the immediate callback for empty watch sources.
Preserves the watch callback’s return value when the callback is wrapped for once: true.
Prevents an orphan effect when an effect is created in a stopped scope.
Effect scopes are unlinked correctly when off is called out of order.
Types now allow customRef to have different getter and setter types.
shallowReactive now uses private branding in its types.
Normalizes property keys before dependency lookup and improves types.
Preserves reactivity when calling reduce on reactive arrays.
Handles the edge case of a Set initialized with reactive values.
Avoids duplicate raw and proxy entries when adding values to a Set.
EffectScope now has the __v_skip flag to prevent reactive conversion.
Collection iteration now inherits iterator instance methods, fixing behavior for developers iterating reactive collections.
Iterated array items are now wrapped correctly to preserve their readonly status.
Fixes edge cases involving ref unwrapping.