# What changed in vue

> 177 changes in vue 3 from its official release notes, upgrade guides and advisories: 2 breaking, 1 security, 1 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/vue/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## vue 3

### Breaking changes

- Server rendering now rejects carriage returns in attribute names. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Reverts cleanup of component effect scopes after SSR render. (3.5.32) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.32)

### Security

- Prevents server-rendered comment escaping from creating closing delimiters. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)

### New APIs and options

- Type support now includes named tuple emits. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)

### Performance

- Optimizes dispatch of array event handlers. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Skips type checks for cached proxies. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Avoids materializing iterables in ssrRenderList. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Uses binary search to determine line and column locations. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)

### Behavior and default changes

- Reverts the compiler-core fix for correctly handling TypeScript type assertions in expressions. (3.5.24) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.24)

### Fixes and other changes

- Mounts a resolved async component with its own namespace in Suspense. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Skips rendering async components unmounted while pending in Suspense. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Skips mounting an async custom element removed while its component is loading. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Keeps the async placeholder for block patching and pending component updates. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Propagates errors from async setup during server rendering. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Reports an error when defineModel prop options reference a destructured prop. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Observes children of a display: contents root during visible hydration. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Unmounts a pruned current component when its vnode was cloned on mount. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Avoids mutating native array iterators in reactivity handling. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Stops a once watcher when its callback throws. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Treats playsinline as a boolean attribute. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Detects new prop keys when comparing full props. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Flushes only jobs queued by the root render itself. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Exposes _setupProxy for Vue 2.7 compiled script setup in compat mode. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Preserves shallow collection semantics in reactivity. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Moves targetStart while keeping children before targetAnchor. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Handles component roots wrapped in comments. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Measures nested groups against their moving outer item. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Parenthesizes the v-for key in the v-memo cache guard to fix generated code. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Renders nothing for an invalid v-for range in production. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Correctly stringifies 0 and false values used with v-html. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Injects the persisted transition setting for v-show in production. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Preserves the display value for unchanged style strings. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Honors falsy vnode content overrides during SSR. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Does not track dependencies in watcher callbacks run inside another effect. (3.5.44) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.44)
- Array copy methods now preserve readonly wrappers. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- The DOM claimed by an interrupted async component is now unmounted. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- The SFC compiler now prepends a semicolon for await in a switch case. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- The SFC compiler now restores await scope when leaving nested blocks. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- The SFC compiler now ignores comment delimiters inside strings and url() when parsing CSS vars. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Leave hooks now run for hydration placeholders. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- looseEqual now handles circular references. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Optional props are now kept when a runtime prop uses a generic PropType. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Comment-like text in style values is now preserved. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Nested Suspense patches are no longer dropped during hydration. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- A Suspense boundary now stays pending while its branch is patched. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- A hydrating boundary's pending branch is now patched in place. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Children of v-once nodes are now unmounted after the parent rerenders. (3.5.43) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.43)
- Moving an unresolved async fragment is now handled correctly. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- $el is now resolved for a development root comment fragment. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Async components unmounted before lazy hydration are now handled correctly. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Map and Set values are now compared correctly. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Style bindings now support !important on CSS custom properties. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Unmounted Suspense children are no longer cached. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- A leaving branch is no longer treated as the fallback while its mount is pending. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Select elements are re-synced when the model is overridden in a change handler. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- The .trim result is preserved when the .trim and .number modifiers are combined. (3.5.42) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.42)
- Restores SSR setup state when handling an async setup result. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Warns when custom element props override native properties. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Preserves defineModel type inference with factory defaults. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Normalizes hidden states during SSR hydration. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Preserves mount order for nested asynchronous custom elements. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Avoids stack overflow when flushing very large post-callback arrays. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Avoids re-fetching resource props when their values have not changed. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Handles transformed template ASTs after cache invalidation. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Supports transitions to a Teleport component child. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Handles nullish v-bind slot props. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Preserves vnode lifecycle behavior in stable v-for lists. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Preserves text input before hydration. (3.5.41) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.41)
- Unwinds dangling blocks when slot content throws. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Passes the namespace when patching dynamic props during hydration. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Handles effects being removed while their scope is stopping. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- The component $el type is no longer constrained to Element. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Skips lazy hydration for detached roots. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Handles errors in optimized component renders during server rendering. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Respects the current select model type. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Prevents compiler-generated slot branch keys from leaking into rendered output. (3.5.40) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.40)
- Fixes updates for non-isomorphic block elements. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Hydration now respects data-allow-mismatch on conditional branches. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Types now validate defineModel defaults. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Preserves event names when option modifiers are used. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Corrects recursive filter rewriting in the compiler. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Function children are normalized for elements and Teleport. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Tracking is paused when function refs are invoked. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Dynamic props are now force-patched during hydration. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Preserves the event listener name for once listeners. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Effects are no longer triggered when a set operation fails. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Deduplicates inherited scope IDs during vnode rendering in SSR. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Resolves nested async Teleport content during SSR. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Fixes a Teleport unmount edge case. (3.5.39) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.39)
- Resolves top-level exports from files registered as global types. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Avoids repeated hydration mismatch checks. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Skips idle persisted transition hooks during keep-alive moves. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Propagates synchronous errors from ssrRenderSuspense. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Skips child unmount when a pending mount is discarded. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Avoids double processing v-for keys when used with v-memo. (3.5.35) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.35)
- Type re-exports inside declare global are resolved. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- Creating an effect in a stopped scope no longer leaves an orphan effect. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- Hash hrefs are preserved on <image> elements. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- Props validation avoids coercing symbols. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- Vue ref wrapper types are inferred when the source is unresolvable. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- An out-in transition in a v-if fragment no longer causes a DOM leak. (3.5.34) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.34)
- Nested :deep selectors in selector pseudos are now handled correctly. (3.5.33) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.33)
- Effect scopes are unlinked correctly when off is called out of order. (3.5.33) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.33)
- Teleport children are no longer moved before they are mounted. (3.5.33) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.33)
- Textarea resize dimensions are preserved. (3.5.33) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.33)
- The placeholder is preserved for conditional explicit default slots. (3.5.33) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.33)
- Prevents currentInstance from leaking into a sibling render during async setup re-entry. (3.5.32) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.32)
- Allows customRef to use different getter and setter types. (3.5.32) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.32)
- Uses private branding for shallowReactive. (3.5.32) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.32)
- Handles updates that occur before a deferred mount. (3.5.32) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.32)
- compiler-sfc now allows Node.js subpath import patterns in asset URLs. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- defineModel now supports a template literal as its name. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- mergeProps preserves nullish event handlers. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Model listeners are no longer merged when their value is null or undefined. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- The shallowReactive marker no longer leaks into value unions. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Component effect scopes are cleaned up after an SSR render. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Suspense avoids unmounting its active branch twice when wrapped in a transition. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- The Suspense vnode's el is updated during a branch self-update. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Teleport mounting and updating are deferred until Suspense resolves. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- toRef normalizes property keys before dependency lookup, with improved types. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- The enter guard is skipped while HMR is updating. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Detached v-for memo vnodes are invalidated after unmount. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- The activeElement check for v-model now works in Shadow DOM. (3.5.31) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.31)
- Calling reduce on reactive arrays preserves reactivity. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Child component styles are injected in the correct order before parent styles. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Parent components are properly located when slotted in Shadow DOM. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Props are properly patched for Vue custom elements. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Generics work with runtime props in defineComponent. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Handles the edge case of a Set initialized with reactive values. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Adding values avoids duplicate raw/proxy entries in a Set. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Class and style typing is narrowed for TSX. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Vue now warns about negative numbers used in v-for. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Prevents a watch from firing after an async setup await during SSR. (3.5.30) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.30)
- Server rendering now renders className as an escaped string. (3.5.29) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.29)
- Prevents an enter transition from starting while a leave transition is in progress. (3.5.29) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.29)
- Prevents an instance leak in withAsyncContext. (3.5.29) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.29)
- Async component updates that occur before the component resolves are handled properly. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Transition done callbacks no longer receive an unexpected cancelled parameter. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- EffectScope is marked with `__v_skip` to prevent reactive conversion. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- compiler-sfc now tries resolving `.mts` and `.cts` files. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Child components are not updated when the style remains unchanged. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Disabled Teleport targets and their anchors are handled properly. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Move translation is corrected for scaled elements by using the element rect. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- A setup ref is no longer updated for a useTemplateRef key. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Generated parameters are now provided when using withDefaults. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- withModifiers now handles null or undefined handlers. (3.5.28) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.28)
- Server rendering uses the ssrRenderClass helper for the className attribute. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Collection iteration now inherits iterator instance methods. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Correctly handles variable shadowing in a for loop when destructuring defineProps. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Handles indexed access types in declare global blocks. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Uses the correct scope when resolving indexed access types from external files. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Reserved props are no longer patched for custom elements. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Handles v-bind modifiers when rendering attributes during SSR. (3.5.27) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.27)
- Ensures the correct anchor element is used for deeper unresolved async components. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Fixes the compat handler for draggable. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Handles updates to cached text nodes during hot module replacement. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Uses the resolved component name when pruning async components from the cache. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Handles SSR attribute fallthrough when whitespace is preserved. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Fixes an edge case when patching stable fragments. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Handles the v-model deprecation warning when appContext is missing. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Demotes const reactive bindings used in v-model. (3.5.26) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.26)
- Keeps Options API typing intact when expose is used. (3.5.25) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.25)
- Correctly wraps iterated array items so their readonly status is preserved. (3.5.25) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.25)
- Warns when provide is used after mounting, helping developers catch calls made too late. (3.5.25) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.25)
- Defers clearing the fallback vnode el when it has directives. (3.5.25) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.25)
- Fixes edge cases involving ref unwrapping. (3.5.25) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.25)
- Custom element prop patching is batched. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Slot retrieval is optimized to avoid duplicates. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Hydration avoids mismatches when interpolated text contains newlines. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- The iframe sandbox value is handled as an attribute to prevent unintended behavior. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Props and children are passed to the loading component. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Numeric literals and template literals without expressions are resolved as static property keys. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Animations use offsetLeft and offsetTop instead of getBoundingClientRect to avoid transform scale affecting them. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Expressions containing TypeScript type assertions are now handled correctly by the compiler. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- The compiler now correctly handles v-bind shorthand in in-DOM templates. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- The number modifier is now handled on change. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
- Server-side rendering now handles textarea elements with the v-text directive. (3.5.23) — [release notes](https://github.com/vuejs/core/releases/tag/v3.5.23)
