@material-table/core
A highly customizable datatable for React, built on Material UI — forked from mbrn/material-table
Installation • Basic Usage • Documentation • Demos
Why this repo exists? • Roadmap
Features
- Sorting & multi-column sorting — client- or server-side
- Filtering & search — per-column filters (text, numeric, boolean, date, lookup) plus global search
- Pagination — normal or stepped, fully localizable
- Inline editing — row, cell and bulk editing with validation
- Grouping — drag & drop column grouping with persistent groupings
- Selection — row selection with parent/child (tree) support
- Tree data & detail panels — nested rows and expandable panels
- Column resizing, reordering and hiding
- Remote data — plug in any backend via a simple query callback
- Export — pluggable export menu (CSV, PDF, custom)
- Styling & theming — Material UI theme aware, custom components for every part of the table
- Localization — every label and aria attribute is overridable
Requirements
| Peer dependency | Version |
|---|---|
react / react-dom |
>= 19 |
@mui/material |
v9 |
Built with modern tooling: Vite 8 library build (tree-shakeable, per-module ESM output), Vitest 4 test suite, ESLint 9 flat config. The package ships as ESM; CommonJS consumers are covered by Node's require(esm) support (Node >= 20.19).
Installation
npm install @material-table/core
# or
yarn add @material-table/core
Refer to the installation guide for more information and advanced usage.
Basic Usage
import MaterialTable from '@material-table/core';
function MyTable() {
return (
<MaterialTable
title="Simple Table"
columns={[
{ title: 'Name', field: 'name' },
{ title: 'Age', field: 'age', type: 'numeric' }
]}
data={[
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 }
]}
options={{
sorting: true,
filtering: true
}}
/>
);
}
Explore more features and advanced usage in the documentation and live demos.
Development
npm install
npm start # Vite dev server with the demo playground
npm test # build + run the Vitest suite
npm run lint # ESLint + type-check of the TypeScript definitions
npm run build # build the library to dist/
Sponsorship
We appreciate contributions and sponsorships! You can support this project through GitHub Sponsors or Open Collective. Your support helps us maintain and improve the project.
Contributing
Thank you for considering contributing to the project! Areas where help is especially welcome:
- Refactoring — migrate the remaining class components to hooks
- Documentation — help us improve the docs
- Tests — extend the Vitest suite to improve stability
We appreciate all contributions, big or small. Check out the contributing guide for more details.