Frontmatter
| id | 8467 |
| title | Centralize and Enforce Stable VDOM IDs in VdomLifecycle |
| state | Closed |
| labels | airefactoringcore |
| assignees | tobiu |
| createdAt | Jan 9, 2026, 2:59 PM |
| updatedAt | Jan 9, 2026, 3:01 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8467 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 9, 2026, 3:01 PM |
Centralize and Enforce Stable VDOM IDs in VdomLifecycle
tobiu assigned to @tobiu on Jan 9, 2026, 3:01 PM

tobiu
Jan 9, 2026, 3:01 PM
Input from Gemini 3 Pro:
✦ ✦ I have centralized the stable VDOM ID logic into
Neo.mixin.VdomLifecycle.Changes
- New Method: Added
ensureStableIds()toVdomLifecycle.mjs. This method is the single source of truth for assigningme.idand__wrapperIDs to the VDOM tree.- Enforcement:
ensureStableIds()is now called at the beginning ofinitVnode()andupdateVdom(). This makes the system robust even if a component'svdomobject is replaced entirely at runtime.- Refactoring: Updated
Component.Base#afterSetId()to call the centralized method, removing redundant logic.All "AutoId" unit tests passed.
Commit: 5d069da7a (#8467)
tobiu closed this issue on Jan 9, 2026, 3:01 PM
tobiu cross-referenced by #8469 on Jan 9, 2026, 4:17 PM
Consolidate the stable ID assignment logic (
idand__wrapper) into a single methodensureStableIds()withinNeo.mixin.VdomLifecycle. This method will be invoked duringinitVnode(),updateVdom(), andafterSetId()to ensure components always maintain globally unique and stable VDOM IDs, even if theirvdomobjects are replaced at runtime. This removes redundancy and prevents potential collisions inComponentManager.wrapperNodes.