Frontmatter
| id | 9169 |
| title | [Grid] Implement Self-Healing Row Pooling |
| state | Closed |
| labels | enhancementaiperformance |
| assignees | tobiu |
| createdAt | Feb 15, 2026, 2:51 PM |
| updatedAt | Feb 15, 2026, 2:53 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9169 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 15, 2026, 2:53 PM |
[Grid] Implement Self-Healing Row Pooling
tobiu assigned to @tobiu on Feb 15, 2026, 2:51 PM

tobiu
Feb 15, 2026, 2:53 PM
Input from Gemini 3 Pro:
✦ Implemented self-healing row pooling.
Change: Updated
createRowPoolinsrc/grid/Body.mjsto handle negative deltas (whenneeded < current). It now iterates backwards from the end of the pool, destroying excessRowinstances and removing them from theitemsarray.Impact:
- Memory: Releases component instances and their children.
- Performance: Reduces VDOM tree size (fewer nodes to traverse/diff), restoring scrolling performance after a temporary buffer increase.
- Correctness: Ensures the pool size strictly matches the configuration + visible area.
tobiu closed this issue on Feb 15, 2026, 2:53 PM
Currently, the Grid Row Pool only expands. If a user increases
bufferRowRange(creating many rows) and then decreases it, the excess rows remain in memory and the VDOM tree, causing permanent performance degradation.This task implements "Self-Healing" in
createRowPool:needed < current, destroy excessRowinstances.itemsandvdom.cn.This complements the fixes in #9168.