mantine-react-table: TanStack Table V8 with a Mantine surface, and a V2 branch still in beta
A fully featured Mantine V7 implementation of TanStack React Table V8, forked from Material React Table
At a glance
- What is it?
- mantine-react-table is a fork of Material React Table that renders TanStack React Table V8 with Mantine components, with roughly thirty optional features you can each switch off, from column pinning to tree data to virtualization. The default branch is v2, its newest tagged release is v2.0.0-beta.9 from February 2025, and the install instructions still name Mantine V6 peers while the project describes itself as Mantine V7.
- Who is it for?
- mantine-react-table suits a React team that has standardised on Mantine and wants a data grid without hand building the toolbar, the filters, the pagination and the column controls, and that is happy to treat each of those as a toggle rather than a configuration exercise.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 140 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it is: Material React Table, re-skinned in Mantine
Mantine React Table is described as a fully featured Mantine V7 implementation of TanStack React Table V8, forked from Material React Table. The fork relationship is the essential fact, and it changes what you are evaluating. You are not choosing between a grid library and nothing, you are choosing a different design system for a grid whose behaviour layer is TanStack Table. The project description in the repository says the same thing, a fully featured Mantine V7 implementation of TanStack Table V8, forked from Material React Table, and the README says V1 released July 18, 2023. The home page is mantine-react-table.com with a separate docs site and a storybook at mantine-react-table.dev, and the licence is MIT. So the question for an adopter is not whether TanStack Table is any good, it is whether the Mantine rendering of it is the one you want.
Every feature is a toggle, and that is the design
The feature list is long, and the framing line above it is the important part: all features can easily be enabled or disabled. The list covers aggregation and grouping with sum, average and count, click to copy cell values, a column action dropdown, column hiding, column ordering via drag and drop, column pinning to freeze columns, column resizing, customisable icons, customising the styling of internal Mantine components, data editing in four different editing modes, a density toggle, detail panels for expansion, filtering on both the client and the server side, filter match highlighting, full screen mode, global filtering that searches across all columns and ranks by best match, header groups and footers, localisation, pagination on client or server, row actions, row numbers, row ordering by drag and drop, row selection with checkboxes, server side sorting, theming that respects your Mantine theme, toolbars, tree data with expanding sub rows, and virtualization through @tanstack/react-virtual. The toggle design is what makes a library with this many features usable, because most applications need five of them and are damaged by the other twenty five.
The two state models, and the useMantineReactTable hook
The usage example is worth reading in full because it shows the shape of the API. You define columns with useMemo, either with an accessorKey, which the comment calls the simple recommended way to define a column, or with an accessorFn, in which case an id is required instead of the accessorKey. Then you call useMantineReactTable with the columns and the data, and pass the resulting table to MantineReactTable. The features are switched on and off with enable-prefixed options such as enableColumnOrdering, enableRowSelection and enablePagination, the last of which the example sets to false to disable a default feature. State handling is explicitly optional. You can let the table manage its state internally, or you can manage any or all of it yourself, and the example hoists row selection to a useState and passes both onRowSelectionChange and the state object, so the parent can react to selection changes in a useEffect. The optional custom cell and header renderers are per column, with mantineTableHeadCellProps for passing props into the underlying Mantine component.
const table = useMantineReactTable({
columns,
data,
enableColumnOrdering: true,
enableRowSelection: true,
enablePagination: false,
onRowSelectionChange: setRowSelection,
state: { rowSelection },
});
return <MantineReactTable table={table} />;The examples tell you which problems it actually solves
The Quick Examples list is a map of the library's use cases, and a few entries tell you more than the feature list does. There is a Basic Table showing the default features, a Minimal Table that turns off features like pagination, sorting, filtering and toolbars, and an Advanced Table. There is an Aggregation and Grouping example, and a Data Export Table for exporting to CSV and Excel. The Editing CRUD Table covers create, edit and delete rows. Then three examples that address the same problem at different levels of effort: a Remote Data example for server-side pagination, sorting and filtering, a React Query example described as the same thing simplified, and an Infinite Scrolling example that fetches data as you scroll. A Virtualized Rows example claims 10,000 rows at once. And a Localization example with over a dozen languages built in. The pairing of the React Query and the plain remote examples is the useful signal, since it tells you the library supports either style of data fetching.
Installation: peers first, then the library, and a version inconsistency
The Getting Started section has three steps. Ensure you have React 17 or later installed. Install the peer dependencies, with the command npm install @mantine/core @mantine/hooks @mantine/dates @emotion/react @tabler/icons-react dayjs. Then install mantine-react-table itself with npm install mantine-react-table. There is a note that matters: @tanstack/react-table, @tanstack/react-virtual and @tanstack/match-sorter-utils are internal dependencies, so you do NOT need to install them yourself. That note saves a common mistake, because a developer coming from TanStack Table directly would install the headless library and then end up with two copies of the state logic. The inconsistency to be aware of is that the step two heading calls the peers Mantine V6 and Tabler Icons while the project describes itself as a Mantine V7 implementation, so the version you end up with depends on what your package manager resolves and on the version of the library you install.
npm install @mantine/core @mantine/hooks @mantine/dates @emotion/react @tabler/icons-react dayjs
npm install mantine-react-tableThe v2 branch, a 2025 beta, and a workspace built on turbo and pnpm
The default branch is v2, and the release history is the part to weigh. The listed releases are v2.0.0-beta.7 on 2024-10-12, v2.0.0-beta.8 on 2025-01-09 and v2.0.0-beta.9 on 2025-02-17, and the last push to the repository was on 2026-06-05, with the repository not archived. So the v2 line has been in beta for a long time and the code has been touched more recently than the last tag, which is the pattern of a project that is working on v2 but not cutting a stable release from it. The V1 line was released on July 18, 2023. The repository is a monorepo built on pnpm workspaces and turbo, with packages/ and apps/ directories, a pnpm-lock.yaml and a turbo.json, and the package manager is pinned to [email protected] with a Node engine of 16 or newer. There is an upgrade-examples.sh script and a bash.sh at the root, which suggests the upgrade path between versions is something the maintainer scripts rather than hand-written.
Size, SSR and the parts of the feature list that are about your data
A few items in the list are not really features but constraints, and they are the ones a careful evaluator notes. The bundle size is stated as under 44kb gzipped with a Bundlephobia link, which for a component library of this scope is small, and the internal dependency arrangement is part of why. SSR compatible is on the list, which matters for a Next.js application where a grid that touches the window during render will fail the build. Advanced TypeScript Generics Support is marked TypeScript Optional, so the library works in a JavaScript project and adds types when you have them. The features that touch your data rather than the presentation are the ones worth reading the docs for: filtering, pagination and sorting all support both client side and server side, and the docs site links to the API reference for all props, options and APIs. The docs site is described as fully fleshed out for all features, and there is a Discord for development discussion and questions.
Editorial conclusion
mantine-react-table suits a React team that has standardised on Mantine and wants a data grid without hand building the toolbar, the filters, the pagination and the column controls, and that is happy to treat each of those as a toggle rather than a configuration exercise. It is the wrong choice if you need a stable 2.0 release today, because the v2 branch has been in beta since late 2024 and the newest tag is a beta from 2025, and a poor fit if you are not on Mantine, since the whole point of the fork is the Mantine surface. Before adopting it, read the installation docs rather than the README snippet, because the peer dependency command in the README names Mantine V6 packages while the project describes itself as a Mantine V7 implementation, and check the release notes for the version you intend to pin.
Frequently asked questions
What is the relationship between mantine-react-table and Material React Table?
mantine-react-table is a fork of Material React Table. It is a fully featured Mantine V7 implementation of TanStack React Table V8, so the behaviour layer comes from TanStack Table and the rendering comes from Mantine. The V1 version was released on July 18, 2023.
How do I install mantine-react-table?
Ensure React 17 or later is installed, then install the peer dependencies with npm install @mantine/core @mantine/hooks @mantine/dates @emotion/react @tabler/icons-react dayjs, and then npm install mantine-react-table. The @tanstack/react-table, @tanstack/react-virtual and @tanstack/match-sorter-utils packages are internal dependencies you do not need to install.
Can I manage the table state myself in mantine-react-table?
Yes. You can let the table manage its state internally or manage any or all of it yourself. The example hoists row selection into a useState, passes onRowSelectionChange and the state object to useMantineReactTable, and reacts to changes in a useEffect.
Is mantine-react-table v2 stable?
Not yet. The default branch is v2, and the listed releases are v2.0.0-beta.7 from 2024-10-12, v2.0.0-beta.8 from 2025-01-09 and v2.0.0-beta.9 from 2025-02-17, with the last push to the repository on 2026-06-05.
What can mantine-react-table do with large data sets?
The examples include a virtualized rows example showing 10,000 rows at once, using @tanstack/react-virtual, and an infinite scrolling example that fetches data as you scroll. Filtering, pagination and sorting all support both client side and server side operation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/kevinvandy-mantine-react-table)Was this useful?