RepoJournal

$ cat vuejs/week/2026-09-14.log

Vue.js

Vue.js

the week in review · Sep 14 – Sep 20, 2026

create-vue 3.24.0 ships tsgo option

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

♥

The scaffold release also tightens its Oxlint and Vitest templates; vue core fixed two runtime bugs affecting v-model and v-once.

24 commits 35 PRs merged 2 releases 6 briefings covered

all vuejs reviews →

2026-09-16 (v3.24.0) vuejs/create-vue

by haoqunjiang

The scaffold's new option swaps TypeScript for typescript-native-bridge, alongside a clarified overwrite prompt that now says it deletes all existing files. Generate a fresh project with the tsgo flag to try it; existing projects keep the standard toolchain.

fix(shared): handle circular references in looseEqual vuejs/core

by ondrhn

Since the change that made looseEqual recurse into Map and Set entries, a `<select v-model>` whose option values were Sets of mutually referencing objects threw "RangeError: Maximum call stack size exceeded" during mount. Cycle detection now covers those containers, so the recursion the earlier commit introduced no longer blows the stack on self-referencing values.

fix(runtime-core): unmount v-once children after parent rerenders vuejs/core

by onmax

A component inside v-once could survive a parent rerender and then never unmount. The fix preserves the block's hasOnce marker across updates and the cache index when cloning vnodes, and clearing a component's cache on unmount no longer invalidates another slot instance.

fix(compiler-sfc): ignore comment delimiters inside strings and url() when parsing css vars vuejs/core

by edison1105

CSS variable parsing in compiler-sfc treated comment delimiters inside quoted strings and url() values as real comments. If your SFC styles put /* or */ inside a string or a url(), the compiled output was wrong; it now preserves that text.

fix: add extension to Vitest config import vuejs/create-vue

by cexbrayat

Generated Vitest configs imported './vite.config' with no extension, which Vite's current loader tolerates but its native config loader will not. Regenerate or hand-edit the import to include the extension before the loader switch bites.

fix: keep the namespace prefix in attributes() (#2941) vuejs/test-utils

by Max Freedom Pollard

attributes() in test-utils was dropping namespace prefixes, so assertions against namespaced attributes like xlink:href failed. The prefix is now kept in the returned attribute map.

fix(suspense): skip rendering async components unmounted while pending vuejs/core

by daiwei

An async component unmounted while its Suspense boundary was still pending could still be rendered. That render is now skipped, and the change is on the developing branch rather than a tagged release.

ci(issues): remove automatic issue closing workflow (#15557) vuejs/core

by edison

Alongside: core removed the workflow that closed issues automatically, js-yaml moved to 4.3.2 in the v2 docs site, vue-jsx-vapor added ElementAttributesProperty to the JSX global namespace, and the lock-file and pnpm 12 housekeeping continued across create-vue and core.

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