]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(runtime-vapor): improve hydration code treeshaking (#14322)
authoredison <daiwei521@126.com>
Thu, 15 Jan 2026 07:04:48 +0000 (15:04 +0800)
committerGitHub <noreply@github.com>
Thu, 15 Jan 2026 07:04:48 +0000 (15:04 +0800)
Add `if (!isHydrating) return` guards to hydration methods for
better dead code elimination when SSR hydration is unused.

packages/runtime-vapor/src/components/Teleport.ts
packages/runtime-vapor/src/vdomInterop.ts

index 0e5b26ca1726e17611709e10f07b55ada11c8a4a..738766a4e049acd0e82965a01c16e00e742d2d4a 100644 (file)
@@ -264,6 +264,7 @@ export class TeleportFragment extends VaporFragment {
   }
 
   private hydrateDisabledTeleport(targetNode: Node | null): void {
+    if (!isHydrating) return
     let nextNode = this.placeholder!.nextSibling!
     setCurrentHydrationNode(nextNode)
     this.mountAnchor = this.anchor = locateTeleportEndAnchor(nextNode)!
@@ -274,6 +275,7 @@ export class TeleportFragment extends VaporFragment {
   }
 
   private mountChildren(target: Node): void {
+    if (!isHydrating) return
     target.appendChild((this.targetStart = createTextNode('')))
     target.appendChild(
       (this.mountAnchor = this.targetAnchor = createTextNode('')),
@@ -294,6 +296,7 @@ export class TeleportFragment extends VaporFragment {
   }
 
   hydrate = (): void => {
+    if (!isHydrating) return
     const target = (this.target = resolveTeleportTarget(
       this.resolvedProps!,
       querySelector,
index 4b9e56bb4e4b60f077c03d00de4b9ebf00a1b04e..5010d2afd7066a54546a68e26411f9745253e973 100644 (file)
@@ -223,6 +223,7 @@ const vaporInteropImpl: Omit<
     )
     return _next(node)
   },
+
   hydrateSlot(vnode, node) {
     const { slot } = vnode.vs!
     const propsRef = (vnode.vs!.ref = shallowRef(vnode.props))
@@ -328,6 +329,7 @@ function mountVNode(
   }
 
   frag.hydrate = () => {
+    if (!isHydrating) return
     hydrateVNode(vnode, parentComponent as any)
     onScopeDispose(unmount, true)
     isMounted = true
@@ -457,6 +459,7 @@ function createVDOMComponent(
   }
 
   frag.hydrate = () => {
+    if (!isHydrating) return
     hydrateVNode(
       vnode,
       parentComponent as any,
@@ -667,6 +670,7 @@ function renderVDOMSlot(
   }
 
   frag.hydrate = () => {
+    if (!isHydrating) return
     render()
     isMounted = true
   }