LearnNewsExamplesServices
Frontmatter
id8869
titleFix: VDomUpdate merged updates do not support recursion
stateOpen
labels
bugaicore
assignees[]
createdAtJan 23, 2026, 8:58 PM
updatedAtJan 23, 2026, 8:58 PM
githubUrlhttps://github.com/neomjs/neo/issues/8869
authortobiu
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]

Fix: VDomUpdate merged updates do not support recursion

Openbugaicore
tobiu
tobiu commented on Jan 23, 2026, 8:58 PM

Description: The VDomUpdate manager handles merging child component updates into parent updates to reduce IPC traffic. Currently, getMergedChildIds(ownerId) only retrieves the direct children merged into the owner.

Problem: If we have a nested merge scenario:

  1. Grandchild updates -> Merges into Child.
  2. Child updates -> Merges into Parent.

When Parent updates, getMergedChildIds(Parent) only returns Child. TreeBuilder (running for Parent) sees Child as dirty and expands it. However, when TreeBuilder recurses to Child, it checks if Grandchild is in the mergedChildIds set (Parent's set). It is missing. Therefore, TreeBuilder treats Grandchild as clean and prunes it (sends a placeholder), even though Grandchild has pending updates.

Result: Deeply nested updates can be lost or incorrectly pruned during a merged update cycle.

Proposed Fix: Update Neo.manager.VDomUpdate.getMergedChildIds to recursively traverse the mergedCallbackMap. If a merged child (Child) is itself an owner of updates (Grandchild), those grandchildren IDs must also be added to the returned set.

Related Files:

  • src/manager/VDomUpdate.mjs
tobiu added the bug label on Jan 23, 2026, 8:59 PM
tobiu added the ai label on Jan 23, 2026, 8:59 PM
tobiu added the core label on Jan 23, 2026, 8:59 PM