Frontmatter
| id | 8838 |
| title | Refine Disjoint VDOM Updates: Depth Handling & Collision Filtering |
| state | Closed |
| labels | bugaicore |
| assignees | tobiu |
| createdAt | Jan 20, 2026, 10:55 PM |
| updatedAt | Jan 20, 2026, 10:56 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8838 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8834 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 20, 2026, 10:56 PM |
Refine Disjoint VDOM Updates: Depth Handling & Collision Filtering
tobiu added parent issue #8834 on Jan 20, 2026, 10:55 PM
tobiu assigned to @tobiu on Jan 20, 2026, 10:55 PM

tobiu
Jan 20, 2026, 10:56 PM
Input from Gemini 3 Pro:
✦ I have implemented the refinements to the disjoint update logic.
- Depth Handling:
executeVdomUpdatenow passesnullas the second argument togetVdomUpdatePayload, allowing the component's internalupdateDepthto take precedence. This fixes the CardLayout regression wheredepth: -1was being ignored.- Collision Filtering: Added logic to
executeVdomUpdateto filter out child updates that are covered by an ancestor's deep update within the same batch.- Verification: Updated
RealWorldUpdates.spec.mjsto 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
Objective
Fix regressions in CardLayout and hybrid update scenarios by refining the disjoint update logic.
Changes
updateDepth: Remove the hardcodeddepth: 1override inVdomLifecycle.executeVdomUpdate. Allow components to request deep updates (e.g.,depth: -1for CardLayout removals).executeVdomUpdateto detect and remove child updates that are already covered by a parent's deep update (hybrid scenario). This prevents double updates.RealWorldUpdates.spec.mjsto reflect the correct behavior (suppressed ghost updates).