The Wire · Showcase
REACTIVITY BUG FIXED AS CORE TACKLES ORPHAN EFFECTS AND TYPE RESOLUTION
By RepoJournal · Filed · About Vue.js
Vue core shipped a critical fix for effects leaking after scope shutdown during async setup — the kind of silent bug that haunts Suspense components.
The reactivity fix [1] prevents orphan effects from remaining active after a scope stops, a particularly nasty edge case when top-level await runs inside Suspense. This closes a loophole that would trigger spurious dev warnings and leave cleanup handlers dangling. Compiler-sfc also got a correctness improvement [2] resolving type re-exports inside declare global blocks — a fix that unblocks Nuxt's runtime type inference and ensures source dependencies track correctly across cache reuse. On the build side [3], swc bumped from 1.15.30 to 1.15.33, and jsdom landed a minor version bump [4] to ^29.1.1 for test stability. Over in test-utils, the team is keeping dependencies fresh: lint-staged jumped to v17 [5], oxfmt reached v0.48.0 [6], and Vue compat updated to 3.5.34 [7]. A type export for GlobalMountOptions [8] also shipped to close a gap in test harness tooling.
Action items
- → Pull the reactivity fix [ref:2] if you're using Suspense with async setup — this prevents effect leaks vuejs/core [plan]
- → Upgrade to the latest core if you depend on declare global type re-exports [ref:3] vuejs/core [plan]
- → Update test-utils dependencies — lint-staged v17 [ref:6] is a major bump, review breaking changes vuejs/test-utils [monitor]
References
- [1] fix(reactivity): prevent orphan effect when created in a stopped scope ↗ vuejs/core
- [2] fix(compiler-sfc): resolve type re-exports inside declare global ↗ vuejs/core
- [3] chore(deps): update build ↗ vuejs/core
- [4] chore(deps): update dependency jsdom to ^29.1.1 ↗ vuejs/core
- [5] chore(deps): update dependency lint-staged to v17 ↗ vuejs/test-utils
- [6] chore(deps): update dependency oxfmt to v0.48.0 ↗ vuejs/test-utils
- [7] chore(deps): update all non-major dependencies ↗ vuejs/test-utils
- [8] fix: export GlobalMountOptions type (#2851) vuejs/test-utils
FAQ
- What changed in Vue.js on May 7, 2026?
- Vue core shipped a critical fix for effects leaking after scope shutdown during async setup — the kind of silent bug that haunts Suspense components.
- What should Vue.js teams do about it?
- Pull the reactivity fix [ref:2] if you're using Suspense with async setup — this prevents effect leaks • Upgrade to the latest core if you depend on declare global type re-exports [ref:3] • Update test-utils dependencies — lint-staged v17 [ref:6] is a major bump, review breaking changes
- Which Vue.js repositories shipped on May 7, 2026?
- vuejs/core, vuejs/test-utils