unstale

npm / vue

vue

What changed in vue 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

2 breaking1 security1 new APIs and options4 performance1 behavior and defaults168 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

vue 3177 changes

Breaking changes 2

  • Server rendering now rejects carriage returns in attribute names.

    3.5.42release notes

  • Reverts cleanup of component effect scopes after SSR render.

    3.5.32release notes

Security 1

  • Prevents server-rendered comment escaping from creating closing delimiters.

    3.5.40release notes

New APIs and options 1

Performance 4

  • Optimizes dispatch of array event handlers.

    3.5.35release notes

  • Skips type checks for cached proxies.

    3.5.35release notes

  • Avoids materializing iterables in ssrRenderList.

    3.5.35release notes

  • Uses binary search to determine line and column locations.

    3.5.26release notes

Behavior and default changes 1

  • Reverts the compiler-core fix for correctly handling TypeScript type assertions in expressions.

    3.5.24release notes

Fixes and other changes 168

  • Mounts a resolved async component with its own namespace in Suspense.

    3.5.44release notes

  • Skips rendering async components unmounted while pending in Suspense.

    3.5.44release notes

  • Skips mounting an async custom element removed while its component is loading.

    3.5.44release notes

  • Keeps the async placeholder for block patching and pending component updates.

    3.5.44release notes

  • Propagates errors from async setup during server rendering.

    3.5.44release notes

  • Reports an error when defineModel prop options reference a destructured prop.

    3.5.44release notes

  • Observes children of a display: contents root during visible hydration.

    3.5.44release notes

  • Unmounts a pruned current component when its vnode was cloned on mount.

    3.5.44release notes

  • Avoids mutating native array iterators in reactivity handling.

    3.5.44release notes

  • Stops a once watcher when its callback throws.

    3.5.44release notes

  • Treats playsinline as a boolean attribute.

    3.5.44release notes

  • Detects new prop keys when comparing full props.

    3.5.44release notes

  • Flushes only jobs queued by the root render itself.

    3.5.44release notes

  • Exposes _setupProxy for Vue 2.7 compiled script setup in compat mode.

    3.5.44release notes

  • Preserves shallow collection semantics in reactivity.

    3.5.44release notes

  • Moves targetStart while keeping children before targetAnchor.

    3.5.44release notes

  • Handles component roots wrapped in comments.

    3.5.44release notes

  • Measures nested groups against their moving outer item.

    3.5.44release notes

  • Parenthesizes the v-for key in the v-memo cache guard to fix generated code.

    3.5.44release notes

  • Renders nothing for an invalid v-for range in production.

    3.5.44release notes

  • Correctly stringifies 0 and false values used with v-html.

    3.5.44release notes

  • Injects the persisted transition setting for v-show in production.

    3.5.44release notes

  • Preserves the display value for unchanged style strings.

    3.5.44release notes

  • Honors falsy vnode content overrides during SSR.

    3.5.44release notes

  • Does not track dependencies in watcher callbacks run inside another effect.

    3.5.44release notes

  • Array copy methods now preserve readonly wrappers.

    3.5.43release notes

  • The DOM claimed by an interrupted async component is now unmounted.

    3.5.43release notes

  • The SFC compiler now prepends a semicolon for await in a switch case.

    3.5.43release notes

  • The SFC compiler now restores await scope when leaving nested blocks.

    3.5.43release notes

  • The SFC compiler now ignores comment delimiters inside strings and url() when parsing CSS vars.

    3.5.43release notes

  • Leave hooks now run for hydration placeholders.

    3.5.43release notes

  • looseEqual now handles circular references.

    3.5.43release notes

  • Optional props are now kept when a runtime prop uses a generic PropType.

    3.5.43release notes

  • Comment-like text in style values is now preserved.

    3.5.43release notes

  • Nested Suspense patches are no longer dropped during hydration.

    3.5.43release notes

  • A Suspense boundary now stays pending while its branch is patched.

    3.5.43release notes

  • A hydrating boundary's pending branch is now patched in place.

    3.5.43release notes

  • Children of v-once nodes are now unmounted after the parent rerenders.

    3.5.43release notes

  • Moving an unresolved async fragment is now handled correctly.

    3.5.42release notes

  • $el is now resolved for a development root comment fragment.

    3.5.42release notes

  • Async components unmounted before lazy hydration are now handled correctly.

    3.5.42release notes

  • Map and Set values are now compared correctly.

    3.5.42release notes

  • Style bindings now support !important on CSS custom properties.

    3.5.42release notes

  • Unmounted Suspense children are no longer cached.

    3.5.42release notes

  • A leaving branch is no longer treated as the fallback while its mount is pending.

    3.5.42release notes

  • Select elements are re-synced when the model is overridden in a change handler.

    3.5.42release notes

  • The .trim result is preserved when the .trim and .number modifiers are combined.

    3.5.42release notes

  • Restores SSR setup state when handling an async setup result.

    3.5.41release notes

  • Warns when custom element props override native properties.

    3.5.41release notes

  • Preserves defineModel type inference with factory defaults.

    3.5.41release notes

  • Normalizes hidden states during SSR hydration.

    3.5.41release notes

  • Preserves mount order for nested asynchronous custom elements.

    3.5.41release notes

  • Avoids stack overflow when flushing very large post-callback arrays.

    3.5.41release notes

  • Avoids re-fetching resource props when their values have not changed.

    3.5.41release notes

  • Handles transformed template ASTs after cache invalidation.

    3.5.41release notes

  • Supports transitions to a Teleport component child.

    3.5.41release notes

  • Handles nullish v-bind slot props.

    3.5.41release notes

  • Preserves vnode lifecycle behavior in stable v-for lists.

    3.5.41release notes

  • Preserves text input before hydration.

    3.5.41release notes

  • Unwinds dangling blocks when slot content throws.

    3.5.40release notes

  • Passes the namespace when patching dynamic props during hydration.

    3.5.40release notes

  • Handles effects being removed while their scope is stopping.

    3.5.40release notes

  • The component $el type is no longer constrained to Element.

    3.5.40release notes

  • Skips lazy hydration for detached roots.

    3.5.40release notes

  • Handles errors in optimized component renders during server rendering.

    3.5.40release notes

  • Respects the current select model type.

    3.5.40release notes

  • Prevents compiler-generated slot branch keys from leaking into rendered output.

    3.5.40release notes

  • Fixes updates for non-isomorphic block elements.

    3.5.39release notes

  • Hydration now respects data-allow-mismatch on conditional branches.

    3.5.39release notes

  • Types now validate defineModel defaults.

    3.5.39release notes

  • Preserves event names when option modifiers are used.

    3.5.39release notes

  • Corrects recursive filter rewriting in the compiler.

    3.5.39release notes

  • Function children are normalized for elements and Teleport.

    3.5.39release notes

  • Tracking is paused when function refs are invoked.

    3.5.39release notes

  • Dynamic props are now force-patched during hydration.

    3.5.39release notes

  • Preserves the event listener name for once listeners.

    3.5.39release notes

  • Effects are no longer triggered when a set operation fails.

    3.5.39release notes

  • Deduplicates inherited scope IDs during vnode rendering in SSR.

    3.5.39release notes

  • Resolves nested async Teleport content during SSR.

    3.5.39release notes

  • Fixes a Teleport unmount edge case.

    3.5.39release notes

  • Resolves top-level exports from files registered as global types.

    3.5.35release notes

  • Avoids repeated hydration mismatch checks.

    3.5.35release notes

  • Skips idle persisted transition hooks during keep-alive moves.

    3.5.35release notes

  • Propagates synchronous errors from ssrRenderSuspense.

    3.5.35release notes

  • Skips child unmount when a pending mount is discarded.

    3.5.35release notes

  • Avoids double processing v-for keys when used with v-memo.

    3.5.35release notes

  • Type re-exports inside declare global are resolved.

    3.5.34release notes

  • Creating an effect in a stopped scope no longer leaves an orphan effect.

    3.5.34release notes

  • Hash hrefs are preserved on <image> elements.

    3.5.34release notes

  • Props validation avoids coercing symbols.

    3.5.34release notes

  • Vue ref wrapper types are inferred when the source is unresolvable.

    3.5.34release notes

  • An out-in transition in a v-if fragment no longer causes a DOM leak.

    3.5.34release notes

  • Nested :deep selectors in selector pseudos are now handled correctly.

    3.5.33release notes

  • Effect scopes are unlinked correctly when off is called out of order.

    3.5.33release notes

  • Teleport children are no longer moved before they are mounted.

    3.5.33release notes

  • Textarea resize dimensions are preserved.

    3.5.33release notes

  • The placeholder is preserved for conditional explicit default slots.

    3.5.33release notes

  • Prevents currentInstance from leaking into a sibling render during async setup re-entry.

    3.5.32release notes

  • Allows customRef to use different getter and setter types.

    3.5.32release notes

  • Uses private branding for shallowReactive.

    3.5.32release notes

  • Handles updates that occur before a deferred mount.

    3.5.32release notes

  • compiler-sfc now allows Node.js subpath import patterns in asset URLs.

    3.5.31release notes

  • defineModel now supports a template literal as its name.

    3.5.31release notes

  • mergeProps preserves nullish event handlers.

    3.5.31release notes

  • Model listeners are no longer merged when their value is null or undefined.

    3.5.31release notes

  • The shallowReactive marker no longer leaks into value unions.

    3.5.31release notes

  • Component effect scopes are cleaned up after an SSR render.

    3.5.31release notes

  • Suspense avoids unmounting its active branch twice when wrapped in a transition.

    3.5.31release notes

  • The Suspense vnode's el is updated during a branch self-update.

    3.5.31release notes

  • Teleport mounting and updating are deferred until Suspense resolves.

    3.5.31release notes

  • toRef normalizes property keys before dependency lookup, with improved types.

    3.5.31release notes

  • The enter guard is skipped while HMR is updating.

    3.5.31release notes

  • Detached v-for memo vnodes are invalidated after unmount.

    3.5.31release notes

  • The activeElement check for v-model now works in Shadow DOM.

    3.5.31release notes

  • Calling reduce on reactive arrays preserves reactivity.

    3.5.30release notes

  • Child component styles are injected in the correct order before parent styles.

    3.5.30release notes

  • Parent components are properly located when slotted in Shadow DOM.

    3.5.30release notes

  • Props are properly patched for Vue custom elements.

    3.5.30release notes

  • Generics work with runtime props in defineComponent.

    3.5.30release notes

  • Handles the edge case of a Set initialized with reactive values.

    3.5.30release notes

  • Adding values avoids duplicate raw/proxy entries in a Set.

    3.5.30release notes

  • Class and style typing is narrowed for TSX.

    3.5.30release notes

  • Vue now warns about negative numbers used in v-for.

    3.5.30release notes

  • Prevents a watch from firing after an async setup await during SSR.

    3.5.30release notes

  • Server rendering now renders className as an escaped string.

    3.5.29release notes

  • Prevents an enter transition from starting while a leave transition is in progress.

    3.5.29release notes

  • Prevents an instance leak in withAsyncContext.

    3.5.29release notes

  • Async component updates that occur before the component resolves are handled properly.

    3.5.28release notes

  • Transition done callbacks no longer receive an unexpected cancelled parameter.

    3.5.28release notes

  • EffectScope is marked with __v_skip to prevent reactive conversion.

    3.5.28release notes

  • compiler-sfc now tries resolving .mts and .cts files.

    3.5.28release notes

  • Child components are not updated when the style remains unchanged.

    3.5.28release notes

  • Disabled Teleport targets and their anchors are handled properly.

    3.5.28release notes

  • Move translation is corrected for scaled elements by using the element rect.

    3.5.28release notes

  • A setup ref is no longer updated for a useTemplateRef key.

    3.5.28release notes

  • Generated parameters are now provided when using withDefaults.

    3.5.28release notes

  • withModifiers now handles null or undefined handlers.

    3.5.28release notes

  • Server rendering uses the ssrRenderClass helper for the className attribute.

    3.5.27release notes

  • Collection iteration now inherits iterator instance methods.

    3.5.27release notes

  • Correctly handles variable shadowing in a for loop when destructuring defineProps.

    3.5.27release notes

  • Handles indexed access types in declare global blocks.

    3.5.27release notes

  • Uses the correct scope when resolving indexed access types from external files.

    3.5.27release notes

  • Reserved props are no longer patched for custom elements.

    3.5.27release notes

  • Handles v-bind modifiers when rendering attributes during SSR.

    3.5.27release notes

  • Ensures the correct anchor element is used for deeper unresolved async components.

    3.5.26release notes

  • Fixes the compat handler for draggable.

    3.5.26release notes

  • Handles updates to cached text nodes during hot module replacement.

    3.5.26release notes

  • Uses the resolved component name when pruning async components from the cache.

    3.5.26release notes

  • Handles SSR attribute fallthrough when whitespace is preserved.

    3.5.26release notes

  • Fixes an edge case when patching stable fragments.

    3.5.26release notes

  • Handles the v-model deprecation warning when appContext is missing.

    3.5.26release notes

  • Demotes const reactive bindings used in v-model.

    3.5.26release notes

  • Keeps Options API typing intact when expose is used.

    3.5.25release notes

  • Correctly wraps iterated array items so their readonly status is preserved.

    3.5.25release notes

  • Warns when provide is used after mounting, helping developers catch calls made too late.

    3.5.25release notes

  • Defers clearing the fallback vnode el when it has directives.

    3.5.25release notes

  • Fixes edge cases involving ref unwrapping.

    3.5.25release notes

  • Custom element prop patching is batched.

    3.5.23release notes

  • Slot retrieval is optimized to avoid duplicates.

    3.5.23release notes

  • Hydration avoids mismatches when interpolated text contains newlines.

    3.5.23release notes

  • The iframe sandbox value is handled as an attribute to prevent unintended behavior.

    3.5.23release notes

  • Props and children are passed to the loading component.

    3.5.23release notes

  • Numeric literals and template literals without expressions are resolved as static property keys.

    3.5.23release notes

  • Animations use offsetLeft and offsetTop instead of getBoundingClientRect to avoid transform scale affecting them.

    3.5.23release notes

  • Expressions containing TypeScript type assertions are now handled correctly by the compiler.

    3.5.23release notes

  • The compiler now correctly handles v-bind shorthand in in-DOM templates.

    3.5.23release notes

  • The number modifier is now handled on change.

    3.5.23release notes

  • Server-side rendering now handles textarea elements with the v-text directive.

    3.5.23release notes