What vuejs/core shipped
Written by FoxPlug from the repository's own releases; not affiliated with Vue.js. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/vuejs/core; Vue.js did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of October 5, 2026
What shipped
- Vapor templates now read unknown identifiers from props instead of throwing a ReferenceError for props it cannot enumerate. Pull request #15839
- A VDOM host now re-renders when its vapor slot content updates, so a selection stays in sync with model. Pull request #15816
- Nested vapor components are now unmounted when VDOM owns the removal, fixing a VDOM component left at the root of a nested vapor component. Pull request #15733
- String native on bindings on html elements are now set as attributes in vapor, so inline handlers such as an image fallback run. Pull request #15831
- Vapor now reports v-model on v-for and v-slot scope variables instead of silently losing edits. Pull request #15810
- Vapor now reports v-model on const bindings, matching the existing compiler-core check. Pull request #15779
- Await expressions in module mode now parse, fixing production builds where an inline handler assigns an awaited value to a let binding. Pull request #15808
- Dynamic svg and math component roots are created in their own namespace, so viewBox and rendered content work during mount and hydration. Pull request #15797
- Input value is set after its other props in vapor, so a range input value above max is no longer cut and left cut. Pull request #15722
- UseSlots and $slots now support hasOwnProperty like vdom, instead of throwing hasOwnProperty is not a function. Pull request #15835
Why it matters
This week brings many correctness fixes to the vapor runtime and compiler, covering props, slots, v-model, hydration and unmount behavior. People using vapor templates and mixed vdom and vapor trees should see fewer thrown errors, lost edits and mismatched renders.
Changelog entry
- Release: v3.6.0-rc.11 Release
- Fix(vapor): read unknown identifiers from props in templates and css vars Pull request #15839
- Fix(compiler-vapor): handle asset url imports in component props and v-bind objects Pull request #15799
- Fix(compiler-vapor): resolve component tags from slot scope Pull request #15787
- Fix(runtime-vapor): re-render a vdom host when its vapor slot content updates Pull request #15816
- Fix(runtime-vapor): unmount vdom roots of nested vapor components when vdom owns the removal Pull request #15733
- Fix(runtime-vapor): align interop v-show with element mount lifecycle Pull request #15806
- Fix(server-renderer, vapor): render a vapor slot called directly by a render function as its outlet Pull request #15743
- Fix(runtime-vapor): support hasOwnProperty on the slots object like vdom Pull request #15835
- Fix(compiler-vapor): report v-model on v-for and v-slot scope variables Pull request #15810
- Fix(compiler-vapor): report v-model on const bindings Pull request #15779
- Fix(compiler-vapor): wrap unref in parentheses for new expressions Pull request #15834
This week for vuejs/core: vapor now reads unknown props identifiers, reports v-model on v-for and v-slot scopes and on const bindings, parses await in module mode, syncs select values, and fixes slot updates, nested unmounts and svg roots.
This week for vuejs/core: a set of vapor fixes and one feature. Unknown identifiers are read from props in templates and css vars. VDOM hosts re-render when their vapor slot content updates. Nested vapor components unmount when vdom owns the removal. String native on bindings on html elements are set as attributes. Vapor reports v-model on v-for and v-slot scope variables and on const bindings. Await expressions parse in module mode. Input value is set after other props, select values sync after option updates, symbol input values stringify like vdom, and dynamic svg and math roots use their own namespace. useSlots and $slots support hasOwnProperty like vdom.
Week of September 28, 2026
What shipped
- Released v3.6.0-rc.10 with fixes across compiler and runtime. Release
- Fixed Vapor template compiler shadowing _ctx with cached identifiers in dev mode. Pull request #15763
- Fixed Vapor SSR app mounted hooks running before hydration completes, causing stale class bindings. Pull request #15753
- Fixed Vapor compiler incorrectly caching nested member expressions, breaking code generation. Pull request #15751
- Fixed Vapor slot content mounting under wrong component, breaking inject and errorCaptured. Pull request #15747
- Fixed Vapor passing static style as string instead of object to child components. Pull request #15745
- Fixed Vapor lazy prop evaluation causing synchronous watchers to run before parent updates. Pull request #15708
- Fixed reactivity batch notification skipping subscribers when one throws an error. Pull request #15676
- Fixed Vapor child losing defineModel value when parent re-renders. Pull request #15672
- Fixed Vapor SFC templates now resolve CSS module bindings like $style. Pull request #15621
Why it matters
Vapor, Vue's experimental optimizing compiler, received dozens of fixes this week addressing edge cases in hydration, slot handling, component interop with VDOM, and template compilation. These fixes improve stability for developers using Vapor templates in production SSR apps and mixed Vapor/VDOM component trees.
Changelog entry
- Fix(compiler-vapor): avoid shadowing _ctx with a cached identifier Pull request #15763
- Fix(runtime-vapor): run app mounted hooks after hydration ends Pull request #15753
- Fix(compiler-vapor): ignore cached member expressions nested in another one Pull request #15751
- Fix(runtime-vapor): mount vdom slot content under the component rendering the outlet Pull request #15747
- Fix(compiler-vapor): pass a static style to components as an object like vdom Pull request #15745
- Fix(runtime-vapor): deliver evaluated props and dynamic slots to components Pull request #15708
- Fix(reactivity): notify the rest of the batch when a subscriber throws Pull request #15676
- Fix(runtime-core): keep local useModel value when prop did not change Pull request #15672
- Fix(vapor): resolve CSS module bindings in templates Pull request #15621
- Fix(runtime-vapor): resolve css vars of a vdom parent when hydrating a vapor root Pull request #15721
- Fix(runtime-vapor): pass the suspense boundary when hydrating vdom content Pull request #15720
- Fix(runtime-vapor): pass the empty slots of vdom components on to child vnodes Pull request #15719
V3.6.0-rc.10 ships with 40 fixes across Vapor compiler and runtime, addressing hydration, slots, CSS modules, prop evaluation, and VDOM interop. Testing the rc helps catch issues before stable release.
V3.6.0-rc.10 includes 40 targeted fixes for Vapor (Vue's optimizing compiler) and core runtime. Major improvements: CSS module resolution in Vapor templates, proper hydration sequencing, correct slot mounting, nested member expression caching, and seamless VDOM/Vapor interoperability. These stabilize Vapor for production SSR applications and mixed component trees.
Week of September 21, 2026
What shipped
- Fixed dynamic component remounting in Vapor that lost local state during navigation between routes rendering the same component. Pull request #15631
- Refactored component key handling in Vapor to pass keys through creation calls instead of using setBlockKey, improving consistency for dynamic and keyed components. Pull request #15644
- Fixed root element class and style handling in Vapor so fallthrough updates no longer overwrite or remove the element's own values. Pull request #15642
- Fixed template ref access from VDOM parents to Vapor children so reading $el and other VDOM properties no longer throws errors on exposed instances. Pull request #15624
- Fixed style binding nullification in DOM to preserve CSS variables injected by v-bind() when:style becomes null or undefined. Pull request #15623
- Fixed checkbox and select element handling in Vapor to write checked and selected as attributes, matching VDOM behavior for form resets and attribute selectors. Pull request #15636
- Fixed KeepAlive components in Vapor to properly propagate fallthrough attributes like class and style to their root element. Pull request #15583
- Refactored Vapor SSR hydration to always emit fragment markers instead of using a separate markerless mode, simplifying the hydration process. Pull request #15590
- Improved slot fallback handling in hydration by marking them in SSR output so the client knows whether the server rendered content or fallback. Pull request #15589
- Migrated the test suite to Vitest 5 with Vite+. Pull request #15633
Why it matters
This week focused on closing gaps between Vapor and VDOM behavior, particularly around component interop, attribute handling, and hydration. Many fixes address edge cases in dynamic components, keyed elements, and style binding that affect real applications. The refactoring of hydration markers and slot handling simplifies Vapor's internal mechanics while improving reliability.
Changelog entry
- Fix(runtime-vapor): patch same-type vnodes passed to a dynamic component Pull request #15631
- Refactor(vapor): pass component keys through their creation calls instead of setBlockKey Pull request #15644
- Fix(runtime-vapor): preserve root class and style across fallthrough updates Pull request #15642
- Fix(runtime-core): skip vdom public properties on exposed vapor instances Pull request #15624
- Fix(runtime-dom): keep injected css vars when style binding becomes nullish Pull request #15623
- Fix(runtime-vapor): also set checked and selected as attributes like vdom Pull request #15636
- Fix(compiler-vapor): propagate component root through KeepAlive Pull request #15583
- Refactor(vapor): always emit fragment markers in ssr output and drop markerless hydration Pull request #15590
- Refactor(hydration): mark slot fallbacks in ssr output and hydrate them by the marker Pull request #15589
- Fix(vapor): hydrate custom element children Pull request #15595
- Fix(runtime-vapor): create the rows of a keyed insert in source order Pull request #15601
- Chore: migrate to Vitest 5 with Vite+ Pull request #15633
This week: fixed dynamic component remounting, improved key handling, stabilized style/class inheritance, and refined hydration for slots and fragments. Vapor behavior now aligns more closely with VDOM across interop scenarios.
This week's updates to Vue.js core focused on strengthening Vapor's compatibility and reliability. Key improvements include fixing dynamic component remounting that lost state during navigation, refactoring component key handling for consistency, and ensuring style and class attributes work correctly across fallthrough updates. We also refined hydration markers for slots and fragments, simplifying the internal model. These changes address important edge cases in component interop and attribute handling that affect real applications.