RepoJournal

$ cat vuejs/week/2026-10-26.log

Vue.js

Vue.js

the week in review · Oct 26 – Nov 1, 2026

TeleportStub lands in test-utils, followed by a patch-flag fix

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

♥

The same week brought compiler fixes for static boolean bindings in core and a rolldown-only VitePress build bug.

33 commits 30 PRs merged 2 releases 6 briefings covered

all vuejs reviews →

feat: add TeleportStub and support custom components as built-in stubs vuejs/test-utils

by simonyang08

The new `TeleportStub` API ships with three-way semantics settled in the discussion thread, and custom components can now serve as built-in stubs. It closes out the Teleport stubbing problem that had been open since #2628. The PR credits @victor141516 for the original analysis that set the direction.

fix: update the content of a teleport stubbed with a component vuejs/test-utils

by Valentin Yushkevich

The follow-up matters if you stub Teleport with a component: since #2946 the stub vnode kept Teleport's compiled patch flag, so optimized re-renders of the parent skipped it and the content went stale. The stub vnode now carries the BAIL patch flag.

fix(compiler-dom): preserve static boolean binding semantics vuejs/core

by edison1105

Constant boolean bindings in static content now render correctly, with false-like values handled rather than collapsed. It resolves three linked issues in one change, so templates relying on explicit `:foo="false"` should read as written.

docs: remove stale timeline estimates from vue-compat README (#16016)[ci skip] vuejs/core

by Junpei Zhang

The vue-compat README no longer quotes timelines for compatibility work. If you were scheduling a migration against those estimates, the file you were reading them from no longer makes the claim.

fix(language-core): isolate template virtual code from setup control flow vuejs/language-tools

by johnsoncodehk

The template virtual code was emitted inline after the `<script setup>` statements, inheriting narrowing that only holds at the end of setup: a `let chart: T | null` reassigned in `onMounted` read as `never` under `v-if`, and refs set during setup produced a false TS2367. The template code is now isolated from setup control flow.

fix(build): keep code between static vnodes in lean chunks (close #5553) vuejs/vitepress

by Divyansh Singh

A greedy `".*"` in the marker regexp ran to the last quote on the line. Rollup kept each `createStaticVNode(...)` call on its own line, but rolldown prints short arrays on one line, so code between the calls was consumed. VitePress builds under rolldown keep that code now.

fix(kit): only treat ancestors as circular references vuejs/devtools

by NgoQuocViet2001

`encodeValue` added every visited object to `seen` and never removed it, so the same object appearing twice in one value was encoded as circular with no cycle present. Repeated references now encode as plain objects; a common date object reused across fields no longer inverts state in the devtools view. The agent build also stopped emitting sourcemaps.

fix(no-undef-components): recognize self-reference by `defineOptions` name vuejs/eslint-plugin-vue

by ValentinYoushkevich

Alongside: `vue/no-undef-components` now accepts self-reference via `defineOptions({ name })`, `component-name-in-template-casing` checks only the segment before the dot of namespaced components like `<Form.Input>`, `no-useless-mustaches` declines to autofix where the result changes rendered text, and `language-core` re-asserts dot-value bindings inside template closures.

$ 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 →