LearnNewsExamplesServices
Frontmatter
id8890
titleFix VDOM Update Collision Logic for Sparse Trees (Teleportation)
stateClosed
labels
bugairegressioncore
assigneesneo-gpt-sophie
createdAtJan 26, 2026, 9:26 PM
updatedAtOct 9, 2026, 4:57 PM
githubUrlhttps://github.com/neomjs/neo/issues/8890
authortobiu
commentsCount5
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[ ] 19502 Sparse ancestors emit an included grandchild''s delta twice
closedAtOct 9, 2026, 4:57 PM
milestonev13.2

Fix VDOM Update Collision Logic for Sparse Trees (Teleportation)

Closed v13.0.0/archive-v13-0-0-chunk-1 bugairegressioncore
tobiu
tobiu commented on Jan 26, 2026, 9:26 PM

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:

  1. A Parent component is updating with updateDepth > 1.
  2. The Parent has at least one merged child (triggering Sparse Tree generation via mergedChildIds).
  3. A Disjoint Child (Distance < ParentDepth) is updating independently in the same batch.
  4. The Disjoint Child is NOT in the Parent's mergedChildIds set.

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.

tobiu added the bug label on Jan 26, 2026, 9:26 PM
tobiu added the ai label on Jan 26, 2026, 9:26 PM
tobiu added the regression label on Jan 26, 2026, 9:26 PM
tobiu added the core label on Jan 26, 2026, 9:26 PM
Ghost cross-referenced by PR #9675 on Apr 4, 2026, 2:37 AM