
Tanstack Table
Build headless TanStack Table v8 grids with server-side pagination, filter, and sort wired to APIs—especially Cloudflare Workers and D1.
Overview
tanstack-table is an agent skill for the Build phase that builds TanStack Table v8 data grids with server-side pagination, filtering, and sorting for Cloudflare Workers and D1 backends.
Install
npx skills add https://github.com/jezweb/claude-skills --skill tanstack-tableWhat is this skill?
- TanStack Table v8 headless patterns with server-side pagination, filtering, and sorting
- Cloudflare Workers + D1 end-to-end integration examples
- TanStack Query coordination: query keys and state sync with table UI
- Documents prevention of 12 named integration and state-management errors
- Auto-triggers on datagrid, virtualized lists, D1 tables, and URL-synced table state
- Prevents 12 documented errors
Adoption & trust: 504 installs on skills.sh; 841 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a large dataset table in React but keep breaking server-side state, TanStack Query keys, or D1-backed API contracts.
Who is it for?
Solo builders shipping SaaS admin or analytics views on React with Workers/D1 or similar API-backed pagination.
Skip if: Simple static HTML tables, mobile-native lists, or teams not using TanStack Table v8.
When should I use this skill?
Building tables with large datasets, server-side pagination/filtering/sorting, Cloudflare Workers + D1, TanStack Query coordination, or fixing state, performance, or React 19+ compatibility.
What do I get? / Deliverables
You get a headless table implementation with server-driven data flows, Query coordination, and guards against 12 common documented errors.
- Headless table components with server-driven data hooks
- Workers/D1 query patterns aligned with table state
Recommended Skills
Journey fit
Build is where data-table UI and API coordination are implemented; the skill targets implementation-time errors, not launch distribution. Frontend subphase holds the React table state, virtualization, and React 19 compatibility fixes even when the backend is Workers + D1.
How it compares
Use instead of copying generic React Table v7 snippets that lack server-side and D1-specific patterns.
Common Questions / FAQ
Who is tanstack-table for?
Frontend-focused indie developers building React datagrids with TanStack Table v8 and API or Cloudflare D1 backends.
When should I use tanstack-table?
Use it in Build → frontend when triggers mention data tables, server-side pagination/filter/sort, TanStack Query coordination, D1 tables, or fixing table state and React 19 compatibility issues.
Is tanstack-table safe to install?
Check the Security Audits panel on this Prism page for jezweb/claude-skills; the skill may suggest Workers and network patterns—review before running against production D1 bindings.
SKILL.md
READMESKILL.md - Tanstack Table
{ "name": "tanstack-table", "description": "Build headless data tables with TanStack Table v8. Server-side pagination, filtering, sorting, and virtualization for Cloudflare Workers + D1. Prevents 12 documented errors. Use when building tables with large datasets, coordinating with TanStack Query, or fixing state management, performance, or React 19+ compatibility issues.", "version": "1.0.0", "author": { "name": "Jeremy Dawes", "email": "jeremy@jezweb.net" }, "license": "MIT", "repository": "https://github.com/jezweb/claude-skills", "keywords": [] } # TanStack Table Skill Build production-ready, headless data tables with TanStack Table v8, optimized for server-side patterns and Cloudflare Workers integration. ## Auto-Trigger Keywords This skill automatically activates when you mention: - "data table", "datagrid", "table component" - "server-side pagination", "server-side filtering", "server-side sorting" - "TanStack Table", "React Table", "React Table v8" - "table with large dataset", "large list performance" - "paginate API", "filter API", "sort API" - "Cloudflare D1 table", "D1 database table" - "virtualize table", "virtualized list" - "table state management", "table URL sync" ## What This Skill Provides ### 🎯 Core Features - **Server-side patterns** - Pagination, filtering, sorting with API backends - **Cloudflare D1 integration** - Complete Workers + D1 + Table examples - **TanStack Query coordination** - Proper query key patterns, state sync - **Virtualization** - TanStack Virtual for large datasets (10k+ rows) - **Column/Row Pinning** - Keep important columns/rows visible during scroll - **Row Expanding** - Nested data and detail rows - **Row Grouping** - Group by column values with aggregation - **Type safety** - TypeScript patterns, column helper usage - **Error prevention** - 6+ documented issues with solutions ### 📦 Templates (6 Production-Ready) 1. **Basic client-side table** - Simple table with local data 2. **Server-paginated table** - API-driven pagination with TanStack Query 3. **D1 database integration** - Cloudflare D1 + Workers API + Table 4. **Column configuration** - Type-safe column definitions 5. **Virtualized large dataset** - Performance optimization with TanStack Virtual 6. **shadcn/ui styled table** - Tailwind v4 + shadcn integration ### 📚 Reference Docs (5) 1. **Server-side patterns** - Complete guide to API-driven tables 2. **Query integration** - TanStack Query + Table coordination 3. **Cloudflare D1 examples** - Workers + D1 complete patterns 4. **Performance & virtualization** - TanStack Virtual guide 5. **Common errors** - 6+ issues with solutions ## Quick Example ### Server-Side Paginated Table ```typescript import { useReactTable, getCoreRowModel } from '@tanstack/react-table' import { useQuery } from '@tanstack/react-query' import { useState } from 'react' function UsersTable() { const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 20 }) // TanStack Query fetches data const { data } = useQuery({ queryKey: ['users', pagination.pageIndex, pagination.pageSize], queryFn: () => fetch(`/api/users?page=${pagination.pageIndex}&pageSize=${pagination.pageSize}`) .then(r => r.json()) }) // TanStack Table manages display const table = useReactTable({ data: data?.data ?? [], columns, getCoreRowModel: getCoreRowModel(), manualPagination: true, // Server handles pagination pageCount: data?.pagination.pageCount ?? 0, state: { pagination }, onPaginationChange: setPagination, }) return <div>{/* render table */}</div> } ``` ### Cloudflare D1 Backend ```typescript // Cloudflare Workers API export async function onRequestGet({ request, env }) { const url = new URL(request.url) const page = Number(url.searchParams.get('page')) || 0 const pageSize = 20 const offset = page * pageSize const { results } = await env.DB.prepare(` SELECT * FROM users ORDER BY created_at DESC LIM