How Infinite Table compares
An honest look at Infinite Table next to 13 popular data grids: what each one includes, what it costs, how much code it adds to your app, and when it is the better choice.
Every claim about another product links to its official docs or pricing page, with the date we last checked it.
Pick a comparison
Infinite Table vs AG Grid
AG Grid Ltd · MIT core + paid editionsAG Grid has the widest feature set and four frameworks. Infinite Table includes grouping, pivoting and tree data in one zero-dependency package, free to use with a footer.Read the comparison →Infinite Table vs MUI X Data Grid
MUI · MIT core + paid editionsBoth are declarative React grids. MUI X fits a Material UI app; Infinite Table has grouping, pivoting and tree data without a paid tier and without a design-system dependency.Read the comparison →Infinite Table vs TanStack Table
TanStack · MITTanStack Table gives you table logic and leaves the UI to you. Infinite Table is a finished grid: virtualized, keyboard-navigable and themed, configured with props.Read the comparison →Infinite Table vs Handsontable
Handsoncode · Commercial, free for non-commercial useHandsontable is a spreadsheet-like grid with formulas and Excel-style editing. Infinite Table is a data grid for exploring large datasets, with grouping, pivoting and server-side loading.Read the comparison →Infinite Table vs DevExtreme DataGrid
DevExpress · CommercialDevExtreme DataGrid is one component in a large commercial UI suite. Infinite Table is a single, zero-dependency data grid, free to use with a footer.Read the comparison →Infinite Table vs Syncfusion React Grid
Syncfusion · Free tier + paid editionsSyncfusion's Grid is part of a huge component suite with a free license for small companies. Infinite Table is one zero-dependency grid, free for everyone with a footer.Read the comparison →Infinite Table vs KendoReact Grid
Progress (Telerik) · Free tier + paid editionsKendoReact has a free Grid and a Premium one with more features. Infinite Table has every feature in one zero-dependency package, free to use with a footer.Read the comparison →Infinite Table vs Glide Data Grid
Glide · MITGlide Data Grid draws cells on a canvas and leaves sorting and filtering to you. Infinite Table renders DOM cells and has data operations built in.Read the comparison →Infinite Table vs react-data-grid
Comcast (open source, originally Adazzle) · MITreact-data-grid is a small, dependency-free MIT grid that leaves data operations to you. Infinite Table, also dependency-free, has them built in.Read the comparison →Infinite Table vs Material React Table
Kevin Van Cott (open source) · MITMaterial React Table is a ready-made Material UI table on top of TanStack Table. Infinite Table is a design-system-agnostic grid with zero dependencies.Read the comparison →Infinite Table vs Mantine React Table
Kevin Van Cott (open source) · MITMantine React Table is a ready-made Mantine table on top of TanStack Table. Infinite Table is a design-system-agnostic grid with zero dependencies.Read the comparison →Infinite Table vs RevoGrid
Revolist · MIT core + paid editionsRevoGrid is a web-component grid with an MIT core and inexpensive Pro plans. Infinite Table is a React and Vue grid with every feature in one package.Read the comparison →Infinite Table vs Wijmo FlexGrid
MESCIUS · CommercialWijmo FlexGrid is a long-standing commercial grid licensed per developer and per deployment hostname. Infinite Table has development licenses only, and is free with a footer.Read the comparison →At a glance
Dependencies count the packages npm install adds besides the grid itself and the framework. Sizes are for the minimal getting-started usage. Details on each comparison page.
| Data grid | Free for commercial use | Paid editions from | Grouping | Pivoting | Tree data | Dependencies | JS, gzip | Frameworks |
|---|---|---|---|---|---|---|---|---|
| Infinite TableDOM, with row and column virtualization. | Yeswith a "Powered by" footer | $395 per developer per year | Yes | Yes | Yes | 0 | 145 kB | React, Vue |
| AG GridDOM, with row and column virtualization. | YesMIT | $999 per developer | Yes (Enterprise) | Yes (Enterprise) | Yes (Enterprise) | 7 | 344 kB | React, Angular, Vue, JavaScript |
| MUI X Data GridDOM, with row and column virtualization. | YesMIT | $299 per developer per year | Yes (Premium) | Yes (Premium) | Yes (Pro) | 86 | 238 kB | React |
| TanStack TableHeadless: you render all the markup and styles. | YesMIT | – | Logic only | No | Logic only | 4 | 9.9 kB | React, Preact, Vue, Solid, Svelte, Angular, Ember, Lit, Alpine, JavaScript |
| HandsontableDOM, with row and column virtualization. | Nofree for non-commercial use | Contact sales (no public list price) | No | No | Partial | 0 | 355 kB | React, Angular, Vue, JavaScript |
| DevExtreme DataGridDOM, with optional row and column virtualization. | No | $899.99 per developer per year | Yes | Partial | Partial | 42 | 693 kB | React, Angular, Vue, jQuery, ASP.NET |
| Syncfusion React GridDOM, with optional row and column virtualization. | YesSyncfusion Community License (small companies) | $959 per developer per year | Yes | Partial | Partial | 20 | 275 kB | React, Angular, Vue, JavaScript, Blazor, ASP.NET |
| KendoReact GridDOM, with optional row and column virtualization. | YesKendoReact Free | From $649 per developer per year | Yes (Premium) | Partial (Premium) | Partial (Premium) | 90 | 242 kB | React |
| Glide Data GridHTML canvas, drawing cells on demand. | YesMIT | – | No | No | No | 81 | 108 kB | React |
| react-data-gridDOM, with row and column virtualization. | YesMIT | – | Yes | No | No | 0 | 23.9 kB | React |
| Material React TableDOM, Material UI table built on TanStack Table; virtualization is opt-in. | YesMIT | – | Yes | No | Yes | 94 | 242 kB | React |
| Mantine React TableDOM, Mantine table built on TanStack Table; virtualization is opt-in. | YesMIT | – | Yes | No | Yes | 106 | 165 kB | React |
| RevoGridDOM web component, with row and column virtualization. | YesMIT | $199 per developer per year | Yes | Yes (Pro Advanced) | Yes (Pro Lite) | 1 | 111 kB | React, Vue, Angular, Svelte, JavaScript, Web Components |
| Wijmo FlexGridDOM, with row and column virtualization. | No | $799 per developer | Yes | Yes | Yes | 7 | 212 kB | React, Angular, Vue, JavaScript, Web Components |
Every feature, every grid
Where a feature needs a paid edition, the edition is named. Hover a cell for notes, click it for the vendor's documentation.
- Built in
- Partial / with limits
- Logic only (headless)
- Not available
- Pro = needs that paid edition
| Feature | Infinite TableFree for commercial use | AG GridFree for commercial use | MUI X Data GridFree for commercial use | TanStack TableFree for commercial use | HandsontablePaid for commercial use | DevExtreme DataGridPaid for commercial use | Syncfusion React GridFree for commercial use | KendoReact GridFree for commercial use | Glide Data GridFree for commercial use | react-data-gridFree for commercial use | Material React TableFree for commercial use | Mantine React TableFree for commercial use | RevoGridFree for commercial use | Wijmo FlexGridPaid for commercial use |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rendering | ||||||||||||||
| Row virtualization | Partialfull in Pro | YesPremium | ||||||||||||
| Column virtualization | ||||||||||||||
| Columns | ||||||||||||||
| Multi-column sorting | Partialfull in Pro | Partialfull in Premium | No | |||||||||||
| Column filters | Partialfull in Pro | No | No | |||||||||||
| Column resizing | ||||||||||||||
| Column reordering | YesPro | |||||||||||||
| Column pinning | YesPro | YesPremium | ||||||||||||
| Column groups | YesPremium | |||||||||||||
| Column menu | YesEnterprise | No | YesPremium | No | No | No | ||||||||
| Grouping and analysis | ||||||||||||||
| Row grouping | YesEnterprise | YesPremium | No | YesPremium | No | |||||||||
| Aggregations | YesEnterprise | YesPremium | YesPremium | No | YesPro Lite | |||||||||
| Pivoting | YesEnterprise | YesPremium | No | No | PartialPremium | No | No | No | No | YesPro Advanced | ||||
| Tree data | YesEnterprise | YesPro | PartialPremium | No | No | YesPro Lite | ||||||||
| Master-detail | YesEnterprise | YesPro | No | YesPremium | No | No | YesPro Lite | |||||||
| Server data | ||||||||||||||
| Lazy loading | YesPro | No | YesPremium | No | No | No | YesPro Lite | |||||||
| Server-side sort, filter and group | Partialfull in Enterprise | Partialfull in Premium | YesPremium | No | No | |||||||||
| Pagination UI | No | No | No | YesPro Lite | ||||||||||
| Editing and interaction | ||||||||||||||
| Cell editing | No | |||||||||||||
| Row selection | YesPro Lite | |||||||||||||
| Cell selection | YesEnterprise | YesPremium | No | No | No | No | ||||||||
| Keyboard navigation | No | |||||||||||||
| Context menu | YesEnterprise | No | No | YesPremium | No | YesPro Lite | No | |||||||
| Row drag and drop | No | YesPro | No | No | ||||||||||
| Export and charts | ||||||||||||||
| Clipboard | No | YesEnterprise | Partialfull in Premium | No | No | YesPremium | ||||||||
| CSV export | No | No | No | No | No | No | ||||||||
| Excel export | No | YesEnterprise | YesPremium | No | YesPremium | No | No | No | No | YesPro Lite | ||||
| Integrated charts | No | YesEnterprise | YesPremium | No | No | No | No | YesPremium | No | No | No | PartialPro Lite | ||
| Styling and accessibility | ||||||||||||||
| Theming with CSS variables | No | No | ||||||||||||
| Documented accessibility | No | No | No | |||||||||||
| Right-to-left | No | No | ||||||||||||
Bundle size and dependencies
| Package | JS, min + gzip | CSS, min + gzip | Runtime dependencies | From other publishers |
|---|---|---|---|---|
| Infinite Table for React@infinite-table/infinite-react@10.1.4 | 145 kB | 5.7 kB | 0 | 0 |
| Infinite Table for Vue@infinite-table/infinite-vue@10.1.4 | 126 kB | 5.4 kB | 0 | 0 |
| AG Grid Communityag-grid-react@36.3.0 + ag-grid-community@36.3.0 | 344 kB | – | 7listag-charts-types@14.3.0, ag-stack@36.3.0, js-tokens@4.0.0, loose-envify@1.4.0, object-assign@4.1.1, prop-types@15.8.1, react-is@16.13.1 | 5 |
| AG Grid Enterpriseag-grid-react@36.3.0 + ag-grid-community@36.3.0 + ag-grid-enterprise@36.3.0 | 775 kB | – | 11listag-charts-community@14.3.0, ag-charts-core@14.3.0, ag-charts-enterprise@14.3.0, ag-charts-locale@14.3.0, ag-charts-types@14.3.0, ag-stack@36.3.0, js-tokens@4.0.0, loose-envify@1.4.0, object-assign@4.1.1, prop-types@15.8.1, react-is@16.13.1 | 5 |
| MUI X Data Grid (Community)@mui/x-data-grid@9.17.0 | 238 kB | – | 86list@babel/code-frame@7.29.7, @babel/generator@7.29.13, @babel/helper-globals@7.29.7, @babel/helper-module-imports@7.29.7, @babel/helper-string-parser@7.29.13, @babel/helper-validator-identifier@7.29.7, @babel/parser@7.29.13, @babel/runtime@7.29.13, @babel/template@7.29.7, @babel/traverse@7.29.13, @babel/types@7.29.11, @base-ui/utils@0.5.0, @emotion/babel-plugin@11.13.5, @emotion/cache@11.14.0, @emotion/hash@0.9.2, @emotion/is-prop-valid@1.4.0, @emotion/memoize@0.9.0, @emotion/react@11.14.0, @emotion/serialize@1.3.3, @emotion/sheet@1.4.0, @emotion/styled@11.14.1, @emotion/unitless@0.10.0, @emotion/use-insertion-effect-with-fallbacks@1.2.0, @emotion/utils@1.4.2, @emotion/weak-memoize@0.4.0, @floating-ui/utils@0.2.12, @jridgewell/gen-mapping@0.3.13, @jridgewell/resolve-uri@3.1.2, @jridgewell/sourcemap-codec@1.6.0, @jridgewell/trace-mapping@0.3.31, @mui/core-downloads-tracker@9.5.0, @mui/material@9.5.0, @mui/private-theming@9.5.0, @mui/styled-engine@9.5.0, @mui/system@9.5.0, @mui/types@9.5.0, @mui/utils@9.5.0, @mui/x-internals@9.17.0, @mui/x-virtualizer@0.7.5, @popperjs/core@2.11.8, @types/parse-json@4.0.2, @types/prop-types@15.7.15, @types/react-transition-group@4.4.12, @types/react@19.3.0, babel-plugin-macros@3.1.0, callsites@3.1.0, clsx@2.1.1, convert-source-map@1.9.0, cosmiconfig@7.1.0, csstype@3.2.3, debug@4.4.3, dom-helpers@5.2.1, error-ex@1.3.4, es-errors@1.3.0, escape-string-regexp@4.0.0, find-root@1.1.0, function-bind@1.1.2, hasown@2.0.4, hoist-non-react-statics@3.3.2, import-fresh@3.3.1, is-arrayish@0.2.1, is-core-module@2.18.0, js-tokens@4.0.0, jsesc@3.1.0, json-parse-even-better-errors@2.3.1, lines-and-columns@1.2.4, loose-envify@1.4.0, ms@2.1.3, object-assign@4.1.1, parent-module@1.0.1, parse-json@5.2.0, path-parse@1.0.7, path-type@4.0.0, picocolors@1.1.1, prop-types@15.8.1, react-is@16.13.1, react-is@19.3.1, react-transition-group@4.4.5, reselect@5.3.0, resolve-from@4.0.0, resolve@1.22.14, source-map@0.5.7, stylis@4.2.0, supports-preserve-symlinks-flag@1.0.0, use-sync-external-store@1.7.0, yaml@1.10.3 | 77 |
| MUI X Data Grid Premium@mui/x-data-grid-premium@9.17.0 | 627 kB | – | 119list@babel/code-frame@7.29.7, @babel/generator@7.29.13, @babel/helper-globals@7.29.7, @babel/helper-module-imports@7.29.7, @babel/helper-string-parser@7.29.13, @babel/helper-validator-identifier@7.29.7, @babel/parser@7.29.13, @babel/runtime@7.29.13, @babel/template@7.29.7, @babel/traverse@7.29.13, @babel/types@7.29.11, @base-ui/utils@0.5.0, @emotion/babel-plugin@11.13.5, @emotion/cache@11.14.0, @emotion/hash@0.9.2, @emotion/is-prop-valid@1.4.0, @emotion/memoize@0.9.0, @emotion/react@11.14.0, @emotion/serialize@1.3.3, @emotion/sheet@1.4.0, @emotion/styled@11.14.1, @emotion/unitless@0.10.0, @emotion/use-insertion-effect-with-fallbacks@1.2.0, @emotion/utils@1.4.2, @emotion/weak-memoize@0.4.0, @fast-csv/format@5.0.8, @fast-csv/parse@5.0.8, @fingerprintjs/fingerprintjs@3.4.2, @floating-ui/utils@0.2.12, @jridgewell/gen-mapping@0.3.13, @jridgewell/resolve-uri@3.1.2, @jridgewell/sourcemap-codec@1.6.0, @jridgewell/trace-mapping@0.3.31, @mui/core-downloads-tracker@9.5.0, @mui/material@9.5.0, @mui/private-theming@9.5.0, @mui/styled-engine@9.5.0, @mui/system@9.5.0, @mui/types@9.5.0, @mui/utils@9.5.0, @mui/x-data-grid-pro@9.17.0, @mui/x-data-grid@9.17.0, @mui/x-internal-exceljs-fork@5.0.0, @mui/x-internals@9.17.0, @mui/x-license@9.17.0, @mui/x-telemetry@9.17.0, @mui/x-virtualizer@0.7.5, @popperjs/core@2.11.8, @types/node@14.18.63, @types/parse-json@4.0.2, @types/prop-types@15.7.15, @types/react-transition-group@4.4.12, @types/react@19.3.0, babel-plugin-macros@3.1.0, callsites@3.1.0, ci-info@4.5.0, clsx@2.1.1, convert-source-map@1.9.0, core-util-is@1.0.3, cosmiconfig@7.1.0, csstype@3.2.3, dayjs@1.11.23, debug@4.4.3, dom-helpers@5.2.1, error-ex@1.3.4, es-errors@1.3.0, escape-string-regexp@4.0.0, fast-csv@5.0.8, find-root@1.1.0, function-bind@1.1.2, hasown@2.0.4, hoist-non-react-statics@3.3.2, immediate@3.0.6, import-fresh@3.3.1, inherits@2.0.4, is-arrayish@0.2.1, is-core-module@2.18.0, is-docker@4.0.0, isarray@1.0.0, js-tokens@4.0.0, jsesc@3.1.0, json-parse-even-better-errors@2.3.1, jszip@3.10.2, lie@3.3.0, lines-and-columns@1.2.4, loose-envify@1.4.0, ms@2.1.3, node-machine-id@1.1.12, object-assign@4.1.1, pako@1.0.11, parent-module@1.0.1, parse-json@5.2.0, path-parse@1.0.7, path-type@4.0.0, picocolors@1.1.1, process-nextick-args@2.0.1, prop-types@15.8.1, react-is@16.13.1, react-is@19.3.1, react-transition-group@4.4.5, readable-stream@2.3.8, readable-stream@3.6.2, reselect@5.3.0, resolve-from@4.0.0, resolve@1.22.14, safe-buffer@5.1.2, safe-buffer@5.2.1, saxes@5.0.1, setimmediate@1.0.5, source-map@0.5.7, string_decoder@1.1.1, string_decoder@1.3.0, stylis@4.2.0, supports-preserve-symlinks-flag@1.0.0, tslib@2.9.1, use-sync-external-store@1.7.0, util-deprecate@1.0.2, xmlchars@2.2.0, yaml@1.10.3 | 105 |
| TanStack Table@tanstack/react-table@9.3.1 | 9.9 kB | – | 4list@tanstack/react-store@0.11.2, @tanstack/store@0.11.2, @tanstack/table-core@9.3.1, use-sync-external-store@1.7.0 | 1 |
| TanStack Table + TanStack Virtual@tanstack/react-table@9.3.1 + @tanstack/react-virtual@3.14.26 | 20.2 kB | – | 5list@tanstack/react-store@0.11.2, @tanstack/store@0.11.2, @tanstack/table-core@9.3.1, @tanstack/virtual-core@3.19.11, use-sync-external-store@1.7.0 | 1 |
| Handsontable@handsontable/react-wrapper@18.1.2 + handsontable@18.1.2 | 355 kB | 22.8 kB | 0 | 0 |
| DevExtreme React DataGriddevextreme-react@26.1.6 + devextreme@26.1.6 | 693 kB | 94.4 kB | 42list@babel/runtime@7.29.13, @devexpress/utils@2.1.4, @preact/signals-core@1.14.5, core-js@3.51.0, core-util-is@1.0.3, csstype@3.2.3, devexpress-diagram@2.2.31, devexpress-gantt@4.1.71, devextreme-quill@1.7.10, es6-object-assign@1.1.0, eventemitter3@4.0.7, fast-diff@1.3.0, immediate@3.0.6, inferno-create-element@8.2.3, inferno-vnode-flags@8.2.3, inferno@8.2.3, inherits@2.0.4, isarray@1.0.0, js-tokens@4.0.0, jszip@3.10.2, lie@3.3.0, lodash.clonedeep@4.5.0, lodash.isequal@4.5.0, lodash.merge@4.6.2, loose-envify@1.4.0, object-assign@4.1.1, opencollective-postinstall@2.0.3, pako@1.0.11, parchment@2.0.1, process-nextick-args@2.0.1, prop-types@15.8.1, quill-delta@5.1.0, react-is@16.13.1, readable-stream@2.3.8, rrule@2.8.1, safe-buffer@5.1.2, setimmediate@1.0.5, string_decoder@1.1.1, tslib@2.3.1, tslib@2.9.1, util-deprecate@1.0.2, zod@4.6.7 | 41 |
| Syncfusion React Grid@syncfusion/ej2-react-grids@35.1.42 | 275 kB | 224 kB | 20list@syncfusion/ej2-base@35.1.37, @syncfusion/ej2-buttons@35.1.41, @syncfusion/ej2-calendars@35.1.43, @syncfusion/ej2-compression@35.1.37, @syncfusion/ej2-data@35.1.37, @syncfusion/ej2-dropdowns@35.1.43, @syncfusion/ej2-excel-export@35.1.37, @syncfusion/ej2-file-utils@35.1.37, @syncfusion/ej2-grids@35.1.42, @syncfusion/ej2-icons@35.1.37, @syncfusion/ej2-inputs@35.1.43, @syncfusion/ej2-lists@35.1.43, @syncfusion/ej2-material-theme@35.1.43, @syncfusion/ej2-navigations@35.1.43, @syncfusion/ej2-notifications@35.1.37, @syncfusion/ej2-pdf-export@35.1.43, @syncfusion/ej2-popups@35.1.42, @syncfusion/ej2-querybuilder@35.1.42, @syncfusion/ej2-react-base@35.1.37, @syncfusion/ej2-splitbuttons@35.1.37 | 0 |
| KendoReact Grid@progress/kendo-react-grid@17.0.0 | 242 kB | 105 kB | 90list@babel/runtime@7.29.13, @isaacs/nonrecursive-glob-match@1.1.0, @progress/kendo-common@1.1.5, @progress/kendo-csv@1.0.0, @progress/kendo-data-query@1.7.4, @progress/kendo-date-math@1.5.20, @progress/kendo-dateinputs-common@0.4.13, @progress/kendo-draggable-common@0.2.3, @progress/kendo-drawing@1.25.7, @progress/kendo-file-saver@1.1.3, @progress/kendo-inputs-common@3.1.4, @progress/kendo-intl@3.2.1, @progress/kendo-licensing@1.13.0, @progress/kendo-popup-common@1.9.5, @progress/kendo-react-animation@17.0.0, @progress/kendo-react-buttons@17.0.0, @progress/kendo-react-common@17.0.0, @progress/kendo-react-conversational-ui@17.0.0, @progress/kendo-react-data-tools@17.0.0, @progress/kendo-react-dateinputs@17.0.0, @progress/kendo-react-dialogs@17.0.0, @progress/kendo-react-dropdowns@17.0.0, @progress/kendo-react-form@17.0.0, @progress/kendo-react-indicators@17.0.0, @progress/kendo-react-inputs@17.0.0, @progress/kendo-react-intl@17.0.0, @progress/kendo-react-labels@17.0.0, @progress/kendo-react-layout@17.0.0, @progress/kendo-react-notification@17.0.0, @progress/kendo-react-popup@17.0.0, @progress/kendo-react-progressbars@17.0.0, @progress/kendo-react-tooltip@17.0.0, @progress/kendo-react-treeview@17.0.0, @progress/kendo-react-upload@17.0.0, @progress/kendo-smartpaste-common@1.0.0, @progress/kendo-svg-icons@5.5.0, @progress/kendo-theme-core@14.10.0, @progress/kendo-theme-default@14.10.0, @progress/kendo-theme-utils@14.10.0, @progress/kendo-webspeech-common@1.0.1, @progress/pako-esm@1.0.2, ansi-regex@5.0.1, ansi-styles@4.3.0, balanced-match@4.0.4, brace-expansion@5.0.13, buffer-equal-constant-time@1.0.1, cliui@8.0.1, color-convert@2.0.1, color-name@1.1.4, csstype@3.2.3, dom-helpers@5.2.1, ecdsa-sig-formatter@1.0.11, emoji-regex@8.0.0, escalade@3.2.0, get-caller-file@2.0.5, glob@14.0.4, is-fullwidth-code-point@3.0.0, js-tokens@4.0.0, jsonwebtoken@9.0.3, jwa@2.0.1, jws@4.0.1, lodash.includes@4.3.0, lodash.isboolean@3.0.3, lodash.isinteger@4.0.4, lodash.isnumber@3.0.3, lodash.isplainobject@4.0.6, lodash.isstring@4.0.1, lodash.once@4.1.1, loose-envify@1.4.0, lru-cache@11.5.3, minimatch@11.0.8, minipass@7.1.3, ms@2.1.3, object-assign@4.1.1, path-scurry@3.0.0, prop-types@15.8.1, react-is@16.13.1, react-transition-group@4.4.5, require-directory@2.1.1, safe-buffer@5.2.1, semver@7.8.6, string-width@4.2.3, strip-ansi@6.0.1, tslib@1.14.1, tslib@2.8.1, tslib@2.9.1, wrap-ansi@7.0.0, y18n@5.0.8, yargs-parser@21.1.1, yargs@17.7.3 | 51 |
| Glide Data Grid@glideapps/glide-data-grid@6.0.3 | 108 kB | 2.3 kB | 81list@babel/code-frame@7.29.7, @babel/compat-data@7.29.7, @babel/core@7.29.13, @babel/generator@7.29.13, @babel/helper-compilation-targets@7.29.13, @babel/helper-globals@7.29.7, @babel/helper-module-imports@7.29.7, @babel/helper-module-transforms@7.29.13, @babel/helper-plugin-utils@7.29.7, @babel/helper-string-parser@7.29.13, @babel/helper-validator-identifier@7.29.7, @babel/helper-validator-option@7.29.7, @babel/helpers@7.29.13, @babel/parser@7.29.13, @babel/plugin-proposal-export-namespace-from@7.18.9, @babel/plugin-syntax-dynamic-import@7.8.3, @babel/plugin-syntax-export-namespace-from@7.8.3, @babel/plugin-transform-modules-commonjs@7.29.7, @babel/template@7.29.7, @babel/traverse@7.29.13, @babel/types@7.29.11, @emotion/is-prop-valid@1.4.0, @emotion/memoize@0.9.0, @jridgewell/gen-mapping@0.3.13, @jridgewell/remapping@2.3.5, @jridgewell/resolve-uri@3.1.2, @jridgewell/sourcemap-codec@1.6.0, @jridgewell/trace-mapping@0.3.31, @linaria/core@4.5.4, @linaria/logger@4.5.0, @linaria/react@4.5.4, @linaria/tags@4.5.4, @linaria/utils@4.5.3, babel-merge@3.0.0, balanced-match@1.0.2, baseline-browser-mapping@2.11.35, brace-expansion@2.1.8, browserslist@4.29.5, caniuse-lite@1.0.30001826, canvas-hypertxt@1.0.3, classnames@2.5.1, convert-source-map@2.0.0, debug@4.4.3, deepmerge@2.2.1, electron-to-chromium@1.5.481, escalade@3.2.0, find-up@5.0.0, gensync@1.0.0-beta.2, html-element-attributes@1.3.1, is-extendable@1.0.1, is-plain-object@2.0.4, isobject@3.0.1, js-tokens@4.0.0, jsesc@3.1.0, json5@2.2.3, locate-path@6.0.0, lodash@4.18.1, loose-envify@1.4.0, lru-cache@5.1.1, marked@4.3.0, minimatch@9.0.9, ms@2.1.3, node-releases@2.0.63, object-assign@4.1.1, object.omit@3.0.0, p-limit@3.1.0, p-locate@5.0.0, path-exists@4.0.0, picocolors@1.1.1, prop-types@15.8.1, react-easy-swipe@0.0.21, react-html-attributes@1.4.6, react-is@16.13.1, react-number-format@5.4.5, react-responsive-carousel@3.2.23, semver@6.3.2, ts-invariant@0.10.3, tslib@2.9.1, update-browserslist-db@1.3.4, yallist@3.1.1, yocto-queue@0.1.0 | 81 |
| react-data-gridreact-data-grid@7.0.0-beta.64 | 23.9 kB | 2.2 kB | 0 | 0 |
| Material React Tablematerial-react-table@3.2.1 | 242 kB | – | 94list@babel/code-frame@7.29.7, @babel/generator@7.29.13, @babel/helper-globals@7.29.7, @babel/helper-module-imports@7.29.7, @babel/helper-string-parser@7.29.13, @babel/helper-validator-identifier@7.29.7, @babel/parser@7.29.13, @babel/runtime@7.29.13, @babel/template@7.29.7, @babel/traverse@7.29.13, @babel/types@7.29.11, @base-ui/utils@0.5.0, @emotion/babel-plugin@11.13.5, @emotion/cache@11.14.0, @emotion/hash@0.9.2, @emotion/is-prop-valid@1.4.0, @emotion/memoize@0.9.0, @emotion/react@11.14.0, @emotion/serialize@1.3.3, @emotion/sheet@1.4.0, @emotion/styled@11.14.1, @emotion/unitless@0.10.0, @emotion/use-insertion-effect-with-fallbacks@1.2.0, @emotion/utils@1.4.2, @emotion/weak-memoize@0.4.0, @floating-ui/utils@0.2.12, @jridgewell/gen-mapping@0.3.13, @jridgewell/resolve-uri@3.1.2, @jridgewell/sourcemap-codec@1.6.0, @jridgewell/trace-mapping@0.3.31, @mui/core-downloads-tracker@9.5.0, @mui/icons-material@9.5.0, @mui/material@9.5.0, @mui/private-theming@9.5.0, @mui/styled-engine@9.5.0, @mui/system@9.5.0, @mui/types@9.5.0, @mui/utils@9.5.0, @mui/x-date-pickers@9.17.0, @mui/x-internals@9.17.0, @popperjs/core@2.11.8, @tanstack/match-sorter-utils@8.19.4, @tanstack/react-table@8.20.6, @tanstack/react-virtual@3.11.2, @tanstack/table-core@8.20.5, @tanstack/virtual-core@3.11.2, @types/parse-json@4.0.2, @types/prop-types@15.7.15, @types/react-transition-group@4.4.12, @types/react@19.3.0, babel-plugin-macros@3.1.0, callsites@3.1.0, clsx@2.1.1, convert-source-map@1.9.0, cosmiconfig@7.1.0, csstype@3.2.3, debug@4.4.3, dom-helpers@5.2.1, error-ex@1.3.4, es-errors@1.3.0, escape-string-regexp@4.0.0, find-root@1.1.0, function-bind@1.1.2, hasown@2.0.4, highlight-words@2.0.0, hoist-non-react-statics@3.3.2, import-fresh@3.3.1, is-arrayish@0.2.1, is-core-module@2.18.0, js-tokens@4.0.0, jsesc@3.1.0, json-parse-even-better-errors@2.3.1, lines-and-columns@1.2.4, loose-envify@1.4.0, ms@2.1.3, object-assign@4.1.1, parent-module@1.0.1, parse-json@5.2.0, path-parse@1.0.7, path-type@4.0.0, picocolors@1.1.1, prop-types@15.8.1, react-is@16.13.1, react-is@19.3.1, react-transition-group@4.4.5, remove-accents@0.5.0, reselect@5.3.0, resolve-from@4.0.0, resolve@1.22.14, source-map@0.5.7, stylis@4.2.0, supports-preserve-symlinks-flag@1.0.0, use-sync-external-store@1.7.0, yaml@1.10.3 | 94 |
| Mantine React Tablemantine-react-table@1.3.4 | 165 kB | – | 106list@babel/code-frame@7.29.7, @babel/generator@7.29.13, @babel/helper-globals@7.29.7, @babel/helper-module-imports@7.29.7, @babel/helper-string-parser@7.29.13, @babel/helper-validator-identifier@7.29.7, @babel/parser@7.29.13, @babel/runtime@7.29.13, @babel/template@7.29.7, @babel/traverse@7.29.13, @babel/types@7.29.11, @emotion/babel-plugin@11.13.5, @emotion/cache@11.14.0, @emotion/hash@0.9.2, @emotion/memoize@0.9.0, @emotion/react@11.14.0, @emotion/serialize@1.3.3, @emotion/sheet@1.4.0, @emotion/unitless@0.10.0, @emotion/use-insertion-effect-with-fallbacks@1.2.0, @emotion/utils@1.4.2, @emotion/weak-memoize@0.4.0, @floating-ui/core@1.8.0, @floating-ui/dom@1.8.0, @floating-ui/react-dom@1.3.0, @floating-ui/react@0.19.2, @floating-ui/utils@0.2.12, @jridgewell/gen-mapping@0.3.13, @jridgewell/resolve-uri@3.1.2, @jridgewell/sourcemap-codec@1.6.0, @jridgewell/trace-mapping@0.3.31, @mantine/core@6.0.22, @mantine/dates@6.0.22, @mantine/hooks@6.0.22, @mantine/styles@6.0.22, @mantine/utils@6.0.22, @radix-ui/number@1.0.0, @radix-ui/primitive@1.0.0, @radix-ui/react-compose-refs@1.0.0, @radix-ui/react-context@1.0.0, @radix-ui/react-direction@1.0.0, @radix-ui/react-presence@1.0.0, @radix-ui/react-primitive@1.0.1, @radix-ui/react-scroll-area@1.0.2, @radix-ui/react-slot@1.0.1, @radix-ui/react-use-callback-ref@1.0.0, @radix-ui/react-use-layout-effect@1.0.0, @tabler/icons-react@3.51.0, @tabler/icons@3.51.0, @tanstack/match-sorter-utils@8.8.4, @tanstack/react-table@8.10.6, @tanstack/react-virtual@3.0.0-beta.63, @tanstack/table-core@8.10.6, @tanstack/virtual-core@3.0.0-beta.63, @types/parse-json@4.0.2, aria-hidden@1.2.6, babel-plugin-macros@3.1.0, callsites@3.1.0, clsx@1.1.1, convert-source-map@1.9.0, cosmiconfig@7.1.0, csstype@3.0.9, csstype@3.2.3, dayjs@1.11.23, debug@4.4.3, detect-node-es@1.1.0, error-ex@1.3.4, es-errors@1.3.0, escape-string-regexp@4.0.0, find-root@1.1.0, function-bind@1.1.2, get-nonce@1.0.1, hasown@2.0.4, hoist-non-react-statics@3.3.2, import-fresh@3.3.1, is-arrayish@0.2.1, is-core-module@2.18.0, js-tokens@4.0.0, jsesc@3.1.0, json-parse-even-better-errors@2.3.1, lines-and-columns@1.2.4, ms@2.1.3, parent-module@1.0.1, parse-json@5.2.0, path-parse@1.0.7, path-type@4.0.0, picocolors@1.1.1, react-is@16.13.1, react-remove-scroll-bar@2.3.8, react-remove-scroll@2.7.2, react-style-singleton@2.2.3, react-textarea-autosize@8.3.4, remove-accents@0.4.2, resolve-from@4.0.0, resolve@1.22.14, source-map@0.5.7, stylis@4.2.0, supports-preserve-symlinks-flag@1.0.0, tabbable@6.5.1, tslib@2.9.1, use-callback-ref@1.3.3, use-composed-ref@1.4.0, use-isomorphic-layout-effect@1.2.1, use-latest@1.3.0, use-sidecar@1.1.3, yaml@1.10.3 | 106 |
| RevoGrid (MIT core)@revolist/react-datagrid@4.31.4 | 111 kB | – | 1list@revolist/revogrid@4.31.4 | 0 |
| Wijmo FlexGrid@mescius/wijmo.react.grid@5.20262.60 | 212 kB | 18.4 kB | 7list@mescius/wijmo.grid.detail@5.20262.60, @mescius/wijmo.grid@5.20262.60, @mescius/wijmo.input@5.20262.60, @mescius/wijmo.interop.grid@5.20262.60, @mescius/wijmo.react.base@5.20262.60, @mescius/wijmo.styles@5.20262.60, @mescius/wijmo@5.20262.60 | 0 |
Measured on November 11, 2026 with the latest versions on npm. Runtime dependencies: every package that npm install adds besides the grid's own packages and the framework, including required peer dependencies. JS / CSS: esbuild 0.25.10 bundle of the minimal getting-started usage, minified, React or Vue left out, gzip level 9 (kB = 1,000 bytes). Fonts and images are not counted. Numbers include required peers such as a design system, so they are lower if your app already ships those. The measurement script is open source: run it to reproduce or update these numbers.
Performance
We benchmarked Infinite Table and AG Grid Community with 300,000 and 1,000,000 rows: mount time, memory, sorting and scrolling, in a reproducible setup you can run on your own machine.
How we keep this fair
Honest about our gaps
Infinite Table doesn't have integrated charts, Excel or CSV export, clipboard support, row drag and drop, a pager, right-to-left layouts or documented screen reader support. The tables say so, and every comparison page says when the other grid is the better choice.
One source of truth
Every table on these pages is built from one data file, also published as /compare/matrix.json. Bundle sizes and dependency counts come from a script anyone can run.
Sources and corrections
Every statement about another product links to the vendor's own documentation, pricing or license page. Infinite Table facts were last verified on November 11, 2026. AG Grid facts were last verified on November 11, 2026. MUI X Data Grid facts were last verified on November 11, 2026. TanStack Table facts were last verified on November 11, 2026. Handsontable facts were last verified on November 11, 2026. DevExtreme DataGrid facts were last verified on November 11, 2026. Syncfusion React Grid facts were last verified on November 11, 2026. KendoReact Grid facts were last verified on November 11, 2026. Glide Data Grid facts were last verified on November 11, 2026. react-data-grid facts were last verified on November 11, 2026. Material React Table facts were last verified on November 11, 2026. Mantine React Table facts were last verified on November 11, 2026. RevoGrid facts were last verified on November 11, 2026. Wijmo FlexGrid facts were last verified on November 11, 2026. Prices are list prices as published; taxes, discounts and quotes can differ. Products change quickly, so please check the vendor's site before you buy.
Spotted something wrong or out of date? We'll fix it: open a correction issue, edit the data on GitHub or email us.