gp-grid-logo

Benchmarks

How does gp-grid performs compared to the available and well known grids

Date: 2026-01-11T18:35:49.890Z

Platform: linux

Node: v24.11.1


Scroll Performance

MetricHigher/Lower is Better
Avg FPS⬆️ Higher is better
Min FPS⬆️ Higher is better
Frame Drops⬇️ Lower is better
P95 FPS⬆️ Higher is better

10K Rows

GridAvg FPS Min FPS Frame Drops P95 FPS
ag-grid87.0826532225876158.479532163623254078.37438790032886
gp-grid73.3993136567703555.24861875723972066.05938229109331
handsontable285.760060
tanstack-table80.0580377611648557.47126436658565072.05223398504837

100K Rows

GridAvg FPS Min FPS Frame Drops P95 FPS
ag-grid87.0219670885231358.13953488368158078.31977037967081
gp-grid80.0833449712459858.139534873647136072.07501047412138
handsontable333.160060
tanstack-table73.5180958780115857.142857142857146066.16628629021042

1M Rows

GridAvg FPS Min FPS Frame Drops P95 FPS
ag-grid60.1265556482321158.8235294117647054.1139000834089
gp-grid71.3880882638841754.644808752068535064.24927943749576
handsontable70.4894146128792456.497175140648395063.44047315159132
tanstack-table87.0571361763407857.80346820560307078.3514225587067

Initial Render

MetricHigher/Lower is Better
First Paint⬇️ Lower is better
Full Render⬇️ Lower is better
LCP⬇️ Lower is better
TBT⬇️ Lower is better

10K Rows

GridFirst Paint Full Render LCP TBT
ag-grid512ms369ms512ms165ms
gp-grid208ms113ms248ms0ms
handsontable400ms300ms400ms42ms
tanstack-table184ms343ms356ms69ms

100K Rows

GridFirst Paint Full Render LCP TBT
ag-grid664ms600ms664ms371ms
gp-grid92ms270ms312ms111ms
handsontable192ms452ms192ms175ms
tanstack-table76ms678ms612ms410ms

1M Rows

GridFirst Paint Full Render LCP TBT
ag-grid3220ms3161ms3220ms2928ms
gp-grid100ms1718ms1764ms1511ms
handsontable188ms1897ms188ms1633ms
tanstack-table76ms5111ms5040ms4839ms

Sort/Filter Performance

MetricHigher/Lower is Better
All timing metrics⬇️ Lower is better

10K Rows

GridSort Asc Sort Desc Text Filter Number Filter
ag-grid250ms277ms119ms188ms
gp-grid115ms98ms85ms93ms
handsontable109ms90ms113ms92ms
tanstack-table142ms134ms93ms74ms

100K Rows

GridSort Asc Sort Desc Text Filter Number Filter
ag-grid449ms318ms159ms168ms
gp-grid231ms209ms96ms90ms
handsontable163ms162ms352ms209ms
tanstack-table341ms332ms142ms72ms

1M Rows

GridSort Asc Sort Desc Text Filter Number Filter
ag-grid1940ms1829ms384ms351ms
gp-grid690ms703ms197ms178ms
handsontable1222ms1120ms3024ms1529ms
tanstack-table2759ms3915ms484ms192ms

Memory Usage

MetricHigher/Lower is Better
After Load⬇️ Lower is better
Peak⬇️ Lower is better
Growth Rate⬇️ Lower is better
Retained⬇️ Lower is better

10K Rows

GridAfter Load Peak Growth (MB/1K) Retained
ag-grid18.37MB99.82MB1.2412.57MB
gp-grid7.52MB39.17MB0.4181.75MB
handsontable9.3MB14.91MB0.4092.02MB
tanstack-table35.44MB143.43MB3.3141.8MB

100K Rows

GridAfter Load Peak Growth (MB/1K) Retained
ag-grid57.77MB201.16MB0.5182.76MB
gp-grid30.44MB71.43MB0.2711.79MB
handsontable37.41MB43.62MB0.3222.28MB
tanstack-table295.41MB397.84MB2.931289.67MB

1M Rows

GridAfter Load Peak Growth (MB/1K) Retained
ag-grid451.81MB642.09MB0.4462.81MB
gp-grid257.07MB315.76MB0.2541.8MB
handsontable316.21MB324.41MB0.3112.29MB
tanstack-table2896.87MB2996.4MB2.8951.81MB

Legend

  • ⬆️ Higher is better - For these metrics, larger values indicate better performance
  • ⬇️ Lower is better - For these metrics, smaller values indicate better performance

Metrics Explained

MetricDescription
Avg FPSAverage frames per second during scroll
Min FPSMinimum FPS observed (worst case)
Frame DropsNumber of frames that took >25ms
P95 FPS95th percentile FPS (excludes outliers)
First PaintTime to first contentful paint
Full RenderTime until grid is fully interactive
LCPLargest Contentful Paint
TBTTotal Blocking Time
After LoadHeap size after data is loaded
PeakMaximum heap size during operation
Growth RateMemory increase per 1000 rows
RetainedMemory not released after clearing data

On this page