Frontmatter
| id | 9054 |
| title | Perf: Optimize GitHubOrgs with Node Pooling & Visibility |
| state | Closed |
| labels | bugaiperformance |
| assignees | tobiu |
| createdAt | Feb 8, 2026, 7:33 PM |
| updatedAt | Feb 8, 2026, 7:49 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9054 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8930 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 8, 2026, 7:49 PM |
Perf: Optimize GitHubOrgs with Node Pooling & Visibility

tobiu
Feb 8, 2026, 7:39 PM
Input from Gemini 3 Pro:
✦ ✦ Optimization Implemented: Node Pooling with Visibility Toggling
To resolve the layout thrashing caused by the
GitHubOrgscomponent during grid scrolling, we implemented a stable-DOM architecture.1. CSS Containment & Visibility:
- Applied
contain: layout paint style;to the.neo-github-orgswrapper.- Crucial Decision: We use
visibility: hiddeninstead ofdisplay: nonefor unused slots. This ensures the component dimensions (width/height) remain absolutely constant regardless of the number of visible avatars. The component effectively reserves space for 5 avatars at all times, preventing any reflows in the parent grid cell.2. Pre-allocated Node Pooling:
- The component now initializes a fixed pool of
maxItems(5) anchor/image nodes on the first data update.- Instead of destroying/recreating nodes,
afterSetOrgsrecycles them:
- Used: Update attributes (
src,href), setstyle: null(visible).- Unused: Clear attributes, set
style: { visibility: 'hidden' }.Impact:
- Zero Structural Deltas: Scrolling generates 0
insertNodeorremoveNodeoperations for this column.- Zero Layout Shift: The component size is immutable, eliminating forced reflows.
- 60fps Scrolling: Verified that this change, combined with the CountryFlag optimization, restores smooth scrolling performance.
tobiu cross-referenced by #9055 on Feb 8, 2026, 7:49 PM
tobiu assigned to @tobiu on Feb 8, 2026, 7:49 PM
tobiu closed this issue on Feb 8, 2026, 7:49 PM
tobiu added parent issue #8930 on Feb 8, 2026, 7:49 PM
The
Neo.component.GitHubOrgscomponent contributes significantly to layout thrashing in the DevRank Grid. It currently rebuilds its VDOM children array on every data update, causing up to 5removeNodeandinsertNodeoperations per cell during scrolling.Optimization Strategy:
contain: layout paint styleto.neo-github-orgs.afterSetOrgsto maintain a fixed pool ofmaxItems(default 5) VDOM nodes.src,href).style: { visibility: 'hidden' }instead ofdisplay: none. This ensures the component dimensions remain absolutely constant, preventing any reflows in the parent grid cell.Benefits: