# Comparison

> slotsmith beside Material React Table, Mantine React Table, the shadcn/ui data table, React Aria Components and Ark UI, with a source for every cell.

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](https://slotsmith.dev/)

Checked on 2026-10-06. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **Components covered:** Data table, autocomplete (a select or a combobox), date picker and file uploader. Source: <https://slotsmith.dev/ar/getting-started/>
- **Styling model:** Optional stylesheets, one for everything or one per component, that read `--ss-*` CSS custom properties. Without a stylesheet the parts are plain HTML with stable class names, styled by your CSS, Tailwind or design system. Source: <https://slotsmith.dev/ar/theming/>
- **How you replace a part:** Each component is made of named slots; its `components` prop takes your component for any of them. Slots you leave alone keep their fallbacks. Source: <https://slotsmith.dev/ar/guides/>
- **Built on:** React. The data table uses TanStack Table 9; slotsmith has no dependencies of its own. Source: <https://slotsmith.dev/ar/getting-started/#install>
- **Required dependencies and peers:** Peers: `react` >=18, `react-dom` >=18. Optional peers: `@tanstack/react-table` ^9.2.0, `@tanstack/react-virtual` ^3.10.0. No dependencies. Source: <https://slotsmith.dev/ar/getting-started/#install>
- **License:** ISC. Source: <https://slotsmith.dev/ar/trust/#license>
- **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`. Source: <https://slotsmith.dev/ar/theming/#rtl>, <https://slotsmith.dev/ar/languages/#available-packs>
- **Virtualisation:** `VirtualDataTable`, `VirtualAutocomplete` and `VirtualFileUploader` from `slotsmith/virtual` render only the rows or options in view. They need `@tanstack/react-virtual`. Source: <https://slotsmith.dev/ar/components/data-table/guides/virtual-rows/>
- **TypeScript:** Written in TypeScript; the package ships its type declarations. Source: <https://slotsmith.dev/ar/components/data-table/api/>

## [Material React Table](https://www.material-react-table.com/)

Checked on 2026-10-06. Read from the repository's `v3` branch (package version 3.2.1) and the V3 docs. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **Components covered:** Data table only; the README describes no standalone combobox, date picker or file uploader. Source: <https://github.com/KevinVandy/material-react-table/blob/v3/README.md>
- **Styling model:** Styled by Material UI. It follows the app's Material UI theme; the docs recommend the `sx` prop, passed through the `mui…Props` options, for styling its parts. Source: <https://www.material-react-table.com/docs/guides/customize-components>
- **How you replace a part:** `mui…Props` options pass props to the Material UI components inside the table. `renderTopToolbar` and `renderBottomToolbar` replace the toolbars, and `MRT_` sub-components such as `MRT_TableContainer` can be arranged in your own layout. Source: <https://www.material-react-table.com/docs/guides/toolbar-customization>, <https://www.material-react-table.com/docs/guides/customize-components>
- **Built on:** Material UI V6 and TanStack Table V8, as its README states. Source: <https://github.com/KevinVandy/material-react-table/blob/v3/README.md>
- **Required dependencies and peers:** Peers: `@mui/material` >=6, `@mui/icons-material` >=6, `@mui/x-date-pickers` >=7.15, `@emotion/react` >=11.13, `@emotion/styled` >=11.13, `react` >=18.0, `react-dom` >=18.0. Dependencies: `@tanstack/react-table`, `@tanstack/react-virtual`, `@tanstack/match-sorter-utils`, `highlight-words`. Source: <https://github.com/KevinVandy/material-react-table/blob/v3/packages/material-react-table/package.json>
- **License:** MIT. Source: <https://github.com/KevinVandy/material-react-table/blob/v3/packages/material-react-table/package.json>
- **RTL support:** The column resizing guide documents `columnResizeDirection: "rtl"` for right-to-left tables, set automatically from the Material UI theme's `direction`. The localization guide lists `ar`, `fa` and `he` among the included locales and does not mention RTL. Source: <https://www.material-react-table.com/docs/guides/column-resizing>, <https://www.material-react-table.com/docs/guides/localization>
- **Virtualisation:** Row and column virtualisation, turned on with `enableRowVirtualization` and `enableColumnVirtualization`, using `@tanstack/react-virtual`. Source: <https://www.material-react-table.com/docs/guides/virtualization>
- **TypeScript:** Its README lists "Advanced TypeScript Generics Support (TypeScript Optional)". Source: <https://github.com/KevinVandy/material-react-table/blob/v3/README.md>

## [Mantine React Table](https://www.mantine-react-table.com/)

Checked on 2026-10-06. 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-react-table@beta`. 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. Source: <https://v2.mantine-react-table.com/docs/getting-started/install>, <https://registry.npmjs.org/-/package/mantine-react-table/dist-tags>, <https://www.mantine-react-table.com/docs/getting-started/install>. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **Components covered:** Data table only; the README describes no standalone combobox, date picker or file uploader. Source: <https://github.com/KevinVandy/mantine-react-table/blob/v2/README.md>
- **Styling model:** Styled by Mantine. It follows the app's Mantine theme; parts are restyled with its CSS variables, the `mrt-` and `mantine-` class names, or `style` on the `mantine…Props` options. The install guide has you import `mantine-react-table/styles.css`. Source: <https://v2.mantine-react-table.com/docs/guides/customize-components>, <https://v2.mantine-react-table.com/docs/getting-started/install>
- **How you replace a part:** `mantine…Props` options pass props to the Mantine components inside the table. `renderTopToolbar` and `renderBottomToolbar` replace the toolbars, and `MRT_` sub-components such as `MRT_TableContainer` can be arranged in your own layout. Source: <https://v2.mantine-react-table.com/docs/guides/toolbar-customization>, <https://v2.mantine-react-table.com/docs/guides/customize-components>
- **Built on:** Mantine V7 and TanStack Table V8, as its README states. Source: <https://github.com/KevinVandy/mantine-react-table/blob/v2/README.md>
- **Required dependencies and peers:** Peers: `@mantine/core` ^7.17.7, `@mantine/dates` ^7.17.7, `@mantine/hooks` ^7.17.7, `@tabler/icons-react` >=2.23.0, `clsx` >=2, `dayjs` >=1.11, `react` >=18.0, `react-dom` >=18.0. Dependencies: `@tanstack/react-table`, `@tanstack/react-virtual`, `@tanstack/match-sorter-utils`. The same branch's README still lists Mantine V6 and `@emotion/react` in its install step. The package.json is used here. Source: <https://github.com/KevinVandy/mantine-react-table/blob/v2/packages/mantine-react-table/package.json>, <https://github.com/KevinVandy/mantine-react-table/blob/v2/README.md>
- **License:** MIT. Source: <https://github.com/KevinVandy/mantine-react-table/blob/v2/packages/mantine-react-table/package.json>
- **RTL support:** The column resizing guide documents `columnResizeDirection: "rtl"` for right-to-left tables. The localization guide lists `ar`, `fa` and `he` among the included locales and does not mention RTL. Source: <https://v2.mantine-react-table.com/docs/guides/column-resizing>, <https://v2.mantine-react-table.com/docs/guides/localization>
- **Virtualisation:** Row and column virtualisation, turned on with `enableRowVirtualization` and `enableColumnVirtualization`, using `@tanstack/react-virtual`. Source: <https://v2.mantine-react-table.com/docs/guides/virtualization>
- **TypeScript:** Its README lists "Advanced TypeScript Generics Support (TypeScript Optional)". Source: <https://github.com/KevinVandy/mantine-react-table/blob/v2/README.md>

## [shadcn/ui data table](https://ui.shadcn.com/docs/components/data-table)

Checked on 2026-10-06. This is a guide in the shadcn/ui docs, not an npm package: you write the table component in your own project. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **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" />`. Source: <https://ui.shadcn.com/docs/components/data-table>, <https://ui.shadcn.com/docs/components>, <https://ui.shadcn.com/docs/components/input>
- **Styling model:** Tailwind CSS classes in component source that lives in your project. The manual install says "Components are styled using Tailwind CSS." Source: <https://ui.shadcn.com/docs/installation/manual>
- **How you replace a part:** You edit the code. The guide has you build the `DataTable` component yourself from TanStack Table and the `<Table />` parts, so every element is in your own file. Source: <https://ui.shadcn.com/docs/components/data-table>
- **Built on:** TanStack Table and the shadcn/ui `<Table />` component. The guide says it uses TanStack Table v9. Source: <https://ui.shadcn.com/docs/components/data-table>
- **Required dependencies and peers:** The guide's install step adds the `table` component with the shadcn CLI and installs `@tanstack/react-table`. shadcn/ui's manual install requires Tailwind CSS. Source: <https://ui.shadcn.com/docs/components/data-table>, <https://ui.shadcn.com/docs/installation/manual>
- **License:** MIT. Source: <https://github.com/shadcn-ui/ui/blob/main/LICENSE.md>
- **RTL support:** The guide links to shadcn/ui's RTL guide: with `rtl: true` in `components.json`, the CLI rewrites physical classes as logical ones. That guide says the automatic rewrite is for projects created with `shadcn create` and the new styles, and that Calendar, Pagination and Sidebar need manual migration. Source: <https://ui.shadcn.com/docs/rtl>, <https://ui.shadcn.com/docs/components/data-table>
- **Virtualisation:** Not documented. The guide does not mention virtualisation. Source: <https://ui.shadcn.com/docs/components/data-table>
- **TypeScript:** The guide's code is TypeScript. shadcn/ui states that its components are written in TypeScript and that a JavaScript version is available through the CLI. Source: <https://ui.shadcn.com/docs/javascript>, <https://ui.shadcn.com/docs/components/data-table>

## [React Aria Components](https://react-aria.adobe.com/)

Checked on 2026-10-06. Read from the docs and the `react-aria-components` package.json (version 1.21.1) on the repository's `main` branch. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **Components covered:** Table, ComboBox and DatePicker. For files it has DropZone and FileTrigger; their pages do not describe an upload queue or upload progress. Source: <https://react-aria.adobe.com/Table>, <https://react-aria.adobe.com/ComboBox>, <https://react-aria.adobe.com/DatePicker>, <https://react-aria.adobe.com/DropZone>, <https://react-aria.adobe.com/FileTrigger>
- **Styling model:** No styles by default. Each component has a default class name, `react-aria-ComponentName`, and data attributes for its states; `className` and `style` also accept functions of the state. Source: <https://react-aria.adobe.com/styling>
- **How you replace a part:** Components are composed from child components that you arrange. The `render` prop swaps a component's DOM element, each component exports a context for building custom children with `useContextProps`, and a hook-based API sits underneath. Source: <https://react-aria.adobe.com/customization>
- **Built on:** The `react-aria` and `react-stately` packages, which its package.json lists as dependencies. Source: <https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/package.json>
- **Required dependencies and peers:** Peers: `react` and `react-dom`, each ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1. Dependencies include `react-aria`, `react-stately` and `@internationalized/date`. Source: <https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/package.json>
- **License:** Apache-2.0. Source: <https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/package.json>
- **RTL support:** The docs state that it "supports right-to-left interactions (e.g. keyboard navigation)" and includes localized strings for 30+ languages. Source: <https://react-aria.adobe.com/quality>
- **Virtualisation:** A `Virtualizer` component renders only the visible items of a ListBox, GridList or Table, with list, grid, waterfall and table layouts. Source: <https://react-aria.adobe.com/Virtualizer>
- **TypeScript:** The package ships type declarations: its package.json has a `types` entry. Source: <https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/package.json>

## [Ark UI / Park UI](https://ark-ui.com/)

Checked on 2026-10-06. Two projects: Ark UI is the headless library (`@ark-ui/react` 5.39.3 on the repository's `main` branch); Park UI (park-ui.com) is a styled set of components built on it. [Wrong? Open an issue](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction).

- **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. Source: <https://ark-ui.com/docs/components/combobox>, <https://ark-ui.com/docs/components/date-picker>, <https://ark-ui.com/docs/components/file-upload>, <https://park-ui.com/docs/components/table>, <https://park-ui.com/docs/components/date-picker>
- **Styling model:** Ark UI is headless: parts carry `data-scope`, `data-part` and `data-state` attributes and take `className`; its styling guide covers CSS, Panda CSS and Tailwind CSS. Park UI is a styled layer built with Panda CSS. Source: <https://ark-ui.com/docs/guides/styling>, <https://park-ui.com/docs/introduction>
- **How you replace a part:** Components are composed from parts such as `Root`, `Trigger` and `Item`. The `asChild` prop renders your own element or component in place of a part's default element. Park UI's CLI adds component source to your project. Source: <https://ark-ui.com/docs/guides/composition>, <https://park-ui.com/docs/introduction>
- **Built on:** Ark UI: Zag.js state machines, for React, Solid, Vue and Svelte. Park UI: Ark UI and Panda CSS. Source: <https://github.com/chakra-ui/ark/blob/main/README.md>, <https://github.com/chakra-ui/park-ui/blob/main/README.md>
- **Required dependencies and peers:** `@ark-ui/react` peers: `react` >=18.0.0, `react-dom` >=18.0.0. Its dependencies are `@zag-js/*` packages and `@internationalized/date`. Park UI's install guide asks for a Panda CSS project, `@ark-ui/react` and `lucide-react`. Source: <https://github.com/chakra-ui/ark/blob/main/packages/react/package.json>, <https://park-ui.com/docs/installation>
- **License:** MIT, for both. Source: <https://github.com/chakra-ui/ark/blob/main/packages/react/package.json>, <https://github.com/chakra-ui/park-ui/blob/main/LICENSE>
- **RTL support:** Ark UI's README lists "RTL support" under its built-in accessibility. Its `LocaleProvider` is described as setting "the locale and direction of the app", and `useLocaleContext` returns `locale` and `dir`. Park UI: Not documented. Its docs navigation has no RTL page. Source: <https://github.com/chakra-ui/ark/blob/main/README.md>, <https://ark-ui.com/docs/utilities/locale>, <https://park-ui.com/docs/installation>
- **Virtualisation:** Ark UI has no table component. Its Combobox page has a virtualised example that uses `@tanstack/virtual`. Park UI: Not documented on its Table page. Source: <https://ark-ui.com/docs/components/combobox>, <https://park-ui.com/docs/components/table>
- **TypeScript:** Ark UI's README says "Fully typed with TypeScript". Park UI's component source is TypeScript: its Table page shows it with exported prop types. Source: <https://github.com/chakra-ui/ark/blob/main/README.md>, <https://park-ui.com/docs/components/table>

"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](https://github.com/tmzm/slotsmith/issues/new?title=Comparison%20correction) with a link to the page that shows the current fact.
