RepoJournal

$ cat vuejs/month/2026-10-01.log

Vue.js

Vue.js

the month in review · October 2026

vue-jsx-vapor pins vue 3.6.0-rc.10 after setDynamicProps ABI break

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

♥

The pin walled off current main from older RC builds, while HMR reached plain function components and the vapor compiler absorbed three core fixes.

216 commits 173 PRs merged 13 releases 29 briefings covered

all vuejs reviews →

chore: pin vue to 3.6.0-rc.10 to match setDynamicProps ABI changes vuejs/vue-jsx-vapor

by re-thc

The pin was raised to match a signature change, not a routine bump. The commit message is blunt about the reason: "setDynamicProps changed in rc.10 and the current main doesn't work." Every dependency now sits at explicitly >= rc.10, so anything you build on this branch needs the same floor or it breaks at runtime.

feat(runtime/hmr): support HMR for plain function components vuejs/vue-jsx-vapor

by zhiyuanzmj

New defineVaporHmrComponent and defineHmrComponent wrappers, plus compiler changes that mark plain function components so they get wrapped. HMR codegen now assigns __hmrId inline and guards the import.meta.hot.accept callback. Function components were the gap in the vapor edit loop; this closes it.

fix(no-dupe-keys): detect locals aliasing a different prop vuejs/eslint-plugin-vue

by ValentinYoushkevich

The rule previously skipped any local that touched the props object, to keep const foo = toRef(props, 'foo') valid. That test only asked whether props was mentioned, not which key was read, so aliases of a different prop slipped through. It also fixes duplicate keys in v-bind object spreads. Expect new reports on aliasing patterns you may have been ignoring.

fix(types): infer emitted payloads for components with props vuejs/test-utils

by ValentinYoushkevich

Event names were already inferred for script setup components, but payloads stayed unknown[] whenever the component also declared props or models. The typical defineEmits<{ select: [id: number] }>() component now gets a typed payload instead of an unknown array. Follows the unreleased event-name inference work.

fix(vscode): avoid `registerHooks` on buggy Node versions (#6245) vuejs/language-tools

by SerKo

The VS Code extension skips registerHooks on Node builds that mis-handle it, tracked against the upstream Node issue. Newer Node versions where the hook is broken no longer break language features for the extension.

fix: skip global mocks mixin when mocks are empty vuejs/test-utils

by Glandos

mount() no longer registers a global mocks mixin when mocks are empty, which removes a warning in Vue builds that drop Options API support. Nonempty mocks, including falsy values, behave as before.

Add tronche (SVG avatar generator) vuejs/awesome-vue

by rootasjey

Alongside: awesome-vue added Obolus under Projects Using Nuxt, @reelkit/vue to Carousel, and the tronche SVG avatar generator; VitePress segmenting Chinese and Japanese in local search and keeping code intact inside lean chunks; router on pnpm 12.9.1 and native hash scroll fixes.

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

Thu Oct 1 HMR lands for plain function components in vue-jsx-vapor Fri Oct 2 awesome-vue adds a Nuxt project, a Vue carousel, and an SVG avatar generator Sat Oct 3 vue-jsx-vapor pins vue to 3.6.0-rc.10 after setDynamicProps ABI break Sun Oct 4 Vue language tools stop calling registerHooks on buggy Node builds Mon Oct 5 vuejs/router moves to pnpm 12 Wed Oct 7 eslint-plugin-vue closes a no-dupe-keys blind spot Thu Oct 8 Emitted payload types land in test-utils Fri Oct 9 eslint-plugin-vue stops flagging toRefs spreads, builds reserved-name sets once Sat Oct 10 test-utils records emitted events once per mount again Mon Oct 12 VitePress local search segments Chinese and Japanese Tue Oct 13 Vue core tightens root-render flushing and async placeholder patching Wed Oct 14 Server renderer surfaces async setup errors, VitePress prefetch goes network-aware Thu Oct 15 Scroll restoration goes customizable, devtools ships an agent package Fri Oct 16 DevTools fixes v9 app scoping and Chrome worker restart detection Sat Oct 17 RouterView scopes useRoute to its route prop, and eslint-plugin-vue gains a content-placement rule Sun Oct 18 Devtools fixes ambiguous Map keys, eslint-plugin-vue rules move to TypeScript Mon Oct 19 Devtools fixes sparse array previews and same-page navigation Tue Oct 20 eslint-plugin-vue moves 26 rules to TypeScript in one day Wed Oct 21 Devtools adds first Vapor support, language-tools fixes unchecked directive bindings Thu Oct 22 Volar smooths strict JS diagnostics, router fixes native hash scroll Fri Oct 23 language-tools drops a @ts-ignore for inline handler $event Sat Oct 24 Language-tools moves to trusted publishing, fixes hover and nav regressions Sun Oct 25 language-tools trims its HTML data workflow Mon Oct 26 Devtools stops flagging repeated objects as circular Tue Oct 27 VitePress build fix keeps code intact inside lean chunks Wed Oct 28 TeleportStub lands in @vue/test-utils Thu Oct 29 Static boolean bindings fixed in Vue's DOM compiler Fri Oct 30 eslint-plugin-vue stops corrupting fixed templates Sat Oct 31 Test-utils fixes stale Teleport stub content

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 →