“What grid should I use?” is the wrong question. The right question is “what am I actually building?”
There are three serious contenders in the JavaScript grid space: AG Grid, Handsontable, and (we hope) ReoGrid Web. All three render tabular data. All three have React and Vue wrappers. All three are battle-tested. But they were built for different problems, and which one is the right pick depends entirely on which problem you have.
This is a comparison from the ReoGrid team. We will be honest about where the others are stronger, because if you pick the wrong tool you will be unhappy regardless of how good our docs are.
TL;DR — the use-case axis
| If you are building… | Pick |
|---|---|
| A data grid — query results, log viewer, admin table — read-heavy, server-paged, with rich filtering | AG Grid |
| A spreadsheet — invoice, budget, report template, configurable form — editable cells, formulas, Excel round-trip | ReoGrid Web or Handsontable |
| You need xlsx fidelity (real files in, real files out, styles preserved) | ReoGrid Web |
| You need a permissively-licensed free tier for OSS / personal projects | ReoGrid Web Lite or AG Grid Community |
| You want the most mature DOM-grid ecosystem with the largest team behind it | AG Grid Enterprise |
The biggest distinction is the first row: AG Grid is a data grid, Handsontable and ReoGrid are spreadsheets. If you guess wrong on this, no amount of feature comparison will save you.
Data grids vs. spreadsheets
A data grid is a way to render a result set. Cells are read-mostly. The interesting features are filtering, grouping, aggregation, server-side pagination, virtualization, and column tools. Editing exists but is secondary. AG Grid is the strongest tool in this category by some distance.
A spreadsheet treats the grid as a document. Cells are read-write equally. The interesting features are formulas with dependency graphs, merged cells across arbitrary rectangles, per-cell styles and borders, conditional formatting, xlsx round-trip, freeze panes, and an Excel-like editing UX (formula references, fill handle, undo/redo of structural changes). ReoGrid Web and Handsontable both target this category.
The reason this matters: a spreadsheet API has to make value semantics, formula evaluation, and document round-trip first-class. A data-grid API has to make query, filter, and column-pinning first-class. The two ergonomics pull in different directions, and a library that tries to be both ends up being mediocre at both.
Feature comparison (honest)
What we cover well, what others cover well. No spin.
| ReoGrid Web | AG Grid | Handsontable | |
|---|---|---|---|
| Primary use case | Spreadsheet | Data grid | Spreadsheet |
| Rendering | Canvas (one <canvas>) | DOM (virtualized) | DOM (virtualized) |
| Cells per row, practical | 50–500+ | 50–1000+ | 50–300 |
| Rows, practical | 10,000+ (sweet spot 100–50k) | 100,000+ with server-side row model | 10,000+ |
| xlsx import | ✅ Lite + Pro, full styles/merges/formulas | Enterprise add-on, basic | Community via SheetJS plugin |
| xlsx export | ✅ Pro, styles preserved | Enterprise add-on | Community via SheetJS plugin |
| Formula engine | ✅ 109 built-in functions, dependency graph | ❌ (not the use case) | ✅ via HyperFormula (385 functions) |
| Merged cells | ✅ first-class | ✅ via spanning | ✅ |
| Conditional formatting | ✅ rule-based, xlsx round-trip | ✅ value formatters / cellClassRules | ✅ |
| Cell types (checkbox, dropdown, progress, sparkline) | ✅ pluggable registry, 8 built-in | ✅ enterprise + custom renderers | ✅ |
| Pivot tables | ❌ | ✅ Enterprise | ✅ |
| Server-side / infinite row model | ❌ | ✅ flagship feature | ❌ |
| React wrapper | ✅ idiomatic event props | ✅ mature | ✅ |
| Vue wrapper | ✅ idiomatic emits | ✅ | ✅ |
| Bundle size | < 300 KB total (incl. formula + xlsx) | ~1.2 MB Enterprise | ~500 KB + HyperFormula |
| Free tier | Lite (100×26 cap, no export) | Community (very generous) | Community (commercial use requires license since 13.x) |
| Commercial license cost | $599 (Pro, 3 domains) / $1,100 (Enterprise, 30 domains) | Enterprise pricing on request (4-figure annual / dev typical) | $1,400 / dev / year (perpetual + 1yr support) |
| License type | Perpetual | Subscription | Perpetual with optional updates |
A few footnotes:
- AG Grid’s free tier is genuinely permissive. AG Grid Community is MIT-licensed and includes everything most apps need. It is the right answer for most read-mostly data-grid use cases regardless of budget.
- Handsontable’s licensing changed in late 2022. Versions ≥ 13 require a commercial license for commercial use. If you adopted Handsontable years ago, check what version your project is pinned to.
- The bundle-size column is order-of-magnitude. Real-world bundle depends on which features you tree-shake out. All three tree-shake fairly well; AG Grid Enterprise is the largest because of how many features it bundles.
When ReoGrid Web is the right pick
You want a spreadsheet-shaped UI in the browser, and:
- You need real Excel compatibility. Users upload
.xlsxfiles and expect to see them rendered exactly. They download.xlsxfiles and expect to open them in Excel without “Excel found unreadable content.” We have invested years in xlsx fidelity — including obscure things like conditional sections in number formats, theme colors with tint, outline grouping round-trip, and the Excel serial-date off-by-one bug — because our .NET edition has been doing this for over a decade. - You want a single canvas, not a virtualized DOM tree. Canvas avoids the per-cell DOM cost that bites virtualized grids when you cross-cut with merges, frozen panes, and conditional formatting. See yesterday’s article on 10,000-row canvas rendering.
- You want a permissive perpetual license, not a subscription. Pro and Enterprise are one-time purchases with 3 months of support included. Lite is free for any use including commercial — within the 100×26 cell cap.
- You want a small footprint. Sub-300KB for the full Pro bundle (formula engine + xlsx I/O + canvas renderer + React/Vue wrappers) is meaningfully smaller than the alternatives once you turn the relevant features on.
- You also need a .NET edition. Our .NET WinForms/WPF version has 180,000+ NuGet downloads. xlsx files round-trip between the two editions losslessly. If you have a desktop app and a web app that need to share spreadsheet documents, this is rare.
When ReoGrid Web is not the right pick
Be honest with yourself:
- You are building a data grid, not a spreadsheet. If your cells are query results, your filtering is the main feature, and you have 100k+ rows that are streamed from a server, use AG Grid. The spreadsheet metaphor is the wrong shape for that problem.
- You need a pivot table builder. We do not have one. AG Grid Enterprise and Handsontable both do.
- You need the largest formula library on the market. Handsontable’s HyperFormula has 385 functions. We have 109 — sized for what we believe is the actual Excel-compatibility floor for business documents, but if you need the long tail of statistical or financial functions, HyperFormula’s catalogue is bigger.
- You need an infinite/server-side row model. AG Grid’s Enterprise row model is the right tool. We are not in that race.
Migration patterns
If you are currently using Handsontable and find yourself running into the licensing change or wanting xlsx fidelity, the API translation is fairly mechanical:
| Handsontable | ReoGrid Web |
|---|---|
new Handsontable(el, { data }) | createReogrid({ workspace: el }) |
hot.setDataAtCell(r, c, v) | worksheet.cell(r, c).setValue(v) |
hot.getDataAtCell(r, c) | worksheet.cell(r, c).value |
mergeCells: [...] | worksheet.range('A1:B2').merge() |
cells: (r, c) => ({ className }) | worksheet.cell(r, c).setStyle({ ... }) |
formulas: { engine: hf } | Built-in — use setCellInput(r, c, '=...') |
If you are currently using AG Grid for what is actually a spreadsheet shape (editable cells, formulas, xlsx in/out), you will find the spreadsheet APIs more direct than what you have been doing in AG Grid’s cell editors and valueGetter/valueSetter indirection.
The recommendation
Pick by use case first, then by license terms second. Feature lists are a distant third — all three libraries are mature enough that almost any reasonable thing you want to do is doable.
- Building a query-results UI? AG Grid Community first; AG Grid Enterprise if you need the server-side row model or pivots.
- Building an editable spreadsheet document UI? Try ReoGrid Web Lite first (free on npm) — it is a 5-minute install. If the 100×26 cap is your limit, the Pro tier removes it. If you need 385 formula functions or pivot tables specifically, look at Handsontable.
We will keep improving. The v1.2 release post summarises where we are today. The roadmap includes volatile functions (INDIRECT, OFFSET), more cell types, and continued xlsx fidelity work driven by real files you send us.
That closes our launch series. Thank you for reading — and if there is a comparison angle we should add, or a feature we are missing for your use case, tell us.