Frontmatter
| id | 9200 |
| title | Optimization: Record Versioning & Component Column Short-Circuit |
| state | Closed |
| labels | enhancementperformancecore |
| assignees | tobiu |
| createdAt | Feb 17, 2026, 4:02 PM |
| updatedAt | Feb 19, 2026, 1:50 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9200 |
| author | tobiu |
| commentsCount | 2 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 19, 2026, 1:50 PM |
Optimization: Record Versioning & Component Column Short-Circuit

Input from Gemini 3 Pro:
✦ ### Strategic Clarification: The "Green Software" Impact
While limiting VDOM traffic is valuable, the primary driver for this optimization is reducing CPU and Memory overhead in the App Worker.
Currently,
Neo.grid.column.Component#cellRendererexecutes the following chain for every cell on every scroll frame, even if the data is identical:
- Allocation: Creates a new
componentConfigobject.- Execution: Calls
component.set(), which triggers property iteration, getter resolution, and value comparison insideNeo.core.Config.The Optimization: By checking
record.versionbefore this chain starts, we short-circuit the entire process.
- 0 Allocations
- 0 Config System Lookups
This is a pure "Green Software" optimization. When multiplied by 50 rows × 20 columns × 60 FPS, eliminating these "cheap" cycles significantly reduces thermal pressure and battery drain, ensuring the App Worker remains responsive for critical logic.

Input from Gemini 3 Pro:
✦ Implemented Record Versioning and Grid Component Column optimization.
Changes:
Neo.data.RecordFactory: Added aversionproperty to records. This integer increments whenever a record field is modified (viaset()or property assignment).Neo.grid.column.Component: UpdatedcellRendererto checkrecord.version. If the component instance is being recycled for the same record and the same version, the method now returns early. This skips the execution of thecomponentconfig factory function and avoids the overhead ofcomponent.set().- Tests: Added unit tests for both
RecordFactoryversioning logic and theComponentcolumn optimization pattern.This change significantly reduces CPU usage during grid scrolling and redundant store updates, particularly for grids with complex component columns (like Sparklines or Heuristics).
Objective
Implement a "Record Versioning" mechanism to allow
Neo.grid.column.Componentto short-circuit redundant updates during rendering, optimizing horizontal scrolling and grid updates.Motivation
In
Neo.grid.Rowpooling, component instances are reused. When a row recycles (or during horizontal scroll when a column re-appears),cellRendereris called, which triggerscomponent.set(config). Even if the record hasn't changed, this often triggers VDOM updates becauseconfigobjects (like arrays for sparklines) are new references.Implementation Plan
Neo.data.RecordFactory:_version(integer) property to the generated Record class._versioninsidesetRecordFieldswhenever a field actually changes.versiongetter.Neo.grid.column.Component:cellRenderer, check if an existingcomponentinstance is being reused.component[recordProperty] === recordANDrecord.version === component.lastRecordVersion.component.set()).component.lastRecordVersion = record.version.Expected Impact
Significant reduction in scripting time during horizontal scrolling and redundant store updates, especially for grids with complex component columns.