Comparison
This comparison sets slotsmith beside Material React Table, Mantine React Table, the shadcn/ui data table guide, React Aria Components and Ark UI with Park UI, one attribute at a time. Each cell was read from the project’s official docs or repository on the date shown, and links to that page.
slotsmith
checked on
- Components covered
Data table, autocomplete (a select or a combobox), date picker and file uploader.
- Styling model
Optional stylesheets, one for everything or one per component, that read
-CSS custom properties. Without a stylesheet the parts are plain HTML with stable class names, styled by your CSS, Tailwind or design system.- ss- * - How you replace a part
Each component is made of named slots; its
componentsprop takes your component for any of them. Slots you leave alone keep their fallbacks.- Built on
React. The data table uses TanStack Table 9; slotsmith has no dependencies of its own.
- Required dependencies and peers
Peers:
react>=18,react->=18. Optional peers:dom @tanstack/^9.2.0,react- table @tanstack/^3.10.0. No dependencies.react- virtual - License
ISC
- RTL support
The stylesheets use CSS logical properties, so components mirror inside
dir="rtl". 6 of the 18 locale packs are right-to-left:ar,ar-,EG ar-,IQ ar-,SA fa,he.- Virtualisation
Virtual,Data Table VirtualandAutocomplete VirtualfromFile Uploader slotsmith/render only the rows or options in view. They needvirtual @tanstack/.react- virtual - TypeScript
Written in TypeScript; the package ships its type declarations.
Material React Table
checked on
Read from the repository's v3 branch (package version 3.2.1) and the V3 docs.
- Components covered
Data table only; the README describes no standalone combobox, date picker or file uploader.
- Styling model
Styled by Material UI. It follows the app's Material UI theme; the docs recommend the
sxprop, passed through themui…Propsoptions, for styling its parts.- How you replace a part
mui…Propsoptions pass props to the Material UI components inside the table.renderandTop Toolbar renderreplace the toolbars, andBottom Toolbar MRT_sub-components such asMRT_can be arranged in your own layout.Table Container - Built on
Material UI V6 and TanStack Table V8, as its README states.
- Required dependencies and peers
Peers:
@mui/>=6,material @mui/>=6,icons- material @mui/>=7.15,x- date- pickers @emotion/>=11.13,react @emotion/>=11.13,styled react>=18.0,react->=18.0. Dependencies:dom @tanstack/,react- table @tanstack/,react- virtual @tanstack/,match- sorter- utils highlight-.words - License
MIT
- RTL support
The column resizing guide documents
columnfor right-to-left tables, set automatically from the Material UI theme'sResize Direction: "rtl" direction. The localization guide listsar,faandheamong the included locales and does not mention RTL.- Virtualisation
Row and column virtualisation, turned on with
enableandRow Virtualization enable, usingColumn Virtualization @tanstack/.react- virtual - TypeScript
Its README lists "Advanced TypeScript Generics Support (TypeScript Optional)".
Mantine React Table
checked on
This column describes a pre-release. The repository's default branch is v2 (package version 2.0.0-beta.9, for Mantine V7), installed as mantine-. The latest tag on npm is 1.3.4, which is V1, for Mantine V6; www.mantine-react-table.com documents that version. The column follows the repository and the V2 docs.
- Components covered
Data table only; the README describes no standalone combobox, date picker or file uploader.
- Styling model
Styled by Mantine. It follows the app's Mantine theme; parts are restyled with its CSS variables, the
mrt-andmantine-class names, orstyleon themantine…Propsoptions. The install guide has you importmantine-.react- table/ styles. css - How you replace a part
mantine…Propsoptions pass props to the Mantine components inside the table.renderandTop Toolbar renderreplace the toolbars, andBottom Toolbar MRT_sub-components such asMRT_can be arranged in your own layout.Table Container - Built on
Mantine V7 and TanStack Table V8, as its README states.
- Required dependencies and peers
Peers:
@mantine/^7.17.7,core @mantine/^7.17.7,dates @mantine/^7.17.7,hooks @tabler/>=2.23.0,icons- react clsx>=2,dayjs>=1.11,react>=18.0,react->=18.0. Dependencies:dom @tanstack/,react- table @tanstack/,react- virtual @tanstack/.match- sorter- utils The same branch's README still lists Mantine V6 and
@emotion/in its install step. The package.json is used here.react - License
MIT
- RTL support
The column resizing guide documents
columnfor right-to-left tables. The localization guide listsResize Direction: "rtl" ar,faandheamong the included locales and does not mention RTL.- Virtualisation
Row and column virtualisation, turned on with
enableandRow Virtualization enable, usingColumn Virtualization @tanstack/.react- virtual - TypeScript
Its README lists "Advanced TypeScript Generics Support (TypeScript Optional)".
shadcn/ui data table
checked on
This is a guide in the shadcn/ui docs, not an npm package: you write the table component in your own project.
- Components covered
The guide covers a data table. shadcn/ui's component list also has Combobox and Date Picker; it has no file uploader entry, and the Input page shows
<Input type="file" /.> - Styling model
Tailwind CSS classes in component source that lives in your project. The manual install says "Components are styled using Tailwind CSS."
- How you replace a part
You edit the code. The guide has you build the
Datacomponent yourself from TanStack Table and theTable <Table /parts, so every element is in your own file.> - Built on
TanStack Table and the shadcn/ui
<Table /component. The guide says it uses TanStack Table v9.> - Required dependencies and peers
The guide's install step adds the
tablecomponent with the shadcn CLI and installs@tanstack/. shadcn/ui's manual install requires Tailwind CSS.react- table - License
MIT
- RTL support
The guide links to shadcn/ui's RTL guide: with
rtl:intrue components., the CLI rewrites physical classes as logical ones. That guide says the automatic rewrite is for projects created withjson shadcn createand the new styles, and that Calendar, Pagination and Sidebar need manual migration.- Virtualisation
Not documented. The guide does not mention virtualisation.
React Aria Components
checked on
Read from the docs and the react- package.json (version 1.21.1) on the repository's main branch.
- Components covered
Table, ComboBox and DatePicker. For files it has DropZone and FileTrigger; their pages do not describe an upload queue or upload progress.
- Styling model
No styles by default. Each component has a default class name,
react-, and data attributes for its states;aria- Component Name classandName stylealso accept functions of the state.- How you replace a part
Components are composed from child components that you arrange. The
renderprop swaps a component's DOM element, each component exports a context for building custom children withuse, and a hook-based API sits underneath.Context Props - Built on
The
react-andaria react-packages, which its package.json lists as dependencies.stately - Required dependencies and peers
Peers:
reactandreact-, each ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1. Dependencies includedom react-,aria react-andstately @internationalized/.date - License
Apache-2.0
- RTL support
The docs state that it "supports right-to-left interactions (e.g. keyboard navigation)" and includes localized strings for 30+ languages.
- Virtualisation
A
Virtualizercomponent renders only the visible items of a ListBox, GridList or Table, with list, grid, waterfall and table layouts.- TypeScript
The package ships type declarations: its package.json has a
typesentry.
Ark UI / Park UI
checked on
Two projects: Ark UI is the headless library (@ark- 5.39.3 on the repository's main branch); Park UI (park-ui.com) is a styled set of components built on it.
- Components covered
Ark UI has Combobox, Date Picker and File Upload; its component list has no table. Park UI lists a Table, described as "A component for displaying data in rows and columns", plus Combobox, Date Picker (marked WIP) and File Upload.
- Styling model
Ark UI is headless: parts carry
data-,scope data-andpart data-attributes and takestate class; its styling guide covers CSS, Panda CSS and Tailwind CSS. Park UI is a styled layer built with Panda CSS.Name - How you replace a part
Components are composed from parts such as
Root,TriggerandItem. Theasprop renders your own element or component in place of a part's default element. Park UI's CLI adds component source to your project.Child - Built on
Ark UI: Zag.js state machines, for React, Solid, Vue and Svelte. Park UI: Ark UI and Panda CSS.
- Required dependencies and peers
@ark-peers:ui/ react react>=18.0.0,react->=18.0.0. Its dependencies aredom @zag-packages andjs/ * @internationalized/. Park UI's install guide asks for a Panda CSS project,date @ark-andui/ react lucide-.react - RTL support
Ark UI's README lists "RTL support" under its built-in accessibility. Its
Localeis described as setting "the locale and direction of the app", andProvider usereturnsLocale Context localeanddir. Park UI: Not documented. Its docs navigation has no RTL page.- Virtualisation
Ark UI has no table component. Its Combobox page has a virtualised example that uses
@tanstack/. Park UI: Not documented on its Table page.virtual
“Not documented” means the pages checked do not state it; it is not a claim that the feature is missing. Projects change, so a cell here can be out of date. If one is wrong, open a correction issue with a link to the page that shows the current fact.