Skip to content

fix(runtime-vapor): only merge fallthrough attrs into a root component's props when there are some - #15739

Open
ValentinYoushkevich wants to merge 1 commit into
vuejs:minorfrom
ValentinYoushkevich:fix/vapor-skip-empty-fallthrough-merge
Open

ValentinYoushkevich wants to merge 1 commit into
vuejs:minorfrom
ValentinYoushkevich:fix/vapor-skip-empty-fallthrough-merge

Conversation

@ValentinYoushkevich

Copy link
Copy Markdown

Since #15708, a Vapor root component that can receive fallthrough attrs always merges them into its props, even when there are none. VDOM only merges when the attrs object has keys. So with empty attrs, :style="undefined" turns into {} (and a style string into an object) in Vapor, while VDOM passes it through (playground).

antdv-next hits this in its notification hook: ContextHolder declares @ready and passes an optional style function to its root, which then calls style?.(placement) and throws.

This marks the injected fallthrough source and merges it only when it has keys. An explicit v-bind still merges, as mergeProps does.

@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 95dae603-125d-4461-9f4c-0a85d643ba08

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Oct 1, 2026

Copy link
Copy Markdown

Open in StackBlitz

@vue/compiler-core

pnpm add https://pkg.pr.new/@vue/compiler-core@15739
npm i https://pkg.pr.new/@vue/compiler-core@15739
yarn add https://pkg.pr.new/@vue/compiler-core@15739.tgz

@vue/compiler-dom

pnpm add https://pkg.pr.new/@vue/compiler-dom@15739
npm i https://pkg.pr.new/@vue/compiler-dom@15739
yarn add https://pkg.pr.new/@vue/compiler-dom@15739.tgz

@vue/compiler-sfc

pnpm add https://pkg.pr.new/@vue/compiler-sfc@15739
npm i https://pkg.pr.new/@vue/compiler-sfc@15739
yarn add https://pkg.pr.new/@vue/compiler-sfc@15739.tgz

@vue/compiler-ssr

pnpm add https://pkg.pr.new/@vue/compiler-ssr@15739
npm i https://pkg.pr.new/@vue/compiler-ssr@15739
yarn add https://pkg.pr.new/@vue/compiler-ssr@15739.tgz

@vue/compiler-vapor

pnpm add https://pkg.pr.new/@vue/compiler-vapor@15739
npm i https://pkg.pr.new/@vue/compiler-vapor@15739
yarn add https://pkg.pr.new/@vue/compiler-vapor@15739.tgz

@vue/reactivity

pnpm add https://pkg.pr.new/@vue/reactivity@15739
npm i https://pkg.pr.new/@vue/reactivity@15739
yarn add https://pkg.pr.new/@vue/reactivity@15739.tgz

@vue/runtime-core

pnpm add https://pkg.pr.new/@vue/runtime-core@15739
npm i https://pkg.pr.new/@vue/runtime-core@15739
yarn add https://pkg.pr.new/@vue/runtime-core@15739.tgz

@vue/runtime-dom

pnpm add https://pkg.pr.new/@vue/runtime-dom@15739
npm i https://pkg.pr.new/@vue/runtime-dom@15739
yarn add https://pkg.pr.new/@vue/runtime-dom@15739.tgz

@vue/runtime-vapor

pnpm add https://pkg.pr.new/@vue/runtime-vapor@15739
npm i https://pkg.pr.new/@vue/runtime-vapor@15739
yarn add https://pkg.pr.new/@vue/runtime-vapor@15739.tgz

@vue/server-renderer

pnpm add https://pkg.pr.new/@vue/server-renderer@15739
npm i https://pkg.pr.new/@vue/server-renderer@15739
yarn add https://pkg.pr.new/@vue/server-renderer@15739.tgz

@vue/shared

pnpm add https://pkg.pr.new/@vue/shared@15739
npm i https://pkg.pr.new/@vue/shared@15739
yarn add https://pkg.pr.new/@vue/shared@15739.tgz

vue

pnpm add https://pkg.pr.new/vue@15739
npm i https://pkg.pr.new/vue@15739
yarn add https://pkg.pr.new/vue@15739.tgz

@vue/compat

pnpm add https://pkg.pr.new/@vue/compat@15739
npm i https://pkg.pr.new/@vue/compat@15739
yarn add https://pkg.pr.new/@vue/compat@15739.tgz

commit: f59914d

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

Size Report

Bundles

File Size Gzip Brotli
compiler-dom.global.prod.js 87.2 kB (+1 B) 30.6 kB (+1 B) 26.9 kB (-42 B)
runtime-dom.global.prod.js 117 kB (+125 B) 43.9 kB (+54 B) 39.3 kB (+54 B)
vue.global.prod.js 177 kB (+125 B) 64 kB (+63 B) 57 kB (+46 B)

Usages

Name Size Gzip Brotli
createApp (CAPI only) 53.2 kB (+106 B) 20.7 kB (+45 B) 18.9 kB (+20 B)
createApp 62 kB (+106 B) 23.9 kB (+42 B) 21.8 kB (+27 B)
createApp + vaporInteropPlugin 129 kB (+6.77 kB) 46.6 kB (+2.4 kB) 41.9 kB (+2.12 kB)
createVaporApp 34.2 kB (+3.4 kB) 13.2 kB (+1.32 kB) 12.1 kB (+1.2 kB)
createSSRApp 67 kB (+106 B) 26 kB (+48 B) 23.6 kB (+31 B)
createVaporSSRApp 40.9 kB (+3.82 kB) 15.6 kB (+1.47 kB) 14.3 kB (+1.34 kB)
defineCustomElement 68.5 kB (+106 B) 25.9 kB (+47 B) 23.6 kB (+57 B)
defineVaporCustomElement 48.7 kB (+2.54 kB) 17.8 kB (+981 B) 16.3 kB (+919 B)
overall 77.5 kB (+106 B) 29.5 kB (+46 B) 26.7 kB (+98 B)

@edison1105 edison1105 added the scope: vapor related to vapor mode label Oct 1, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: vapor related to vapor mode

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants