@@ -190,7 +190,21 @@ class VdomLifecycle extends Base {
190190 }
191191
192192 /**
193- * Internal method to send update requests to the vdom worker
193+ * Internal method to send update requests to the vdom worker.
194+ *
195+ * **Teleportation / Batched Disjoint Updates:**
196+ * This method implements the core logic for "Teleportation". Instead of merging child updates
197+ * into the parent's VDOM tree (which requires expanding the parent's tree to reach the child),
198+ * we collect all merged child updates and send them as a **batch of disjoint payloads**.
199+ *
200+ * 1. **Recursive Collection:** We recursively collect all `mergedChildIds` from the component
201+ * and its descendants.
202+ * 2. **Disjoint Payloads:** For each component in the batch, we generate a "self-only" VDOM
203+ * payload (`updateDepth: 1`). This allows the VDOM engine to update the child directly
204+ * without needing the parent to "bridge" to it.
205+ * 3. **Collision Filtering:** We filter out child updates that are already covered by a
206+ * parent update in the same batch (e.g., if the parent is doing a full tree update).
207+ *
194208 * @param {function } [resolve] used by promiseUpdate()
195209 * @param {function } [reject] used by promiseUpdate()
196210 * @private
@@ -218,7 +232,7 @@ class VdomLifecycle extends Base {
218232 const component = Neo . getComponent ( componentId ) ;
219233 if ( ! component || component . isDestroyed ) return ;
220234
221- // Skip unmounted components. They will be expanded by the Parent's TreeBuilder (Hybrid/Leapfrog)
235+ // Skip unmounted components. They will be expanded by the Parent's TreeBuilder
222236 // and handled via the Parent's resolveVdomUpdate -> syncVnodeTree.
223237 if ( ! component . vnode ) return ;
224238
@@ -599,8 +613,8 @@ class VdomLifecycle extends Base {
599613 *
600614 * **Recursive Traversal:**
601615 * This method recursively walks up the component tree (`distance + 1`). This enables
602- * transitive merging (Grandchild -> Child -> Parent) and leapfrog merging (skipping
603- * clean parents) .
616+ * transitive merging (Grandchild -> Child -> Parent) and merging into ancestors even
617+ * if intermediate parents are not updating .
604618 *
605619 * @param {String } parentId=this.parentId
606620 * @param {Function } [resolve] gets passed by updateVdom()
@@ -820,7 +834,7 @@ class VdomLifecycle extends Base {
820834 // The manager will ensure it's called when the appropriate update cycle completes.
821835 resolve && VDomUpdate . addPromiseCallback ( me . id , resolve ) ;
822836
823- // Attempt to merge into a parent's update cycle (Teleportation/Leapfrog) .
837+ // Attempt to merge into a parent's update cycle.
824838 // We do this even if silent, to ensure we catch the bus if a parent is departing.
825839 if ( me . mergeIntoParentUpdate ( parentId ) ) {
826840 me . needsVdomUpdate = true ;
0 commit comments