LearnNewsExamplesServices
Frontmatter
id8838
titleRefine Disjoint VDOM Updates: Depth Handling & Collision Filtering
stateClosed
labels
bugaicore
assigneestobiu
createdAtJan 20, 2026, 10:55 PM
updatedAtJan 20, 2026, 10:56 PM
githubUrlhttps://github.com/neomjs/neo/issues/8838
authortobiu
commentsCount1
parentIssue8834
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJan 20, 2026, 10:56 PM

Refine Disjoint VDOM Updates: Depth Handling & Collision Filtering

Closed v11.23.0 bugaicore
tobiu
tobiu commented on Jan 20, 2026, 10:55 PM

Objective

Fix regressions in CardLayout and hybrid update scenarios by refining the disjoint update logic.

Changes

  1. Respect updateDepth: Remove the hardcoded depth: 1 override in VdomLifecycle.executeVdomUpdate. Allow components to request deep updates (e.g., depth: -1 for CardLayout removals).
  2. Collision Filtering: Implement a filtering mechanism in executeVdomUpdate to detect and remove child updates that are already covered by a parent's deep update (hybrid scenario). This prevents double updates.
  3. Test Updates: Update RealWorldUpdates.spec.mjs to reflect the correct behavior (suppressed ghost updates).
tobiu added the bug label on Jan 20, 2026, 10:55 PM
tobiu added the ai label on Jan 20, 2026, 10:55 PM
tobiu added the core label on Jan 20, 2026, 10:55 PM
tobiu added parent issue #8834 on Jan 20, 2026, 10:55 PM
tobiu assigned to @tobiu on Jan 20, 2026, 10:55 PM
tobiu
tobiu Jan 20, 2026, 10:56 PM

Input from Gemini 3 Pro:

✦ I have implemented the refinements to the disjoint update logic.

  1. Depth Handling: executeVdomUpdate now passes null as the second argument to getVdomUpdatePayload, allowing the component's internal updateDepth to take precedence. This fixes the CardLayout regression where depth: -1 was being ignored.
  2. Collision Filtering: Added logic to executeVdomUpdate to filter out child updates that are covered by an ancestor's deep update within the same batch.
  3. Verification: Updated RealWorldUpdates.spec.mjs to expect 3 deltas (suppressing the ghost update), and verified that all tests pass.

This resolves the immediate regressions.

tobiu closed this issue on Jan 20, 2026, 10:56 PM