-
-
Notifications
You must be signed in to change notification settings - Fork 198
Description
The recent implementation of Disjoint VDOM Updates (Teleportation) introduced a regression where disjoint child updates can be incorrectly dropped from the update batch.
This occurs when:
- A Parent component is updating with
updateDepth > 1. - The Parent has at least one merged child (triggering Sparse Tree generation via
mergedChildIds). - A Disjoint Child (Distance < ParentDepth) is updating independently in the same batch.
- The Disjoint Child is NOT in the Parent's
mergedChildIdsset.
The current collision filtering logic (parentDepth > distance) deletes the Disjoint Child's update, assuming the Parent will cover it. However, because the Parent is generating a Sparse Tree (mergedChildIds is present), TreeBuilder prunes any child not in the AllowList.
Result: The Disjoint Child is deleted from the batch AND pruned from the Parent payload, leading to a lost update (e.g., Loading Mask failing to show).
The fix is to refine the collision detection in src/mixin/VdomLifecycle.mjs to check if the Parent is excluding the Child (Sparse Mode) before deleting the disjoint update.