Skip to content

Fix Grid Row Cell Pooling Move Operations (Regression) #9002

@tobiu

Description

@tobiu

We are observing a regression in Neo.grid.Row where horizontal scrolling triggers massive moveNode operations for pooled cells.

Symptoms:

  • The VDOM engine reports hundreds of moveNode deltas during horizontal scrolling.
  • This defeats the purpose of cell pooling (O(1) stability).

Root Cause:
Recent fixes for Cell Selection Models likely reintroduced dependency on visual order for DOM ID generation or structure, causing the VDOM diff engine to see "reordered" nodes instead of stable, attribute-updated nodes.

Proposed Solution:

  1. Strict Separation: Ensure DOM IDs for pooled cells are strictly index-based (...__cell-0, ...__cell-1) and never change order in the vdom.cn array.
  2. Dataset Identifier: Use a data-cell-id attribute for the logical identifier needed by Selection Models, instead of relying on the DOM ID.
  3. Refactor Selection Model: Update CellModel to query by data-cell-id (or mapped logical ID) rather than DOM ID.

This prioritizes scrolling performance (Zero GC/Layout Thrashing) over Selection Model lookups.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingperformancePerformance improvements and optimizationsregression

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions