Skip to content
@Better-Tables

better-tables

πŸ‘‹ Welcome to Better Tables

Type-safe, database-agnostic React table library with automatic relationship filtering, zero boilerplate, and end-to-end type safety.

TypeScript React License Contributions Welcome


πŸš€ What is Better Tables?

Better Tables is the React table library you wished existed. Define your columns once, and get powerful filtering, sorting, pagination, and virtualizationβ€”all with end-to-end type safety across your database queries and UI components.

✨ Key Features

  • πŸ”— Automatic Relationship Filtering - Filter across joined tables without writing JOIN queries
  • 🎯 Type-Safe End-to-End - Full TypeScript support from database to UI
  • πŸ—οΈ Zero Boilerplate - Declarative column definitions with fluent API
  • πŸ” Advanced Filtering - 6 filter types with 20+ operators
  • ⚑ Virtual Scrolling - Handle millions of rows efficiently
  • πŸ”„ URL State Persistence - Shareable, bookmarkable filtered views
  • πŸ—„οΈ Database Adapters - Works with Drizzle ORM, REST APIs, and more

πŸ“¦ Our Packages

Package Description
@better-tables/core Core functionality, builders, and managers
@better-tables/ui React components built with shadcn/ui
@better-tables/adapters-drizzle Drizzle ORM integration with automatic relationship detection
@better-tables/adapters-memory In-memory adapter for testing

🏠 Main Repository

πŸ‘‰ better-tables - The main monorepo containing all packages, documentation, and examples.

Quick Links


πŸš€ Quick Start

# Install core package
npm install @better-tables/core

# Install an adapter
npm install @better-tables/adapters-drizzle
import { createColumnBuilder } from '@better-tables/core';
import { BetterTable } from '@better-tables/ui';

const cb = createColumnBuilder<User>();

const columns = [
  cb.text().id('name').displayName('Name').accessor(u => u.name).build(),
  cb.text().id('email').displayName('Email').accessor(u => u.email).build(),
];

<BetterTable columns={columns} data={users} features={{ filtering: true }} />

🀝 Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, every contribution makes Better Tables better.

Areas We Need Help

  • πŸ”Œ REST adapter implementation
  • πŸ“ Documentation improvements
  • 🎨 More examples and use cases
  • ⚑ Performance optimizations
  • β™Ώ Accessibility improvements

🌟 Star Us!

If you find Better Tables useful, please consider giving us a ⭐ on GitHub!

GitHub stars


πŸ“„ License

Better Tables is open source and available under the MIT License.


Built with ❀️ by the Better Tables Team

Website β€’ Documentation β€’ Discussions β€’ Issues

Popular repositories Loading

  1. better-tables better-tables Public

    Type-safe React table library with automatic relationship filtering, zero boilerplate, and end-to-end type safety from database to UI.

    TypeScript 5

  2. .github .github Public

Repositories

Showing 2 of 2 repositories

Top languages

Loading…

Most used topics

Loading…