From cde15b07bfd869b0dd7278114d21e894f3d44a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=9D=A8=E5=B8=86?= <39647285+leno23@users.noreply.github.com> Date: Thu, 21 Aug 2025 17:39:55 +0800 Subject: [PATCH 1/6] chore: fix typo --- packages/reactivity/src/arrayInstrumentations.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/reactivity/src/arrayInstrumentations.ts b/packages/reactivity/src/arrayInstrumentations.ts index e031df4fe10..5bb955bfedd 100644 --- a/packages/reactivity/src/arrayInstrumentations.ts +++ b/packages/reactivity/src/arrayInstrumentations.ts @@ -107,7 +107,7 @@ export const arrayInstrumentations: Record = { return reactiveReadArray(this).join(separator) }, - // keys() iterator only reads `length`, no optimisation required + // keys() iterator only reads `length`, no optimization required lastIndexOf(...args: unknown[]) { return searchProxy(this, 'lastIndexOf', args) @@ -200,7 +200,7 @@ function iterator( wrapValue: (value: any) => unknown, ) { // note that taking ARRAY_ITERATE dependency here is not strictly equivalent - // to calling iterate on the proxified array. + // to calling iterate on the proxied array. // creating the iterator does not access any array property: // it is only when .next() is called that length and indexes are accessed. // pushed to the extreme, an iterator could be created in one effect scope, From a48ffdad65d9c97eb0a342a6cd53836a16289afe Mon Sep 17 00:00:00 2001 From: yangdan8 <13532023084@139.com> Date: Thu, 21 Aug 2025 17:52:55 +0800 Subject: [PATCH 2/6] chore(reactivity): optimize size retrieval in createInstrumentations (#13759) --- packages/reactivity/src/collectionHandlers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/reactivity/src/collectionHandlers.ts b/packages/reactivity/src/collectionHandlers.ts index 048b7f38863..ffc3289f2ed 100644 --- a/packages/reactivity/src/collectionHandlers.ts +++ b/packages/reactivity/src/collectionHandlers.ts @@ -125,7 +125,7 @@ function createInstrumentations( get size() { const target = (this as unknown as IterableCollections)[ReactiveFlags.RAW] !readonly && track(toRaw(target), TrackOpTypes.ITERATE, ITERATE_KEY) - return Reflect.get(target, 'size', target) + return target.size }, has(this: CollectionTypes, key: unknown): boolean { const target = this[ReactiveFlags.RAW] From 952886e2999960fdf7d8ed466cdc806ff4a2ccae Mon Sep 17 00:00:00 2001 From: Zhong Date: Sat, 23 Aug 2025 21:30:50 +0800 Subject: [PATCH 3/6] chore(compat): rename legacyresolveScopedSlots to legacyResolveScopedSlots The changes correct the casing of a function name from legacyresolveScopedSlots to legacyResolveScopedSlots in both its definition and usage. No logic, control flow, or public API behavior is altered; only the symbol's casing is updated for consistency. --- packages/runtime-core/src/compat/instance.ts | 4 ++-- packages/runtime-core/src/compat/renderHelpers.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/src/compat/instance.ts b/packages/runtime-core/src/compat/instance.ts index c650113f8ec..0c5dd14d79c 100644 --- a/packages/runtime-core/src/compat/instance.ts +++ b/packages/runtime-core/src/compat/instance.ts @@ -33,7 +33,7 @@ import { legacyPrependModifier, legacyRenderSlot, legacyRenderStatic, - legacyresolveScopedSlots, + legacyResolveScopedSlots, } from './renderHelpers' import { resolveFilter } from '../helpers/resolveAssets' import type { Slots } from '../componentSlots' @@ -183,7 +183,7 @@ export function installCompatInstanceProperties( _b: () => legacyBindObjectProps, _v: () => createTextVNode, _e: () => createCommentVNode, - _u: () => legacyresolveScopedSlots, + _u: () => legacyResolveScopedSlots, _g: () => legacyBindObjectListeners, _d: () => legacyBindDynamicKeys, _p: () => legacyPrependModifier, diff --git a/packages/runtime-core/src/compat/renderHelpers.ts b/packages/runtime-core/src/compat/renderHelpers.ts index ac810087772..aa95585aea9 100644 --- a/packages/runtime-core/src/compat/renderHelpers.ts +++ b/packages/runtime-core/src/compat/renderHelpers.ts @@ -87,7 +87,7 @@ type LegacyScopedSlotsData = Array< | LegacyScopedSlotsData > -export function legacyresolveScopedSlots( +export function legacyResolveScopedSlots( fns: LegacyScopedSlotsData, raw?: Record, // the following are added in 2.6 From 0f916d8c391ebdceb878fea6d6c1251767697017 Mon Sep 17 00:00:00 2001 From: Zhong Date: Sat, 23 Aug 2025 21:32:53 +0800 Subject: [PATCH 4/6] types(compiler-sfc): add explicit return type to genModelProps (#13441) --- packages/compiler-sfc/src/script/defineModel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compiler-sfc/src/script/defineModel.ts b/packages/compiler-sfc/src/script/defineModel.ts index 05082800284..a0b5e11fe4f 100644 --- a/packages/compiler-sfc/src/script/defineModel.ts +++ b/packages/compiler-sfc/src/script/defineModel.ts @@ -114,7 +114,7 @@ export function processDefineModel( return true } -export function genModelProps(ctx: ScriptCompileContext) { +export function genModelProps(ctx: ScriptCompileContext): string | undefined { if (!ctx.hasDefineModelCall) return const isProd = !!ctx.options.isProd From 1031e8de08b735059217b1ad0057f62565c99c4f Mon Sep 17 00:00:00 2001 From: edison Date: Mon, 25 Aug 2025 14:52:50 +0800 Subject: [PATCH 5/6] fix(runtime-dom): add name to vShow for prop mismatch check (#13806) close #13805 re-fix #13744 revert #13777 The implementation in #13777 requires users to configure __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__, otherwise errors like #13805 will occur. --- packages/runtime-dom/src/directives/vShow.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/runtime-dom/src/directives/vShow.ts b/packages/runtime-dom/src/directives/vShow.ts index 2fa934efe52..393d2de11d3 100644 --- a/packages/runtime-dom/src/directives/vShow.ts +++ b/packages/runtime-dom/src/directives/vShow.ts @@ -9,7 +9,9 @@ export interface VShowElement extends HTMLElement { [vShowHidden]: boolean } -export const vShow: ObjectDirective & { name?: 'show' } = { +export const vShow: ObjectDirective & { name: 'show' } = { + // used for prop mismatch check during hydration + name: 'show', beforeMount(el, { value }, { transition }) { el[vShowOriginalDisplay] = el.style.display === 'none' ? '' : el.style.display @@ -45,10 +47,6 @@ export const vShow: ObjectDirective & { name?: 'show' } = { }, } -if (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) { - vShow.name = 'show' -} - function setDisplay(el: VShowElement, value: unknown): void { el.style.display = value ? el[vShowOriginalDisplay] : 'none' el[vShowHidden] = !value From 3aa782df381269b9e83e8b15d18e81495a6c57e6 Mon Sep 17 00:00:00 2001 From: daiwei Date: Mon, 25 Aug 2025 15:08:32 +0800 Subject: [PATCH 6/6] release: v3.5.20 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- packages/compiler-core/package.json | 2 +- packages/compiler-dom/package.json | 2 +- packages/compiler-sfc/package.json | 2 +- packages/compiler-ssr/package.json | 2 +- packages/reactivity/package.json | 2 +- packages/runtime-core/package.json | 2 +- packages/runtime-dom/package.json | 2 +- packages/server-renderer/package.json | 2 +- packages/shared/package.json | 2 +- packages/vue-compat/package.json | 2 +- packages/vue/package.json | 2 +- 13 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 210af62a698..fbdd83438aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [3.5.20](https://github.com/vuejs/core/compare/v3.5.19...v3.5.20) (2025-08-25) + + +### Bug Fixes + +* **runtime-dom:** add name to vShow for prop mismatch check ([#13806](https://github.com/vuejs/core/issues/13806)) ([1031e8d](https://github.com/vuejs/core/commit/1031e8de08b735059217b1ad0057f62565c99c4f)), closes [#13805](https://github.com/vuejs/core/issues/13805) re-fix [#13744](https://github.com/vuejs/core/issues/13744) revert [#13777](https://github.com/vuejs/core/issues/13777) + + + ## [3.5.19](https://github.com/vuejs/core/compare/v3.5.18...v3.5.19) (2025-08-21) diff --git a/package.json b/package.json index 3b23428e63d..b84deca0a91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "3.5.19", + "version": "3.5.20", "packageManager": "pnpm@10.15.0", "type": "module", "scripts": { diff --git a/packages/compiler-core/package.json b/packages/compiler-core/package.json index a1f5aafff39..519638403cf 100644 --- a/packages/compiler-core/package.json +++ b/packages/compiler-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-core", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/compiler-core", "main": "index.js", "module": "dist/compiler-core.esm-bundler.js", diff --git a/packages/compiler-dom/package.json b/packages/compiler-dom/package.json index 70c7b9e4988..7e8e27d1f0c 100644 --- a/packages/compiler-dom/package.json +++ b/packages/compiler-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-dom", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/compiler-dom", "main": "index.js", "module": "dist/compiler-dom.esm-bundler.js", diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index 72990136a43..67b4520b36e 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-sfc", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/compiler-sfc", "main": "dist/compiler-sfc.cjs.js", "module": "dist/compiler-sfc.esm-browser.js", diff --git a/packages/compiler-ssr/package.json b/packages/compiler-ssr/package.json index 3c90a23a2e4..05477416810 100644 --- a/packages/compiler-ssr/package.json +++ b/packages/compiler-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-ssr", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/compiler-ssr", "main": "dist/compiler-ssr.cjs.js", "types": "dist/compiler-ssr.d.ts", diff --git a/packages/reactivity/package.json b/packages/reactivity/package.json index be1e84b8f77..39f407137a6 100644 --- a/packages/reactivity/package.json +++ b/packages/reactivity/package.json @@ -1,6 +1,6 @@ { "name": "@vue/reactivity", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/reactivity", "main": "index.js", "module": "dist/reactivity.esm-bundler.js", diff --git a/packages/runtime-core/package.json b/packages/runtime-core/package.json index 6b20e328685..a1a03c94c65 100644 --- a/packages/runtime-core/package.json +++ b/packages/runtime-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-core", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/runtime-core", "main": "index.js", "module": "dist/runtime-core.esm-bundler.js", diff --git a/packages/runtime-dom/package.json b/packages/runtime-dom/package.json index c914833f42c..946c70d4f6e 100644 --- a/packages/runtime-dom/package.json +++ b/packages/runtime-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-dom", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/runtime-dom", "main": "index.js", "module": "dist/runtime-dom.esm-bundler.js", diff --git a/packages/server-renderer/package.json b/packages/server-renderer/package.json index 55df227c414..09e557335e8 100644 --- a/packages/server-renderer/package.json +++ b/packages/server-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@vue/server-renderer", - "version": "3.5.19", + "version": "3.5.20", "description": "@vue/server-renderer", "main": "index.js", "module": "dist/server-renderer.esm-bundler.js", diff --git a/packages/shared/package.json b/packages/shared/package.json index ced34d50bf1..6a419962ba4 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@vue/shared", - "version": "3.5.19", + "version": "3.5.20", "description": "internal utils shared across @vue packages", "main": "index.js", "module": "dist/shared.esm-bundler.js", diff --git a/packages/vue-compat/package.json b/packages/vue-compat/package.json index c5da1c5d687..66639d927cd 100644 --- a/packages/vue-compat/package.json +++ b/packages/vue-compat/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compat", - "version": "3.5.19", + "version": "3.5.20", "description": "Vue 3 compatibility build for Vue 2", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", diff --git a/packages/vue/package.json b/packages/vue/package.json index 4ec0d49a873..1424568b51b 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "vue", - "version": "3.5.19", + "version": "3.5.20", "description": "The progressive JavaScript framework for building modern web UI.", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js",