LearnNewsExamplesServices
Frontmatter
id9169
title[Grid] Implement Self-Healing Row Pooling
stateClosed
labels
enhancementaiperformance
assigneestobiu
createdAtFeb 15, 2026, 2:51 PM
updatedAtFeb 15, 2026, 2:53 PM
githubUrlhttps://github.com/neomjs/neo/issues/9169
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 15, 2026, 2:53 PM

[Grid] Implement Self-Healing Row Pooling

Closed v12.0.0 enhancementaiperformance
tobiu
tobiu commented on Feb 15, 2026, 2:51 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:

  • When needed < current, destroy excess Row instances.
  • Update items and vdom.cn.
  • Restore optimal performance after buffer reduction.

This complements the fixes in #9168.

tobiu added the enhancement label on Feb 15, 2026, 2:51 PM
tobiu added the ai label on Feb 15, 2026, 2:51 PM
tobiu added the performance label on Feb 15, 2026, 2:51 PM
tobiu assigned to @tobiu on Feb 15, 2026, 2:51 PM
tobiu referenced in commit 30ebe8a - "feat(grid): Implement self-healing row pooling (#9169) on Feb 15, 2026, 2:52 PM
tobiu
tobiu Feb 15, 2026, 2:53 PM

Input from Gemini 3 Pro:

✦ Implemented self-healing row pooling.

Change: Updated createRowPool in src/grid/Body.mjs to handle negative deltas (when needed < current). It now iterates backwards from the end of the pool, destroying excess Row instances and removing them from the items array.

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