Show HN: A reproducible React data grid benchmark with raw browser samples

vitashev1 pts0 comments

React Data Grid Benchmark: Reproducible Comparison

50,000 rows<br>20 columns<br>1,200 × 600 viewport<br>10 measured runs

Measured outputCompatible continuous-scroll results

Gold, silver, and bronze mark the three best values in each compatible metric. Lower is better except estimated FPS.

Production-build measurements on this machineLibraryVersionJS gzipReady medianScroll settleMounted cellsAce Grid Core1.0.15Bronze224.5 KBBronze387.4 msBronze28.1 msSilver220<br>AG Grid Community35.3.1358.7 KB443.2 ms29.8 ms360<br>TanStack Table + Virtual8.21.3Silver78.7 KBSilver369.3 msSilver21.7 ms444<br>Handsontable17.1.0380.9 KB872.8 ms49.8 msGold198<br>React Data Grid7.0.0-beta.57Gold72.3 KBGold367.6 msGold21.2 msBronze264<br>Excluded from ranked tables: MUI X Data Grid Community (MUI X Community forces pagination and limits pages to 100 rows.). Excluded adapters remain available in the live fixtures and raw JSON.<br>Apple M1 Pro · Chrome 149.0.7827.116 · generated June 22, 2026

ScorecardGold, silver, bronze

Rank points across 10 compatible metrics. Lower score wins. Incompatible adapters are excluded from scoring instead of being mixed into the ranking.

Overall medal ranking across compatible metricsLibraryRankScoreCategory wins or best rankAnalysisGoldReact Data Grid112JS gzip, Ready, Jump scrollBest overall in this fixture: smallest bundle, lowest heap, lowest long-task time, and top smoothness.<br>SilverAce Grid Core227Dropped framesStrong on ready time, scroll settle, low DOM count, and smooth continuous scroll; memory is the main gap.<br>BronzeTanStack Table + Virtual332Best rank #2: JS gzip, Ready, Jump scrollSmooth continuous scrolling, but heap growth is high for this fixture.<br>AG Grid Community437Best rank #2: Heap ready, Heap after scroll, Long tasksBalanced memory profile and low long-task cost, but continuous-scroll FPS trails the leaders.<br>Handsontable540Mounted cellsLowest mounted-cell count, but startup and long tasks are expensive here.

Metric guideWhat the numbers mean

JS gzipReachable JavaScript after gzip. Lower means less code to download and parse. CSS is excluded.<br>Ready medianThe middle of 10 runs from navigation until the adapter mounts and two animation frames pass. Lower is better.<br>Scroll settleTime for one large vertical and horizontal scroll jump plus three animation frames. It is not an FPS score.<br>Mounted cellsBody cells in the DOM after the scroll. Fewer cells reduce DOM work, but very low overscan can expose blank edges.

MethodologySame fixture, repeatable protocol

Shared fixture<br>50,000 deterministic rows and 20 fixed-width columns<br>36 px rows in a 1,200 × 600 px viewport<br>Two editable columns, sorting, filtering, and virtual scrolling<br>No network requests, grouping, images, or paid-only features

Measurement protocol<br>Production bundles in headless Chrome<br>Three warmups discarded, then 10 fresh browser contexts<br>The same vertical and horizontal scroll jump for compatible grids<br>Every raw sample committed with exact package versions

Excluded from ranked tables: MUI X Data Grid Community (MUI X Community forces pagination and limits pages to 100 rows.). Excluded adapters remain available in the live fixtures and raw JSON.

Published-package verificationAce Grid 1.0.15 vs AG Grid

Thirty alternating-order runs, five discarded warmups, and a fresh browser context for every sample.

Focused 30-run comparisonLibraryReady medianReady p95Scroll medianScroll p95Mounted cellsAce Grid CoreGold390 msGold398.3 msGold23.9 msGold31.6 msGold220<br>AG Grid CommunitySilver444.2 msSilver454 msSilver29.7 msSilver34 msSilver360<br>On this machine: Ace Grid reached ready 12.2% sooner, settled the scripted scroll 19.5% sooner, and mounted 140 fewer cells. View all raw samples.

Interaction healthMemory, long tasks, and smoothness

Five measured runs after one warmup. Each run performs a two-second continuous scroll in a fresh Chrome context.

Continuous scroll interaction measurementsLibraryHeap readyHeap after scrollLong-task totalEstimated FPSDropped frames >20msAce Grid CoreBronze56.1 MBBronze59 MBBronze133 msBronze85 FPSGold1<br>AG Grid CommunitySilver33.9 MBSilver36.7 MBSilver106 ms57.8 FPS21<br>TanStack Table + Virtual148.7 MB241.6 MB181 msSilver108.1 FPSBronze2<br>Handsontable93.4 MB102.1 MB967 ms75.4 FPSBronze2<br>React Data GridGold17.3 MBGold18 MBGold0 msGold119 FPSGold1<br>Additional interaction measurementsLibraryHeap deltaWorst long taskp95 frameWorst frameAce Grid CoreBronze2.8 MBBronze86 msBronze16.8 msSilver24.5 ms<br>AG Grid CommunitySilver2.8 MBSilver56 ms25 msBronze33.3 ms<br>TanStack Table + Virtual92.9 MB123 msSilver16.6 ms42.3 ms<br>Handsontable8.6 MB516 ms16.9 ms41.6 ms<br>React Data GridGold0.7 MBGold0 msGold8.9 msGold24.2 ms<br>Apple M1 Pro · Chrome 149.0.7827.116 · generated June 25, 2026 · View raw samples

AnalysisWhat the results show

Fastest interactive path<br>React Data Grid leads the overall scorecard because it combines the smallest runtime heap, no median long-task time, and near-120 FPS continuous scrolling.

Ace Grid vs AG Grid<br>Ace Grid...

grid scroll data continuous long react

Related Articles