RepoJournal

$ cat vuejs/week/2026-11-02.log

Vue.js

Vue.js

the week in review · Nov 2 – Nov 8, 2026

Suspense cleanup fixes dominate Vue core's week

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

Six separate Suspense fixes landed alongside a router deprecation notice and test-utils changes that alter how stubs behave across apps.

64 commits 72 PRs merged 2 releases 6 briefings covered

all vuejs reviews →

fix(suspense): release parent dep on suspensible unmount vuejs/core

by maxymlyskov

When a nested `<Suspense suspensible>` is removed while it and its parent are both still pending, the parent never leaves its fallback and nothing is logged. The fix releases the parent's dependency on unmount, which matters if you gate suspensible boundaries behind `v-if` inside an outer boundary.

fix(suspense): resolve async deps whose pending cycle was discarded vuejs/core

by edison1105

Async components in Suspense branches that were switched away from and then revisited now resolve instead of hanging on a pending cycle that was already discarded.

fix(suspense): drop the unmount hooks of a pending branch when the boundary is unmounted vuejs/core

by edison1105

Unmount hooks attached to a boundary's pending branch are dropped when the boundary itself goes away, including for components that never finished becoming active.

fix(transition): switch modes around a keyed suspense boundary vuejs/core

by edison1105

Keyed Suspense boundaries get transition modes applied correctly, covering cases where either the content or the fallback branch is the one active. Out-in transitions keep their sequencing.

fix(runtime-core): render nothing for a component whose async setup rejects vuejs/core

by edison1105

A component whose async `setup` rejects now renders an empty placeholder rather than falling back to its template or triggering further work, so a failed loader shows nothing instead of stale markup.

fix(#2541): stub globally registered components by their registration key vuejs/test-utils

by ValentinYoushkevich

Libraries that register components under a key different from `name` (naive-ui's `NButton`, Arco's `AButton`) can now be stubbed by that key. The release notes describe the old behavior plainly: "`<n-button>` still renders the real naive" component.

fix: only apply stubs to the app being rendered vuejs/test-utils

by ValentinYoushkevich

`mount`, `shallowMount` and `renderToString` used to install stubs globally via `transformVNodeArgs` and never remove them, so other apps rendered later in the same test file were stubbed too, even after `unmount()`. Stubs are now scoped to the app being rendered.

fix(compiler-sfc): respect catch and switch lexical scopes (fix #16098) vuejs/core

by JoaoMarcos44

Reactive props destructuring in `compiler-sfc` could rewrite a shadowing local variable into a prop access, so catch patterns and switch cases read the prop instead of the local binding. Catch parameter defaults also saw body declarations too early.

$ ls vuejs/week/ # the briefings behind this review

Keep up with Vue.js in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

all vuejs reviews →