• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Unleash / unleash / 26222193357
87%
master: 91%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 21 May 2026 11:15AM UTC
Jobs 1
Files 1179
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 May 2026 11:07AM UTC coverage: 87.084% (-0.04%) from 87.119%
26222193357

push

github

web-flow
chore: migrate react table v7 to v8 (#11967)

Migrate from react-table v7 to TanStack Table v8

## Summary

Replaces `react-table` v7 with `@tanstack/react-table` v8 across the
frontend. The migration was staged in ~25 small phases (phase 1
foundation → phase 5 v7 removal) so each table could be cut over and
verified independently before the v7 dependency was dropped.

Net behavior should be the same. Internal API and column-definition
shape changes; nothing intended user-facing.

## Why v8

- v7 is unmaintained; v8 is the canonical successor (TanStack Table).
- v8 is headless and dependency-free, ships proper TypeScript types, and
works with React 18/19's stricter rendering rules.
- Lets us delete a sizable amount of legacy plugin glue
(`useFlexLayout`, `useSortBy`, custom `react-table-config.d.ts`,
`sortTypes` helpers).

## What changed conceptually

A handful of v7 idioms had no direct v8 equivalent and required
deliberate replacements. These are the migration's main pitfalls — most
of the bugs we hit during testing trace back to one of them.

### 1. Column definitions: `Header`/`accessor`/`Cell` →
`header`/`accessorKey`/`cell`

Capitalization changes, plus `accessor` splits into `accessorKey`
(string) and `accessorFn` (function). Mechanical rename.

### 2. Layout fields move to `meta`

v7 accepted `width`/`minWidth`/`maxWidth`/`align`/`styles` directly on
the column. v8 has no built-in layout system, so these now live on
`column.meta`, declared via the module-augmentation in
`frontend/src/types/react-table-v8.d.ts`.

```ts
// v7
{ Header: 'Name', accessor: 'name', minWidth: 200, align: 'left' }

// v8
{ id: 'name', header: 'Name', accessorKey: 'name', meta: { minWidth: 200, align: 'left' } }
```

### 3. `useFlexLayout` is gone

v7's `useFlexLayout` plugin auto-injected `display: flex` onto
header/body rows and gave every column a default `width: 150` if none
was set. v8 has nothing equivalent. We replicate it manually in our
`VirtualizedTableV8` a... (continued)

1847 of 2045 branches covered (90.32%)

15096 of 17335 relevant lines covered (87.08%)

925.7 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
79.09
-5.45% src/lib/features/playground/feature-evaluator/constraint.ts
Jobs
ID Job ID Ran Files Coverage
1 26222193357.1 21 May 2026 11:15AM UTC 1179
87.08
GitHub Action Run
Source Files on build 26222193357
  • Tree
  • List 1179
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #26222193357
  • 3190cd8c on github
  • Prev Build on main (#26210664412)
  • Next Build on main (#26223123294)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc