diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 8af783a20c9..1f3c2a918d4 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1064,8 +1064,12 @@ function baseCreateRenderer( let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2 - if (__DEV__ && isHmrUpdating) { - // HMR updated, force full diff + if ( + __DEV__ && + // #5523 dev root fragment may inherit directives + (isHmrUpdating || patchFlag & PatchFlags.DEV_ROOT_FRAGMENT) + ) { + // HMR updated / Dev root fragment (w/ comments), force full diff patchFlag = 0 optimized = false dynamicChildren = null @@ -1098,8 +1102,6 @@ function baseCreateRenderer( if ( patchFlag > 0 && patchFlag & PatchFlags.STABLE_FRAGMENT && - // #5523 dev root fragment may inherit directives so always force update - !(__DEV__ && patchFlag & PatchFlags.DEV_ROOT_FRAGMENT) && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result // of renderSlot() with no valid children