GitHub

3.6.0-rc.6 (2026-08-28)

Bug Fixes

  • hmr: cover vapor fast-path reload with the hmr updating flag and reset it on failed updates (991a885)
  • runtime-vapor: align DOM prop updates with VDOM (#15343) (84833e2)
  • runtime-vapor: claim runtime structural anchors so block validity matches across builds (2473b78)
  • runtime-vapor: clear v-for index alias for non-object sources (#15364) (f945b0e)
  • runtime-vapor: count each hydration cursor exit once (7710394)
  • runtime-vapor: do not skip the initial DOM prop set (#15341) (64671b5), closes #15339
  • runtime-vapor: key the null dynamic component branch by its resolved sentinel (7c8d34a)
  • runtime-vapor: own each dev render generation with a render scope for HMR (9ab65a1)
  • runtime-vapor: render a null dynamic component as an empty branch (a447d80)
  • runtime-vapor: set value as attribute so form reset restores it (#15340) (23a2b2c), closes #15338
  • runtime-vapor: skip the restore on a second cursor exit (9e6d1e5)
  • scheduler: restore scheduler state after flush errors (70bd789)

Performance Improvements

  • runtime-vapor: avoid quadratic scan when leaving a hydration boundary (9905d7d)
  • runtime-vapor: cache template adopt target (29ed4b0)

3.6.0-rc.5 (2026-08-21)

Bug Fixes

  • runtime-vapor: align attrs fallthrough semantics with vdom (293ca1c)
  • runtime-vapor: branch-scope ownership for fallthrough attr effects (be7157e)
  • runtime-vapor: fallthrough attrs onto interop vnode roots (5073eb5)
  • runtime-vapor: flush pending transition cbs on the resolved element (f2fa54d)
  • runtime-vapor: full fallthrough for functional components with declared props (ef83790)
  • runtime-vapor: preserve nested vdom slot content (#15304) (1a2de08), closes #15303
  • runtime-vapor: re-resolve transition hooks on prop change (d3fde91)
  • runtime-vapor: reflow the TransitionGroup's own document for moves (36dd186)
  • runtime-vapor: resolve element namespace at interop boundaries (#15321) (e86e35b)
  • runtime-vapor: restore rendering suspense boundary in fragment ctx (5c2805d)
  • runtime-vapor: stop fallthrough resolution at slot outlets (10f666e)

Performance Improvements

  • runtime-vapor: collect-only child snapshot in TransitionGroup beforeUpdate (744d64d)
  • runtime-vapor: skip TransitionGroup bookkeeping on ForBlock wrappers (2c914ef)
  • runtime-vapor: trim TransitionGroup per-child props tracking (c526d45)
  • runtime-vapor: trim v-for hot-path allocations (#15329) (8d83bb2)

3.6.0-rc.4 (2026-08-14)

Bug Fixes

  • compiler-vapor: preserve modifiers on merged event handlers (#15265) (d574d1d), closes #15264
  • compiler-vapor: propagate component root through Transition (#15275) (0a65e60), closes #15274
  • runtime-vapor: avoid redundant transition block resolution (#15272) (66cdfba)
  • runtime-vapor: normalize declared style props (fix #15285) (#15286) (75a8792)
  • runtime-vapor: preserve cached input effects across nested branch teardown (#15293) (cd8b8da)
  • runtime-vapor: preserve child keys in nested fragments (#15292) (17f69ca)
  • runtime-vapor: release unmounted v-for component items from the parent scope (7db1454)
  • runtime-vapor: remove v-for components before scope cleanup (aac355d)
  • runtime-vapor: respect inheritAttrs ownership for component roots (#15279) (961eadb), closes #15277
  • runtime-vapor: scope fallback prop caches to active consumers (e8a09b3)
  • runtime-vapor: scope prop source caches to consumers (22b9b41)
  • vapor: preserve dynamic v-for slot state (#15280) (38a095d), closes #15276

3.6.0-rc.3 (2026-08-11)

Bug Fixes

  • compiler-sfc: avoid walking cached type references (#15175) (c9389cc), closes #15174
  • compiler-vapor: fold falsy hidden bindings into static templates (467ad03)
  • compiler-vapor: generate v-model after prop effects (#15201) (721ce4f)
  • compiler-vapor: keep the space after a quoted attribute value (#15259) (a9e6e80), closes #15257
  • compiler-vapor: preserve optional chaining in cached member expressions (#15229) (14ef8d1), closes #15226
  • compiler-vapor: wrap custom directive value in parens (#15258) (2666662), closes #15253
  • runtime-vapor: align app unmount lifecycle with vdom (#15262) (fc65972), closes #15234
  • runtime-vapor: avoid tracking v-show source in fragment effects (#15204) (3f08c4e)
  • runtime-vapor: avoid tracking v-show transition hooks (#15203) (0aca1e0), closes #15202
  • runtime-vapor: clean up teleport targets on scope disposal (#15238) (25dcb37), closes #15236
  • runtime-vapor: constrain expose to Exposed type (#15188) (45e594b)
  • runtime-vapor: defer KeepAlive branch removal until cache pruning (#15189) (2d0e207)
  • runtime-vapor: defer KeepAlive updates while async setup is pending (#15172) (d179213)
  • runtime-vapor: handle custom directives on async components (#15167) (4616c02)
  • runtime-vapor: handle custom directives on fragment roots (#15158) (8a8d972), closes #15157
  • runtime-vapor: isolate cached component props and dynamic slots (#15251) (ecc09cd), closes #15228
  • runtime-vapor: normalize class prop passed to components (#15230) (35ba88a), closes #15227
  • runtime-vapor: preserve functional component root bindings (#15149) (c3bc9e1)
  • runtime-vapor: preserve hydrated vdom slot fallback position (0b547d2)
  • runtime-vapor: preserve move semantics for VDOM roots (#15191) (03c0a53)
  • runtime-vapor: preserve pending async hydration ranges (#15150) (3c9499c)
  • runtime-vapor: preserve vdom props normalization in interop (#15261) (b140916), closes #15254
  • runtime-vapor: properly prune interop keep-alive entries (#15181) (135c406)
  • runtime-vapor: remove special boolean attributes for falsy values (#15186) (88fcf1e)
  • runtime-vapor: restore concurrent async hydration context (#15179) (6173a40)
  • runtime-vapor: schedule async hydration anchors before updates (#15180) (ee0e5ff)
  • runtime-vapor: support vdom slot content in Transition (#15159) (bf59788)
  • runtime-vapor: unmount leaving KeepAlive cache entries (#15190) (60e3b57)
  • types: allow Vapor JSX Element in defineComponent render functions (#15193) (c49b688)
  • types: prevent infer Exposed as JSX.Element for defineVaporComponent (#15242) (88b1151)
  • vapor: align component v-text and v-html with vdom (#15195) (dff8dd5)
  • vapor: handle keyed slot roots (87faca4)
  • vapor: handle markerless slot hydration anchors (7d9d43d)
  • vapor: mark forwarded root slot outlets (6945e14)
  • vapor: preserve vdom slot fallback position (3c4e5b7)
  • vapor: resolve fallback across multiple slot roots (2f82eaf)

3.6.0-rc.2 (2026-07-22)

Bug Fixes

  • compiler-vapor: avoid helper and cache variable name collisions (#15124) (e9cb7c8)
  • runtime-core,runtime-vapor: restore undefined effect scope after setCurrentInstance (#15141) (3e41d52)
  • runtime-vapor: apply transition hooks before suspense insertion (#15133) (567c515)
  • runtime-vapor: contain setup errors in prod (#15130) (6921182)
  • runtime-vapor: create slot anchor when hydrating unwrapped interop slot content (#15131) (42a7186)
  • runtime-vapor: defer mount hooks to owning suspense boundary (#15139) (7d63723)
  • runtime-vapor: defer post-render effects to vdom suspense boundaries (#15144) (429006e)
  • runtime-vapor: hydrate vapor components in deferred vdom hydration via interop (#15132) (ce85e8a)
  • runtime-vapor: preserve pending async component position (#15147) (fb4538c)
  • runtime-vapor: restore instance context when handling async setup result (#15129) (208f1ed)
  • runtime-vapor: sync transition hooks on interop update (#15140) (39b1ddf)
  • runtime-vapor: update logical child cache after hydration mutations (#15145) (d385f89)
  • runtime-vapor: validate props for vdom interop (#15111) (a686662)

Features

  • compiler-vapor: make event delegation opt-in (#15127) (810a1ef)

BREAKING CHANGES

Vapor event delegation is now opt-in

To align Vapor Mode with standard Vue and native DOM event behavior, DOM event listeners are now attached directly to elements by default. Previously, supported events were automatically delegated to document, which could produce behavioral differences from VDOM Mode—for example, an ancestor calling stopPropagation() could prevent a child handler from running.

Document-level delegation is now an explicit optimization. Use the Vapor-only .delegate modifier to opt in for supported static events:

"

Read the original on github.com ↗