finds.dev← search

// the find

openstatusHQ/data-table-filters

★ 2,175 · TypeScript · MIT · updated Jul 2026

Faceted filters, sorting & infinite scroll for React data tables - shadcn/ui + TanStack Table

A shadcn registry of copy-paste blocks for building filterable data tables in Next.js, built on TanStack Table + TanStack Query. The main idea is a schema-first approach: you define columns once with `createTableSchema` and generators produce the columns, filter fields, and sheet fields automatically. Aimed at teams building internal tools or dashboards who are already in the shadcn ecosystem.

The BYOS adapter pattern is genuinely well-thought-out — swapping between URL state (nuqs), Zustand, or in-memory without touching the table logic is something most teams end up hacking together themselves. The shadcn registry install (`npx shadcn@latest add`) means you get the source in your project rather than a versioned dependency you can't modify, which is the right model for UI components. Presets for common patterns like HTTP status codes, log levels, and durations save real time and are the kind of thing that's tedious to get right. The Drizzle integration providing cursor-based pagination with server-side faceted counts is a solid complete example, not a toy.

The install model is also the main trap: you own the code after `npx shadcn add`, so when upstream fixes a bug or changes the schema API you get nothing automatically — your table and the registry quietly diverge. The AI filter inference feature (`data-table-filter-command-ai`) is tacked on rather than integrated; it calls an API route with no visible rate limiting or cost control, which will surprise you in production. There is no virtualization for large client-side datasets — infinite scroll handles server-side pagination but if you load several hundred rows into a client table the DOM bloats. Documentation exists but it's thin on the `StoreAdapter` interface contract, so implementing a custom adapter means reading the source.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →