$ the-wire · showcase
Suspense cleanup fixes, test-utils stubs by registration key
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
Vue core closed out a batch of Suspense lifecycle bugs while test-utils learned to stub globally registered components by their registration key, not just their name.
fix(compiler-sfc): respect catch and switch lexical scopes (fix #16098) vuejs/core
Reactive props destructuring could rewrite a shadowing local in catch patterns and switch cases into a prop access, and catch parameter defaults could see body declarations too early; the compiler now respects those lexical scopes. If you destructure props and rely on locals shadowing them inside try/catch or switch, this fixed the wrong value being read.
fix(#2541): stub globally registered components by their registration key vuejs/test-utils
A component registered with `app.component()` under a key that differs from its `name`, like naive-ui's `NButton` for `Button`, could only be stubbed by the name; the stubs transformer now also matches the key from the app registry, between the local registration key and the name, using a map built once per app.
fix(suspense): drop the unmount hooks of a pending branch when the boundary is unmounted vuejs/core
Unmounting a Suspense boundary with a pending branch no longer leaves its unmount hooks queued; late events from discarded components are ignored while deferred cleanup effects still run when the parent boundary resolves.
fix(suspense): keep the timeout counting when the root is switched again while pending vuejs/core
Switching the root again while pending used to reset the countdown; the original timeout now continues so the current fallback appears when expected, and scheduled timeouts no longer linger after a boundary resolves or unmounts.
fix: rewrite modules without a string editor vuejs/repl
The REPL's module compiler imported its string editor from `vue/compiler-sfc`, which is not part of that package's API and is removed in core; it now collects edits by offset and builds the output once. Also landed: a11y fixes for devtools timeline layers, state entry toggles and pages route actions, a `VPLastUpdated` colon spacing fix, and a rollup bump to 4.67.4.