Frontmatter
| id | 8969 |
| title | perf: Implement Batching and Silent Updates for Grid Scrolling (#8964) |
| state | Closed |
| labels | enhancementaiperformance |
| assignees | tobiu |
| createdAt | Feb 3, 2026, 7:31 PM |
| updatedAt | Feb 4, 2026, 12:52 AM |
| githubUrl | https://github.com/neomjs/neo/issues/8969 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8964 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 4, 2026, 12:52 AM |
perf: Implement Batching and Silent Updates for Grid Scrolling (#8964)
tobiu added parent issue #8964 on Feb 3, 2026, 7:31 PM

tobiu
Feb 4, 2026, 12:52 AM
Input from Gemini 3 Pro:
✦ Implemented batching and silent updates for improved scrolling performance.
Changes:
src/grid/Row.mjs:
- Added
silentparameter toupdateContentandcreateVdom.- Refactored
createVdomto useObject.assign(me.vdom, ...)instead of object replacement. This preserves the VDOM rootidand preventsHelper.createDeltaserrors ("must be called for the same node") during batched updates.- Added logic to explicitly clear stale state (e.g.,
aria-selected) from the reused VDOM object.src/grid/Body.mjs:
- Updated
createViewDatato callitem.updateContent({ silent: true })for all rows in the view.- Added a final, deep update (
updateDepth = -1) at the end ofcreateViewDatato flush all changes in a single VDOM delta message when not in silent mode.This architecture ensures that
Rowcomponents can update their internal VDOM state without triggering individual worker messages, whileGrid.Bodyorchestrates the efficient delivery of these changes to the browser.
tobiu assigned to @tobiu on Feb 4, 2026, 12:52 AM
tobiu closed this issue on Feb 4, 2026, 12:52 AM
silentVdomUpdate: truefor Row updates during high-frequency events (scrolling).Grid.Bodyto send all row updates in a single VDOM delta message to the worker.