Skip to content

perf: Propagate silent flag to Component Column renderer to suppress scrolling updates #8990

@tobiu

Description

@tobiu

Context

The grid scrolling performance has degraded after the Neo.grid.Row refactor. Analysis points to a message flood caused by Component Columns.
When grid.Body scrolls, it updates rows silently (createViewData(silent=true)). However, Neo.grid.Row fails to propagate this silent flag to cellRenderer.
Consequently, grid.column.Component calls component.set() without the silent flag, triggering an individual VDOM update for every component cell in every row on every scroll frame (e.g., 50 rows = 50 extra updates/frame).

Objective

Suppress individual component updates during the scrolling loop by propagating the silent flag.

Changes

  1. src/grid/Row.mjs:
    • Update createVdom to pass silent to applyRendererOutput.
    • Update applyRendererOutput to accept silent and include it in the renderer data object.
  2. src/grid/column/Component.mjs:
    • Update cellRenderer to accept silent from data.
    • Use component.set(config, silent) to leverage component.Abstract's silent update capability.

Expected Result

Significant reduction in VDOM traffic during scrolling for grids with component columns, restoring performance.

Metadata

Metadata

Assignees

Labels

aicoreCore framework functionalityperformancePerformance improvements and optimizations

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions