CoreUI ONE — 250+ PRO components and 25+ admin templates for React, Angular, Vue, Bootstrap and Next.js, plus Data Grid, Scheduler, 4,300+ PRO icons and the Next.js boilerplate. One license. → See what you get

Best React Table Components (2026): 9 Data Tables Compared

The best React table component depends on how much you want built in. Ant Design Table is the strongest free (MIT) all-rounder: multi-column sorting, filter menus, pagination, a server-side mode, tree rows, pinned columns and row virtualization all ship in the core antd package. PrimeReact DataTable packs the most into a single component, including cell and row editing and CSV export, but version 11 moved to the PrimeUI License and has no built-in virtualization yet. TanStack Table, or the shadcn/ui recipe built on it, is the pick when you want headless logic and full control of the markup. On Mantine, mantine-datatable tracks Mantine 9, while mantine-react-table has no release for Mantine 8 or 9. CoreUI Smart Table fits Bootstrap-based CoreUI apps that need server-side sorting, filtering and pagination plus a global search box.

How we compared

We reviewed 12 React table options in October 2026 against a 24-feature data table checklist, using the current npm release of each package (for example antd 6.6.8, primereact 11.2.2, @tanstack/react-table 9.3.1, @mui/material 9.5.0, @heroui/react 3.2.6). Nine made the table; three are covered under “Also considered”.

Each cell comes from the vendor’s documentation, its published source code, or a test in a public demo. We only mark a feature as missing (❌) when the vendor says so in its own docs or issue tracker, or when we reproduced the gap in a working demo. When the docs are silent we show — (no data), which is not a claim that the feature is absent. CoreUI publishes this page; its row follows the same rules, and its ❌ entries come from our own documentation and source.

The comparison at a glance

✅ built in and documented · Partial = headless logic only, a recipe to copy, composition with another component, or a paid add-on · ❌ absence confirmed by the vendor or in a demo · — no data

Library Licence / tier Multi-sort Column filters Global search Built-in pagination Server-side mode Tree rows Sticky header Pinned columns Row virtualization Inline editing Export
Ant Design Table (antd 6.6.8) MIT ✅ ✅ — ✅ ✅ ✅ ✅ ✅ ✅ Partial (recipe) —
PrimeReact DataTable (11.2.2) PrimeUI License: conditional free Community tier, Commercial per developer ✅ ✅ ✅ Partial ✅ ✅ ✅ ✅ ❌ ✅ ✅ CSV
mantine-react-table (community package, not Mantine core) MIT ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ Partial (external library)
mantine-datatable (community package, not Mantine core) MIT — Partial ❌ Partial ✅ Partial ✅ ✅ ❌ — ❌
TanStack Table (headless, logic only) MIT Partial Partial Partial Partial Partial Partial — Partial Partial (TanStack Virtual) — —
shadcn/ui Data Table (recipe on TanStack Table) MIT Partial Partial Partial Partial Partial Partial — Partial Partial — —
HeroUI Table (free) + DataGrid (Pro, beta) Free Table; Pro is commercial — Partial (Pro examples) Partial (Pro examples) Partial Partial (Pro) ✅ — ✅ (Pro) ✅ Partial (Pro) —
CoreUI Smart Table (@coreui/react-pro 5.29.2) CoreUI PRO, $127/dev perpetual ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ❌ ❌
MUI Table (@mui/material 9.5.0, primitives) MIT — — — Partial Partial — ✅ — Partial (react-virtuoso demo) — —

The libraries, one by one

Ant Design Table

Ant Design Table gives you the most in a single MIT package. Sorting takes a multiple priority for multi-column sorts, filters open as menus (with a tree mode and a search box), pagination is on by default with a size changer once there are more than 50 rows, and setting sorter: true plus onChange turns the table into a server-driven one. Tree data comes from children, sticky keeps the header in view, columns pin to either edge, and virtual (since 5.9.0) renders only visible rows. The trade-off: editable cells and rows are documented as recipes rather than a prop, and virtual needs numeric scroll.x/scroll.y.

Choose it if you want the widest free feature set and Ant’s design language suits your product.

PrimeReact DataTable

PrimeReact DataTable is the most complete single component here: Ctrl/Cmd-click multi-sort with a visible priority, row or menu filters with AND/OR rules, globalFilter, a lazy mode that emits page, sort and filter changes, tree mode inside the same table, frozen and resizable columns, a column toggle (new in v11), cell and row editing, and CSV export. The v11 rewrite also removed things: the docs state that “VirtualScroller is not available in v11 yet”, the stacked responsive layout was dropped, and the rows-per-page dropdown now has to be composed from a Select.

Choose it if you need editing and export in one component and you either qualify for the Community licence or budget for the Commercial one.

mantine-react-table

mantine-react-table wraps TanStack Table v8 in Mantine components with almost everything switched on by default: Shift-click multi-sort, filter variants (text, select, multi-select, range, date), fuzzy global search, pagination, manual server mode, detail panels, sub-rows, sticky header, pinning, resizing, column hiding, row virtualization and five editing modes. Export is a documented example using an external library. The catch is versions: the latest tag is 1.3.4 (November 2023, Mantine 6), the beta is 2.0.0-beta.9 (February 2025, Mantine 7.9), and there is no build for Mantine 8 or 9.

Choose it if your app is on Mantine 6 or 7 and you are comfortable pinning it there.

mantine-datatable

mantine-datatable 9.4.0 (July 2026) requires Mantine 9 and React 19, so it is the maintained option for current Mantine apps. It is a controlled component: it renders sorting UI, filters, pagination and selection, and your code (or your backend) does the work, which suits server-driven data. Highlights are pinned first and last columns, resizable columns with saved widths, toggleable and reorderable columns, lazy row expansion and Shift-click range selection. Its maintainer has called export “totally out of scope”, and a virtualization pull request was closed without merging in May 2026.

Choose it if you build on Mantine 9 and your data lives behind an API.

TanStack Table

TanStack Table 9.3.1 is headless: it provides “the logic, state, processing, and APIs for UI elements” but “do not provide markup, styles, or pre-built implementations”. You get multi-sort, column and global filtering, pagination (client or manual), selection, expanding, pinning, resizing and visibility as state and handlers, with adapters for React, Vue, Solid, Svelte, Angular and more. The docs also say the packages “do not come with any virtualization APIs or features built in”; virtualization is the separate TanStack Virtual. Loading states, ARIA and styling are yours.

Choose it if you have your own design system and the front-end time to build on it.

shadcn/ui Data Table

shadcn/ui deliberately ships a guide, not a component: “instead of a data-table component, I thought it would be more helpful to provide a guide on how to build your own.” The recipe uses TanStack Table v9 and shows sorting, filtering one column, pagination with a reusable footer, row selection with select-all, and a column visibility menu. Because the code is copied into your project, you own every fix and every upgrade.

Choose it if your app already uses shadcn/ui and you want the table to look like the rest of it.

HeroUI Table and HeroUI Pro DataGrid

The free HeroUI Table (3.2.6) is built on React Aria: single and multiple selection, column resizing, tree rows via treeColumn, and virtualization through React Aria’s Virtualizer. Sorting data in the free table is your code. HeroUI Pro DataGrid adds built-in client-side sorting, custom sort functions, pinned columns and controlled server-side sorting with infinite scroll, but on npm it is still 1.0.0-beta.10 under a commercial licence, and its prices render client-side, so we could not verify them.

Choose it if you are on HeroUI and virtualization and tree rows matter more than built-in filters.

MUI Table

MUI’s Table is a set of primitives over the native <table>, with a sticky header prop, and TablePagination with rows-per-page options. Sorting, selection and collapsible rows are demos to copy, and the docs say plainly that this “constraint makes building rich data tables challenging”, pointing to MUI X Data Grid. MUI X Community is MIT, but it never shows more than 100 rows at once and sorts by one column; multi-sort starts at Pro, $299 per developer per year.

Choose it if you need a styled Material table with your own logic, or you are already budgeting for MUI X.

CoreUI Smart Table

Our own entry. CoreUI Smart Table is part of CoreUI PRO: $127 per developer, perpetual, with 12 months of updates and renewal at the same price (pricing). The free @coreui/react package only has the styled CTable, without data logic.

What it does well: a complete server-side mode (external on sorting, column filters, pagination and page size, plus itemsNumber from your API), a global tableFilter search box with a reset button, a row of column filters, multi-column sorting, custom sorters and filters, and checkbox selection with select-all.

What it does not have, from our own docs and source: virtualization, a sticky header, pinned or resizable columns, tree rows, inline editing and export. For those needs we sell a separate product, CoreUI Data Grid ($217 per developer, perpetual): row virtualization, pinned and resizable columns, inline editing, and CSV and Excel export, with one licence covering JavaScript, React, Vue and Angular. Tree data is on its roadmap, not shipped.

Choose it if you build on CoreUI or Bootstrap and your table is backed by an API that handles sorting, filtering and paging.

Also considered

What changed in 2026

FAQ

What is the best free React table with sorting and filtering?

Ant Design Table: multi-column sorting, filter menus, pagination and a server-side mode are all in the MIT antd package. If you want to own the markup instead, use TanStack Table, which provides the same logic headless.

Which React table libraries have built-in row virtualization?

Ant Design Table (virtual, since 5.9.0), mantine-react-table (enableRowVirtualization) and the free HeroUI Table (React Aria Virtualizer). PrimeReact 11 states that its VirtualScroller is not available in v11 yet, and TanStack Table leaves virtualization to the separate TanStack Virtual package.

Is PrimeReact still MIT?

Not from version 11. PrimeReact 11 ships under the PrimeUI License with a conditional free Community tier and a paid Commercial tier. The 10.x line (10.9.9) remains MIT.

Does shadcn/ui have a data table component?

No, by design. shadcn/ui publishes a guide that builds a data table from its Table component and TanStack Table, and you copy that code into your project.

Does mantine-react-table work with Mantine 8 or 9?

There is no published version for either. The stable 1.3.4 targets Mantine 6 and the 2.0 beta targets Mantine 7.9. For Mantine 9, mantine-datatable 9.4.0 is the maintained community option.

Is CoreUI’s React data table free?

The styled CTable is free (MIT). The data table with sorting, filtering, pagination and server-side mode, Smart Table, is part of CoreUI PRO at $127 per developer.