RepoJournal

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

Vue.js

Vue.js

the week in review · Oct 5 – Oct 11, 2026

test-utils fixes emitted-event recording and payload types

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

♥

eslint-plugin-vue closed two long-standing rule gaps, and router moved its workspace to pnpm 12.

9 commits 12 PRs merged 5 briefings covered

all vuejs reviews →

fix: record emitted events once when a devtools hook is installed vuejs/test-utils

by ValentinYoushkevich

When `__VUE_DEVTOOLS_GLOBAL_HOOK__` is present, each `mount` wrapped `hook.emit` again, so a single `$emit` was counted once per prior mount, and `emitted()` came back empty outright if the hook was replaced after Vue's renderer was created. Version Test Utils installs the hook itself now, so assertions on emitted events hold whether or not devtools is running in your test environment.

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

by ValentinYoushkevich

Follow-up to the unreleased event-name inference work: payloads stayed `unknown[]` for `<script setup>` components that also declare props or models. A component with `defineEmits<{ select: [id: number] }>()` alongside `defineProps` now types the `id` in `emitted('select')` instead of forcing a cast.

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

by ValentinYoushkevich

`onDefinePropsEnter` skipped any local that shadowed a prop as long as the initializer touched `props` anywhere, a check added so `const foo = toRef(props, 'foo')` stayed valid but which never looked at which prop was read. Locals aliasing a different prop now get flagged.

fix(no-undef-properties): support `...toRefs(reactive({}))` in setup() return vuejs/eslint-plugin-vue

by chiliec

`vue/no-undef-properties` flagged every template reference as undefined when a component exposed state via `...toRefs(data)` from `setup()`, with `data` bound to `reactive({ ... })`. The rule now follows those spread properties, so the false positives go away.

perf(no-reserved-component-names): build reserved name sets once at module scope vuejs/eslint-plugin-vue

by Cherry

`no-reserved-component-names` rebuilt its HTML, SVG and deprecated element sets, the capitalized and PascalCase forms, and a combined set on every file; the base and capitalized sets now live at module scope. The change came out of benchmarking a larger project internally.

chore: upgrade pnpm to 12 vuejs/router

by posva

The workspace moves from pnpm 11.21.0 to 12.9.1, including the lockfile entries, and drops the obsolete `detect_chromedriver_version` setting that pnpm 12 rejects during install. Application dependencies are untouched; a frozen install and lint verified the switch.

fix: record emitted events once when a devtools hook is installed vuejs/test-utils

by Valentin Yushkevich

Alongside: `test-utils` also skips registering the global mocks mixin when mocks are empty, which avoids a warning in Vue builds without Options API support.

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