The Wire · Showcase
Vue fixes Map and Set comparison, Suspense transitions
By RepoJournal · Filed · About Vue.js
Four fixes land in Vue core today, with the sharpest edge in v-model and Suspense edge cases.
Vue core shipped four PRs overnight. The Suspense fix stops the leaving branch of a `Transition` from being patched into the fallback while its mount is pending [1], which closes a nasty ghost-content bug. A dev-mode root fragment now resolves `$el` correctly [2], and `Map`/`Set` comparison got a correctness pass [3]. That comparison fix also covers `v-model` on a `select` bound to a `Map` [3]. A separate `v-model` PR re-syncs the select's DOM state when a change handler overrides the model [4], closing #10505 and picking up a stalled PR. For language-tools, Volar is cleaning up codegen: synthetic variables are no longer reported as unmapped diagnostics [5], and setup bindings are unwrapped by value instead of relying on assertion signatures [6], which should kill false positives on functions and classes. Vitepress un-deprecates `Theme.setup`, enabling composable wiring without a wrapping Layout [7]. The action is all in core and language-tools today.
One email a day. Unsubscribe in one click.
Keep up with Vue.js in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review the Suspense + Transition fix when it lands in a nightly; it addresses a real stale-content bug vuejs/core [monitor]
- → Test your v-model selects against the Map comparison fix, especially with reordered or loosely equal entries vuejs/core [plan]
- → Follow the Volar codegen changes; if you run the v4 type-checker, expect fewer unmapped diagnostics vuejs/language-tools [monitor]
References
- [1] fix(suspense): don't treat the leaving branch as the fallback while its mount is pending ↗ vuejs/core
- [2] fix(runtime-core): resolve $el for dev root comment fragment ↗ vuejs/core
- [3] fix(shared): correctly compare Map and Set values ↗ vuejs/core
- [4] fix(v-model): re-sync select when model is overridden in change handler ↗ vuejs/core
- [5] fix(language-core): eliminate unmapped codegen diagnostics ↗ vuejs/language-tools
- [6] refactor(language-core): unwrap setup bindings by value ↗ vuejs/language-tools
- [7] feat(theme): un-deprecate Theme.setup and compose it across extends (#5404) vuejs/vitepress