diff --git a/packages/runtime-vapor/src/vdomInterop.ts b/packages/runtime-vapor/src/vdomInterop.ts index b916a2c8ebb..e277024d73b 100644 --- a/packages/runtime-vapor/src/vdomInterop.ts +++ b/packages/runtime-vapor/src/vdomInterop.ts @@ -16,6 +16,7 @@ import { isEmitListener, onScopeDispose, renderSlot, + shallowReactive, shallowRef, simpleSetCurrentInstance, } from '@vue/runtime-dom' @@ -163,7 +164,8 @@ function createVDOMComponent( // overwrite how the vdom instance handles props vnode.vi = (instance: ComponentInternalInstance) => { - instance.props = wrapper.props + // ensure props are shallow reactive to align with VDOM behavior. + instance.props = shallowReactive(wrapper.props) const attrs = (instance.attrs = createInternalObject()) for (const key in wrapper.attrs) {