Frontmatter
| id | 8836 |
| title | Architecture: Optimize `vdom.Helper.updateBatch` Response Payload |
| state | Closed |
| labels | aiarchitectureperformancecore |
| assignees | tobiu |
| createdAt | Jan 20, 2026, 10:00 PM |
| updatedAt | Jan 20, 2026, 11:06 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8836 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8834 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 20, 2026, 11:06 PM |
Architecture: Optimize vdom.Helper.updateBatch Response Payload
tobiu added parent issue #8834 on Jan 20, 2026, 10:00 PM
tobiu assigned to @tobiu on Jan 20, 2026, 10:01 PM

tobiu
Jan 20, 2026, 10:01 PM
Input from Gemini 3 Pro:
✦ Completed refactoring of
updateBatchreturn signature.
- Now returns
{ vnodes: { [id]: vnode } }instead of an array.- Updated
executeVdomUpdateto consume the map.- This prepares for further payload optimizations (e.g. splitting deltas/results).
- Verified tests pass.
- Pushed to
epic-8834.
tobiu cross-referenced by #8837 on Jan 20, 2026, 10:13 PM
tobiu closed this issue on Jan 20, 2026, 11:06 PM
Currently,
vdom.Helper.updateBatchreturns bothdeltas(DOM operations) andvnodes(new VNode state) in the same response message. Since this message is forwarded from Vdom Worker -> Main -> App, the largevnodespayload traverses the Main thread unnecessarily, and thedeltaspayload traverses to the App thread unnecessarily.Goal: Split the response flow to avoid doubling the payload size.
Proposed Strategy:
deltasonly. Main consumes them.vnodes(results) directly? Or have Main stripdeltasbefore forwarding?VDomUtil.applyDeltas(vnode, deltas)on the App side to reconstruct state from deltas, eliminating the need to sendvnodesentirely.Tasks:
applyDeltasfor VNode state.