Infinite Table vs Material React Table
Material 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.
Facts last verified on November 11, 2026, with a source link for each one.
Material React Table (MRT) puts a complete Material UI interface on TanStack Table: column menus, many filter types, grouping with aggregation, tree rows, detail panels, editing modes, pinning and optional virtualization, all MIT-licensed. It needs Material UI, Emotion and MUI date pickers, and its latest stable release is from March 2025.
Infinite Table has those features too, plus pivoting, lazy loading from a server and cell selection, with zero runtime dependencies and no design system attached. It is free to use with a footer.
When to choose which
Choose Material React Table if
- Your app uses Material UI and you want a table that looks native.
- You want an MIT license with no footer.
- You already know TanStack Table.
Choose Infinite Table if
- Your app doesn't use Material UI.
- You need pivoting, lazy loading or cell selection.
- Dependency count and bundle size matter to you.
- You use Vue as well as React.
Features
22 of the 30 features below are built into Infinite Table, every one in the free package. Material React Table has 18 built in, and 6 more partly or as headless logic, counting its most complete edition (Material React Table). Each Material React Table entry links to its documentation.
- Built in
- Partial / with limits
- Logic only (headless)
- Not available
- Pro = needs that paid edition
| Feature | Infinite TableFree with footer · $395 per developer per year | Material React TableMIT · Free |
|---|---|---|
| Rendering | ||
| Row virtualizationOnly the visible rows are rendered, out of the box. | Yessource | |
| Column virtualizationOnly the visible columns are rendered, out of the box. | Yessource | |
| Columns | ||
| Multi-column sortingBuilt-in sorting UI, including sorting by several columns. | Yessource | Yessource |
| Column filtersBuilt-in filter UI: a filter row, header filters or a filter menu. | Yessource | |
| Column resizingUsers drag to resize columns. | Yessource | Yessource |
| Column reorderingUsers drag and drop columns to reorder them. | Yessource | Yessource |
| Column pinningPin (freeze) columns to the left or right. | Yessource | Yessource |
| Column groupsMulti-level, grouped column headers. | Yessource | Yessource |
| Column menuA built-in column header menu (sort, hide, pin...). | Yessource | Yessource |
| Grouping and analysis | ||
| Row groupingGroup rows by one or more columns, with expand and collapse. | Yessource | Yessource |
| AggregationsAggregated values (sum, average...) for groups or totals. | Yessource | Yessource |
| PivotingPivot rows into dynamically generated columns. | Yessource | No |
| Tree dataHierarchical (tree) rows. | Yessource | Yessource |
| Master-detailExpandable detail rows with custom content or a nested grid. | Yessource | Yessource |
| Server data | ||
| Lazy loadingLoad rows from a server in batches as the user scrolls. | Yessource | |
| Server-side sort, filter and groupBuilt-in support for sorting, filtering and grouping on the server. | ||
| Pagination UIA built-in pager. | Yessource | |
| Editing and interaction | ||
| Cell editingInline cell editing with built-in editors. | Yessource | Yessource |
| Row selectionSelect rows, including checkbox selection. | Yessource | Yessource |
| Cell selectionSelect multiple cells or ranges of cells. | Yessource | No |
| Keyboard navigationMove between cells with the keyboard. | Yessource | Yessource |
| Context menuA built-in cell or row context menu. | Yessource | |
| Row drag and dropReorder rows by dragging them. | No | |
| Export and charts | ||
| ClipboardCopy (and paste) cells, built in. | No | |
| CSV exportBuilt-in export to CSV. | No | |
| Excel exportBuilt-in export to Excel (.xlsx). | No | No |
| Integrated chartsChart grid data from inside the grid. | No | |
| Styling and accessibility | ||
| Theming with CSS variablesTheme the grid through CSS custom properties or design tokens. | Yessource | |
| Documented accessibilityARIA roles and screen reader support, documented by the vendor. | NoKeyboard navigation is built in, but ARIA roles and screen reader support are not documented. | |
| Right-to-leftRight-to-left layout support. | No | |
Side by side
Licensing and pricing
List prices as published by each vendor, in US dollars. Follow the source links for the full terms.
| Edition | License | List price | Conditions | Deployment |
|---|---|---|---|---|
| Infinite Table | Commercial (EULA) | $395 per developer per yearVolume discounts: 5% from 3 developers, 10% from 5, 15% from 10. For 20 or more developers, email us.source | Every feature is free to use, in any product, as long as the "Powered by Infinite Table" footer stays visible. A license removes the footer and adds email support. | Development licenses only: no deployment, application or SaaS licenses. |
| Material React Table | MIT | Freesource | MIT: free in personal and commercial projects. | None (MIT). |
Bundle size and dependencies
Every dependency is code you ship and a package you have to trust and keep updated. Infinite Table has none.
| 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 |
| 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 |
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.
Framework support
- Infinite Table: React 18+ (@infinite-table/infinite-react) and Vue 3.4+ (@infinite-table/infinite-vue), same features and version.
- Material React Table: Built on TanStack Table and Material UI, which (with Emotion and MUI date pickers) are required peer dependencies.
Migrating from Material React Table
MRT column definitions follow TanStack Table (accessorKey, header, Cell); Infinite Table uses a columns object with field.
Material React Table
import { MaterialReactTable, useMaterialReactTable } from 'material-react-table';
import type { MRT_ColumnDef } from 'material-react-table';
type Car = { id: number; make: string; model: string; price: number };
const data: Car[] = [
{ id: 1, make: 'Tesla', model: 'Model Y', price: 64950 },
{ id: 2, make: 'Ford', model: 'F-Series', price: 33850 },
];
const columns: MRT_ColumnDef<Car>[] = [
{ accessorKey: 'make', header: 'Make' },
{ accessorKey: 'model', header: 'Model', size: 200 },
{
accessorKey: 'price',
header: 'Price',
Cell: ({ cell }) => <b>{cell.getValue<number>()}</b>,
},
];
export function Cars() {
const table = useMaterialReactTable({
columns,
data,
getRowId: (row) => String(row.id),
initialState: { sorting: [{ id: 'make', desc: false }] },
});
return <MaterialReactTable table={table} />;
}Infinite Table
import { DataSource, InfiniteTable } from '@infinite-table/infinite-react';
import type { InfiniteTablePropColumns } from '@infinite-table/infinite-react';
import '@infinite-table/infinite-react/index.css';
type Car = { id: number; make: string; model: string; price: number };
const data: Car[] = [
{ id: 1, make: 'Tesla', model: 'Model Y', price: 64950 },
{ id: 2, make: 'Ford', model: 'F-Series', price: 33850 },
];
const columns: InfiniteTablePropColumns<Car> = {
make: { field: 'make', header: 'Make' },
model: { field: 'model', header: 'Model', defaultWidth: 200 },
price: {
field: 'price',
header: 'Price',
renderValue: ({ value }) => <b>{value}</b>,
},
};
export function Cars() {
return (
<div style={{ height: 500, display: 'flex' }}>
<DataSource<Car>
primaryKey="id"
data={data}
defaultSortInfo={{ field: 'make', dir: 1 }}
>
<InfiniteTable<Car> columns={columns} />
</DataSource>
</div>
| Material React Table | Infinite Table |
|---|---|
accessorKey | field |
header | header |
size | defaultWidth, or the columnSizing prop |
Cell | renderValue or render |
getRowId | primaryKey on <DataSource> |
initialState.sorting | defaultSortInfo, sortInfo on <DataSource> |
enableGrouping, grouping state | defaultGroupBy, groupBy on <DataSource> |
renderDetailPanel | rowDetailRenderer |
manualSorting... + your fetch | a data function on <DataSource>, with lazyLoad |
What Material React Table does well
- A ready-made Material Design data table on top of TanStack Table: toolbar, menus, filters and pagination included. source
- It respects your Material UI theme. source
- MIT with no paid tier, including grouping, aggregation, tree rows and detail panels. source
- Rich filtering: 13 filter variants, including date, range and multi-select. source
- Five editing modes (modal, row, cell, table, custom). source
The latest stable release, 3.2.1, is from March 2025. source
FAQ
Do I need Material UI for Material React Table?
Yes. Material UI, Emotion, MUI icons and MUI date pickers are required peer dependencies. Infinite Table has no dependencies.
Does Material React Table support pivoting?
No pivoting feature is documented. It has grouping with aggregation, inherited from TanStack Table. Infinite Table has built-in pivoting.
Is Infinite Table free to use?
Yes. Every feature is free to use, in any product and in production, as long as the "Powered by Infinite Table" footer stays visible. A license removes the footer and adds email support: $395 per developer per year, with volume discounts and no deployment or application licenses. See pricing.
How many dependencies does Material React Table have, compared to Infinite Table?
Infinite Table has 0 runtime dependencies: installing it adds one package. Material React Table adds 94 (94 from other publishers), counting required peer dependencies but not React. Measured on November 11, 2026 with the latest versions on npm.
How big is Material React Table compared to Infinite Table?
Bundling the minimal getting-started usage with esbuild, minified and gzipped, without React: Infinite Table 145 kB of JavaScript, Material React Table 242 kB. CSS is measured separately; the table above has both.
Try Infinite Table
npm i @infinite-table/infinite-react for React, or npm i @infinite-table/infinite-vue for Vue. Every feature is in the package.
Other comparisons
Sources
Sources and corrections
Every statement about another product links to the vendor's own documentation, pricing or license page. Material React Table 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.
Official links for Material React Table: website, docs, license, repository.