Skip to content

Commit 0ee7d69

Browse files
authored
feat: add comparisons page and improve SEO with structured data (jbetancur#1330)
1 parent 1e60c71 commit 0ee7d69

5 files changed

Lines changed: 193 additions & 0 deletions

File tree

apps/docs/public/llms.txt

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# react-data-table-component
2+
3+
> A fast, accessible React data table component with sorting, pagination, row selection, expandable rows, column filtering, and theming built in. Zero runtime dependencies, Apache-2.0 licensed, free with no paid tier. A working table takes about 10 lines of code.
4+
5+
Install: `npm install react-data-table-component`
6+
7+
Minimal usage:
8+
9+
```tsx
10+
import DataTable from 'react-data-table-component';
11+
12+
const columns = [
13+
{ name: 'Name', selector: row => row.name, sortable: true },
14+
{ name: 'Role', selector: row => row.role },
15+
];
16+
17+
<DataTable columns={columns} data={data} pagination />
18+
```
19+
20+
## Getting started
21+
22+
- [Getting Started](https://reactdatatable.com/docs/getting-started): install and render a first table
23+
- [Installation](https://reactdatatable.com/docs/installation): package managers, CSS import, framework setup
24+
- [API Reference](https://reactdatatable.com/docs/api): all props and types
25+
- [Migration Guide](https://reactdatatable.com/docs/migration): upgrading from v7 to v8
26+
27+
## Columns
28+
29+
- [Columns Overview](https://reactdatatable.com/docs/columns): defining columns, selectors, formatting
30+
- [Cell Rendering](https://reactdatatable.com/docs/cells): custom cell components
31+
- [Column Groups](https://reactdatatable.com/docs/column-groups): spanning headers across columns
32+
- [Column Visibility](https://reactdatatable.com/docs/column-visibility): show and hide columns
33+
- [Column Reordering](https://reactdatatable.com/docs/column-reorder): drag to reorder
34+
- [Column Resizing](https://reactdatatable.com/docs/resizable): drag column edges, persist widths
35+
- [Column Pinning](https://reactdatatable.com/docs/column-pinning): pin columns left or right
36+
- [Column Filtering](https://reactdatatable.com/docs/filtering): per-column text, number, and select filters
37+
- [Sorting](https://reactdatatable.com/docs/sorting): client-side and server-side sorting
38+
39+
## Rows
40+
41+
- [Row Selection](https://reactdatatable.com/docs/selection): checkbox multi-select, select all, controlled selection
42+
- [Expandable Rows](https://reactdatatable.com/docs/expandable): detail panels with any component
43+
- [Row Interactions](https://reactdatatable.com/docs/row-interactions): click, double-click, hover handlers
44+
- [Row Pinning](https://reactdatatable.com/docs/row-pinning): pin rows to top
45+
- [Pagination](https://reactdatatable.com/docs/pagination): built-in and custom pagination, server-side
46+
- [Conditional Styles](https://reactdatatable.com/docs/conditional-styles): style rows and cells by data
47+
- [Fixed Header](https://reactdatatable.com/docs/fixed-header): sticky header with scrollable body
48+
- [Footer](https://reactdatatable.com/docs/footer): summary and pagination footers
49+
- [Loading State](https://reactdatatable.com/docs/loading): progress and skeleton states
50+
- [Inline Editing](https://reactdatatable.com/docs/inline-editing): edit cells in place
51+
52+
## Styling
53+
54+
- [Themes](https://reactdatatable.com/docs/themes): 5 built-in themes with dark mode, createTheme()
55+
- [Custom Styles](https://reactdatatable.com/docs/custom-styles): style every table region
56+
57+
## Advanced
58+
59+
- [TypeScript](https://reactdatatable.com/docs/typescript): generic column and row typing
60+
- [SSR](https://reactdatatable.com/docs/ssr): Next.js App Router, Remix, Astro
61+
- [Performance](https://reactdatatable.com/docs/performance): large datasets, memoization
62+
- [Headless Hooks](https://reactdatatable.com/docs/headless): use the logic without the UI
63+
- [Accessibility](https://reactdatatable.com/docs/accessibility): keyboard and screen reader support
64+
- [Localization](https://reactdatatable.com/docs/localization): translated labels and locales
65+
- [RTL Support](https://reactdatatable.com/docs/rtl): right-to-left layouts
66+
- [Mobile](https://reactdatatable.com/docs/mobile): responsive columns and layouts
67+
- [Export](https://reactdatatable.com/docs/export): CSV and JSON export
68+
- [Animations](https://reactdatatable.com/docs/animations): row animations
69+
70+
## Recipes
71+
72+
- [Server-side sort & filter](https://reactdatatable.com/docs/recipes/server-side)
73+
- [Approval workflow with bulk actions](https://reactdatatable.com/docs/recipes/bulk-action-toolbar)
74+
- [URL-synced table state](https://reactdatatable.com/docs/recipes/editable-grid)
75+
- [Dashboard drill-down](https://reactdatatable.com/docs/recipes/master-detail)
76+
- [Audit log viewer](https://reactdatatable.com/docs/recipes/sticky-footer)
77+
- [Persist column widths](https://reactdatatable.com/docs/recipes/persist-column-widths)
78+
- [Inline row actions](https://reactdatatable.com/docs/recipes/row-grouping)
79+
80+
## Optional
81+
82+
- [Changelog](https://reactdatatable.com/docs/changelog): release history
83+
- [Support & Sponsorship](https://reactdatatable.com/support): sponsor tiers, enterprise support via Tidelift
84+
- [GitHub repository](https://github.com/jbetancur/react-data-table-component)
85+
- [npm package](https://www.npmjs.com/package/react-data-table-component)

apps/docs/public/og-image.png

117 KB
Loading

apps/docs/src/layouts/DocsLayout.astro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const nav = [
1616
links: [
1717
{ label: 'Getting Started', href: '/docs/getting-started' },
1818
{ label: 'Installation', href: '/docs/installation' },
19+
{ label: 'Comparisons', href: '/docs/comparisons' },
1920
{ label: 'Changelog', href: '/docs/changelog' },
2021
],
2122
},

apps/docs/src/layouts/Layout.astro

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,24 @@ const {
1010
title = 'react-data-table-component',
1111
description = 'A fast, feature-rich React data table. Working table in 10 lines.',
1212
} = Astro.props;
13+
14+
const jsonLd = JSON.stringify({
15+
'@context': 'https://schema.org',
16+
'@type': 'SoftwareApplication',
17+
name: 'react-data-table-component',
18+
description:
19+
'A fast, accessible React data table component with sorting, pagination, row selection, expandable rows, column filtering, and theming built in. Zero runtime dependencies.',
20+
url: 'https://reactdatatable.com',
21+
applicationCategory: 'DeveloperApplication',
22+
operatingSystem: 'Any',
23+
license: 'https://www.apache.org/licenses/LICENSE-2.0',
24+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
25+
softwareHelp: { '@type': 'CreativeWork', url: 'https://reactdatatable.com/docs' },
26+
downloadUrl: 'https://www.npmjs.com/package/react-data-table-component',
27+
codeRepository: 'https://github.com/jbetancur/react-data-table-component',
28+
programmingLanguage: 'TypeScript',
29+
author: { '@type': 'Person', name: 'John Betancur', url: 'https://github.com/jbetancur' },
30+
});
1331
---
1432

1533
<!doctype html>
@@ -30,6 +48,7 @@ const {
3048
<meta name="twitter:image" content={new URL('/og-image.png', Astro.url).href} />
3149
<link rel="canonical" href={Astro.url.href} />
3250
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
51+
<script is:inline type="application/ld+json" set:html={jsonLd} />
3352
<title>{title}</title>
3453
</head>
3554
<body class="min-h-screen flex flex-col bg-white text-gray-900">
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
layout: '../../layouts/DocsLayout.astro'
3+
title: 'Comparisons: TanStack Table, AG Grid, MUI X | react-data-table-component'
4+
description: 'How react-data-table-component compares to TanStack Table, AG Grid Community, and MUI X Data Grid: setup effort, bundle size, features, and pricing.'
5+
---
6+
7+
# How react-data-table-component compares
8+
9+
All four libraries on this page are solid, actively maintained choices. They differ in how much you assemble yourself, what ships free, and what ecosystem they assume. This page gives you the honest picture so you can pick the right tool, even if it is not this one.
10+
11+
The short version: react-data-table-component is a **full component**. You pass `columns` and `data` and get a styled, sortable, paginated table with selection, expandable rows, and theming. Nothing is gated behind a paid tier.
12+
13+
---
14+
15+
## react-data-table-component vs TanStack Table
16+
17+
TanStack Table is **headless**: it manages table state (sorting, pagination, selection, expansion) and you write every piece of markup and CSS yourself. That is its superpower, total render control, and its cost, you build the UI.
18+
19+
Choose **TanStack Table** when:
20+
21+
- You need pixel-level control over markup and styling
22+
- Your design system dictates exactly how tables must render
23+
- Bundle size is critical (~15 KB min+gzip)
24+
25+
Choose **react-data-table-component** when:
26+
27+
- You want a working, styled table without building the UI layer
28+
- Sorting, pagination, and selection should come with their controls included
29+
- You want built-in themes and dark mode instead of writing CSS
30+
31+
## react-data-table-component vs AG Grid
32+
33+
AG Grid Community is a full-featured data grid with sorting, pagination, selection, and built-in themes included free. It is the heavyweight option: ~338 KB min+gzip, with advanced features such as master/detail (expandable rows), pivoting, and the server-side row model reserved for the commercial AG Grid Enterprise license.
34+
35+
Choose **AG Grid** when:
36+
37+
- You need enterprise grid features: pivoting, row grouping, Excel export, master/detail
38+
- You are rendering very large datasets and need built-in row virtualization
39+
- An Enterprise license is within budget for gated features
40+
41+
Choose **react-data-table-component** when:
42+
43+
- You need a table, not a spreadsheet engine
44+
- Expandable rows should be free, not part of a paid tier
45+
- A ~35 KB footprint fits your app better than ~338 KB
46+
47+
## react-data-table-component vs MUI X Data Grid
48+
49+
MUI X Data Grid is the natural choice inside a Material UI application. The Community version includes sorting, pagination, and selection, and it inherits your MUI theme. It requires the MUI ecosystem (`@mui/material`, `@mui/system`, Emotion) as peer dependencies, and features such as master/detail panels are part of the paid Pro tier.
50+
51+
Choose **MUI X Data Grid** when:
52+
53+
- Your app is already built on Material UI
54+
- You want the grid to inherit your existing MUI theme automatically
55+
- Pro or Premium features fit your budget when you need them
56+
57+
Choose **react-data-table-component** when:
58+
59+
- You are not using Material UI and do not want to adopt it for one component
60+
- You want zero runtime dependencies
61+
- Expandable rows and theming should work out of the box, free
62+
63+
---
64+
65+
## Feature comparison
66+
67+
| | TanStack Table | AG Grid Community | MUI X Data Grid | react-data-table-component |
68+
| --- | --- | --- | --- | --- |
69+
| Approach | Headless | Full data grid | Full data grid | Full component |
70+
| Styled table out of the box | You build the UI ||||
71+
| Sorting, pagination & selection UI | State only ||||
72+
| Expandable row panels | State only | Enterprise tier | Pro tier ||
73+
| Dark mode & themes | Bring your own | ✓ built-in | Via MUI theme | 5 built-in |
74+
| Requires a UI framework | No | No | @mui/material + Emotion | No |
75+
| Row virtualization | Via TanStack Virtual | ✓ built-in | ✓ built-in | ✗ (paginate instead) |
76+
| Size (min+gzip) | ~15 KB | ~338 KB | ~117 KB + MUI | ~35 KB |
77+
| Paid tiers | None | Enterprise | Pro & Premium | None |
78+
79+
Sizes measured via Bundlephobia, July 2026 (TanStack v8.21, AG Grid v36, MUI X v9.8).
80+
81+
## Which should you choose?
82+
83+
- **Full render control, smallest bundle:** TanStack Table
84+
- **Spreadsheet-grade features and virtualized big data:** AG Grid
85+
- **Already on Material UI:** MUI X Data Grid
86+
- **A styled, working table in about 10 lines, with nothing to configure and no tier to upgrade to:** react-data-table-component
87+
88+
See [Getting Started](/docs/getting-started) to try it, or the [live demo](/) on the homepage.

0 commit comments

Comments
 (0)