Skip to content

fix: more typescript performance improvements#6320

Merged
KevinVandy merged 1 commit into
betafrom
optimize-types-even-more
Jun 12, 2026
Merged

fix: more typescript performance improvements#6320
KevinVandy merged 1 commit into
betafrom
optimize-types-even-more

Conversation

@KevinVandy

@KevinVandy KevinVandy commented Jun 12, 2026

Copy link
Copy Markdown
Member

TanStack Table — TypeScript Type-Performance Report

Tracks TypeScript type-checking cost across the alpha branch, the beta branch as released (beta.10), and the optimized working tree (beta.11 candidate). Primary metric is Instantiations from tsc --extendedDiagnostics (deterministic — confirmed identical across repeated runs). Wall times and memory are supporting evidence only.

Setup

Alpha Beta
Folder table-alpha/ table/
Branch / commit alpha @ 4f855fe4e beta @ 925358059 (+ uncommitted beta.11 work)
@tanstack/table-core version 9.0.0-alpha.54 9.0.0-beta.10
TypeScript 6.0.3 6.0.3
  • Dates: baseline 2026-06-12, beta.11 experiments same day. macOS (Darwin 25.4.0), one tsc at a time.
  • Rebuilt before measuring: pnpm build (tsdown) for table-core and react-table in the measured repo before every consumer benchmark (react-table, kitchen-sink) so declarations are current.
  • Every number below was measured at least twice; Instantiations was identical on every repeat.

Benchmark commands

Benchmark Directory Command
table-core source packages/table-core pnpm exec tsc --noEmit --extendedDiagnostics
table-core declaration emit packages/table-core pnpm exec tsc -p tests/tsconfig.declaration-emit.json --extendedDiagnostics
react-table packages/react-table pnpm exec tsc --noEmit --extendedDiagnostics
kitchen-sink example examples/react/kitchen-sink pnpm exec tsc --noEmit --extendedDiagnostics

These mirror the repo's own test:types script (tsc && tsc -p tests/tsconfig.declaration-emit.json).

Results — Instantiations (primary metric)

Benchmark Alpha beta.10 beta.11 Alpha → beta.11
@tanstack/table-core tsc --noEmit 1,230,007 494,577 288,061 −941,946 (−76.6%)
@tanstack/table-core declaration emit 1,146,896 385,702 189,844 −957,052 (−83.4%)
@tanstack/react-table tsc --noEmit 235,498 73,690 54,732 −180,766 (−76.8%)
examples/react/kitchen-sink tsc --noEmit 221,006 85,839 74,797 −146,209 (−66.2%)

Per-step deltas: alpha → beta.10 was −59.8% / −66.4% / −68.7% / −61.2%; beta.10 → beta.11 adds another −41.8% / −50.8% / −25.7% / −12.9% (same benchmark order as the table).

All framework adapters — Instantiations

pnpm exec tsc --noEmit --extendedDiagnostics per adapter package (src + tests), all packages rebuilt first in each repo. beta.11 includes the explicit-type-args fix applied to angular-table and preact-table (same constructTable spread-inference hot spot as react's useTable; lit/solid/svelte/vue already passed alias-typed variables and needed no change).

Adapter package Alpha beta.11 Alpha → beta.11
@tanstack/angular-table 276,299 49,948 −81.9%
@tanstack/lit-table 192,656 44,165 −77.1%
@tanstack/preact-table 221,090 41,558 −81.2%
@tanstack/react-table 235,498 54,732 −76.8%
@tanstack/solid-table 198,164 28,654 −85.5%
@tanstack/svelte-table 168,534 29,298 −82.6%
@tanstack/vue-table 244,756 92,816 −62.1%

Within beta, the constructTable explicit-type-args fix alone took angular-table 59,190 → 49,948 (−15.6%) and preact-table 49,125 → 41,558 (−15.4%).

All kitchen-sink examples — Instantiations

Example Alpha beta.11 Alpha → beta.11
angular/kitchen-sink 148,203 31,294 −78.9%
lit/kitchen-sink 161,054 33,289 −79.3%
preact/kitchen-sink 216,291 70,104 −67.6%
react/kitchen-sink 221,006 74,797 −66.2%
solid/kitchen-sink 209,901 64,767 −69.1%
vue/kitchen-sink (vue-tsc) 256,813 114,634 −55.4%
react/kitchen-sink-hero-ui 373,851 219,955 −41.2%
react/kitchen-sink-mantine 305,513 150,697 −50.7%
react/kitchen-sink-material-ui 400,392 245,645 −38.6%
react/kitchen-sink-react-aria 251,945 98,030 −61.1%
react/kitchen-sink-shadcn-base 402,716 257,754 −36.0%
react/kitchen-sink-shadcn-radix 331,090 186,199 −43.8%

Measurement caveats:

  • svelte/kitchen-sink is excluded: plain tsc does not check .svelte markup (it reports only ~2.2k instantiations from the loose .ts files in both repos); svelte-check does not expose --extendedDiagnostics. The svelte adapter package row above covers the svelte surface.
  • vue/kitchen-sink is measured with vue-tsc (plain tsc skips .vue SFCs and returns an identical, meaningless number in both repos). The UI-kit react variants carry large third-party type surfaces (MUI, Mantine, etc.), which dilutes the percentage but the absolute deltas (−145k to −154k) match the plain kitchen-sink.
  • solid/kitchen-sink has 3 pre-existing app-level JSX errors, byte-identical in alpha and beta — unrelated to table types.

Check times (secondary, two runs each): table-core 1.74s/1.83s → 1.07s/1.04s; declaration emit 1.58s/1.56s → 0.80s/0.87s; react-table 0.29s/0.26s → 0.21s/0.22s; kitchen-sink 0.53s/0.50s → 0.46s/0.50s.

The react-table regression and the variance fix

Intermediate state (before variance annotations): the Table_Internal interface conversion alone regressed react-table's package-internal check to 136,031 (+84.6%). Root cause: with type parameters flowing into conditional types, the compiler's measured variance for the interface was unreliable, so relating Table_Internal<A> to Table_Internal<B> across react's many fresh generic contexts fell back to member-by-member structural comparison, expanding the heavy members per pair. Adding explicit in out (invariant) variance annotations — the pattern used throughout form and router — tells the checker to relate instantiations by their type arguments directly: Table_Internal alone took react-table from 136,031 to 65,891, and annotating the rest of the generic interfaces took it to 54,732 — 26% below the beta.10 baseline, and turned kitchen-sink from neutral to −12.9%. Variance annotations don't cache anything; they short-circuit relation checks by eliminating both variance measurement and the unreliable-variance structural fallback.

beta.11 kept changes

  1. Table_Internal → broad interface (types/Table.ts). Was Table<TF,TD> & {…} — an intersection wrapping the deferred ExtractFeatureMapTypes conditional, re-expanded structurally at every internal call site. Now an interface extending Omit<Table_Table, broadened-keys> plus all four core API interfaces and all 14 stock feature Table_* interfaces, with the internal slots (_rowModels, _rowModelFns, options, initialState, store, atoms, baseAtoms) redeclared in their broad *_All forms (TData-bearing conditionals dropped; TFeatures-only conditionals kept — feature-set count is small, data-type count is large). Public Table<TF,TD> is untouched, so user-facing inference is unchanged.
  2. TableOptions_All's feature-map intersection de-U2I'd (types/TableOptions.ts). Was UnionToIntersection<Map[keyof Map]> (via a TableOptions_FeatureMap_All helper) — re-distributed 13 members per (features, data) pair. Now a direct intersection of the 13 named stock option interfaces (inlined into TableOptions_All; the helper type was removed as perf-neutral, see experiment 6) plus TableOptions_PluginFeatureMapTypes, which falls back to UnionToIntersection only for plugin keys declaration-merged beyond the stock set ([Exclude<keyof Map, StockKeys>] extends [never] guard). Plugin flow-through verified against the custom-plugin example (merges TableOptions_FeatureMap and reads table.options.onDensityChange).
  3. makeStateUpdater takes a minimal structural param (utils.ts) — { options: { atoms?: object }, baseAtoms: object } instead of Table<TFeatures, any>. It only reads those two slots; any table view (public, internal, plugin) now passes without relating full table types. Accepts strictly more than before — non-breaking.
  4. in out variance annotations on generic interfaces (166 sites across table-core/src, applied to TFeatures/TData parameters of exported interfaces). Both parameters are structurally invariant already (used in parameter and return positions throughout), so the annotations change no assignability semantics — TypeScript verifies annotations against structure and reported no contradictions. The win: the checker relates two instantiations of the same interface by comparing type arguments directly instead of measuring variance (which came back unreliable due to conditional-type usage) and falling back to structural member expansion. Same pattern as TanStack form (FieldApi, FormApi) and router (Router, Route). This is what makes the Table_Internal interface conversion a win on all benchmarks instead of a core-vs-react trade-off.
  5. Supporting internal changes: createCoreRowModel factory takes Table_Internal (removing an as unknown as cast); constructTable returns via one explicit cast; two mergeOptions call sites cast table.options down to TableOptions; one unit test casts its constructed table to Table_Internal.
  6. Explicit type args on adapter constructTable calls — react useTable, angular injectTable, preact useTable all built constructTable({ ...options, features: { <reactivity>, ...options.features } }), forcing generic inference + structural relation of the anonymous spread type against TableOptions (react: ~740ms of traced check time). constructTable<TFeatures, TData>(...) skips inference. Saved ~12k (react), ~9.2k (angular), ~7.6k (preact). lit/solid/svelte/vue already passed alias-typed variables.

Rejected / neutral experiments (with numbers)

# Hypothesis Result vs beta.10 core (494,577) Verdict
1 Split ColumnDef_FeatureMap into static/dynamic halves + plugin-residual extractor, so the TData-independent half caches per feature set 522,934 (+28,357); without residual: 522,850 Rejected — extra alias layers cost more than the smaller distribution saves
2 Type filter/sort/aggregation fn implementations' row params as Row_Core instead of Row (skip deferred-conditional apparent type) 495,829 (+1,252) Rejected — slightly negative, and changes public .d.ts surface
3 Split ColumnHelper.accessor conditional signature into two overloads (key-first) core 491,830 (−2,747); react 74,014 (+324); kitchen-sink 84,569 (−1,270) Rejected — mixed/marginal; not worth changing explicit-type-arg arity on a public API
4a Table_Internal as interface, members kept as Inherited & All intersections core 355,207 (−28.2%), emit 256,270 (−33.6%), react 161,566 (+119%), KS −0.1% Superseded by 4c
4b Same broad shape but as intersection alias (decompose interface-ness) core 448,480 (−9.3%, +1 variance error) Rejected — interface nominal relation is most of the win
4c Interface + Omit-extends + broad slot members + de-U2I'd options core 299,155 (−39.5%), emit 200,928 (−47.9%), react 136,031 (+84.6%), KS −0.1% Kept, react regression fixed by 5
5a in out on Table_Internal only core 298,360; react 65,891 (regression erased, −10.6% vs beta.10); KS unchanged Superseded by 5b
5b in out on all generic interfaces, 166 sites (kept) core 288,069 (−41.8%), emit 189,852 (−50.8%), react 54,732 (−25.7%), KS 74,797 (−12.9%) Kept
5c in out on the public Table alias TS2637 — alias variance annotations require object/function/mapped RHS; ours is an intersection with a conditional Not applicable
6 Inline TableOptions_FeatureMap_All into TableOptions_All (its only internal user) core 288,061 (−8), emit 189,844 (−8) — exactly one alias instantiation per distinct (TFeatures, TData) pair Neutral on perf — kept inlined as an API-simplification (removes one public type); the named-alias indirection bought nothing
7 in out on TValue extends CellData params (16 interfaces) core 286,003 (−2.1k) but breaks TValue → unknown covariant widening — Header<TF,TD,TValue> no longer assignable to Header<TF,TD,unknown> (buildHeaderGroups.ts:116) RejectedTValue is genuinely covariant in output-position types; invariance rejects valid library and user code for a marginal win

Validation

All re-run after the variance-annotation round:

  • packages/table-core: pnpm test:types (tsc + declaration emit) ✓, vitest run 322/322 ✓, eslint ✓, publint ✓, build ✓ — run uncached via nx --skip-nx-cache.
  • packages/react-table: tsc ✓, eslint ✓, build ✓ (no unit tests in package).
  • All other adapters (angular, vue, solid, svelte, lit, preact): test:types ✓ uncached.
  • examples/react/kitchen-sink ✓ and examples/react/custom-plugin ✓ (plugin declaration-merging exercises the rewritten options path).
  • After the angular/preact adapter fixes: uncached eslint/lib/types/build for both packages ✓; all 13 kitchen-sink examples type-check with zero new errors (solid's 3 errors are pre-existing in alpha too).
  • Residual risks:
    • Table_Internal no longer carries plugin-merged table API members (plugin options/state still flow). Core code doesn't use plugin APIs and the plugin example only reads merged options, so nothing observable broke; a plugin reading its own merged table APIs through Table_Internal (rather than the public Table) would now need a cast.
    • in out declares invariance. TypeScript verified the annotations against the measured structure with no contradictions, so today they change nothing semantically — but if a future interface edit makes a parameter genuinely covariant, the annotation would keep it invariant silently. Convention: annotate new generic interfaces and trust the compiler's TS2636 error to catch mistakes.

Comparison to the beta.3 checkpoint

Benchmark Alpha baseline beta.3 beta.10 beta.11
table-core tsc --noEmit 1,233,254¹ 841,237 494,577 288,061
table-core declaration emit 1,150,070¹ 771,858 385,702 189,844
react-table tsc --noEmit 235,498 168,199 73,690 54,732
kitchen-sink tsc --noEmit 221,006 169,162 85,839 74,797

¹ The beta.3 report's alpha baselines differ from today's alpha measurement by ~0.3% (minor alpha commits since that snapshot). react-table and kitchen-sink baselines match exactly.

Profiling notes (for future rounds)

  • tsc --generateTrace + types.json aggregation by firstDeclaration is the fastest way to localize: top creator in every program is UnionToIntersection's distributed function types (type-utils.ts:15), driven by ExtractFeatureMapTypes.
  • table-core src alone is ~77% of the core benchmark (383k of 494k at beta.10) — the library's own generic-to-generic relations dominate, not the tests.
  • Isolated single-file compiles overstate marginal cost (shared types get re-paid); only whole-program numbers are comparable.
  • react-table's generic hook layer (createTableHook.tsx, useTable) is highly sensitive to relation-check cost on core types: it doubled the package's check when Table_Internal related structurally, and dropped 60% once variance annotations restored argument-level relation. Watch this benchmark whenever core's central generic types change shape.
  • Variance annotations (in out) are only legal on interfaces/classes and on type aliases whose RHS is an object/function/mapped type — not on intersection-with-conditional aliases like Table (TS2637).

Summary by CodeRabbit

  • Refactor
    • Enhanced internal TypeScript type system with improved generic variance annotations across table interfaces for more accurate type inference and better developer experience when working with custom table features and data types.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8581268a-d50e-48e7-9518-8db3c7d6ad9e

📥 Commits

Reviewing files that changed from the base of the PR and between 9253580 and e4f2a3a.

📒 Files selected for processing (36)
  • packages/angular-table/src/injectTable.ts
  • packages/preact-table/src/useTable.ts
  • packages/react-table/src/useTable.ts
  • packages/table-core/src/core/cells/coreCellsFeature.types.ts
  • packages/table-core/src/core/columns/coreColumnsFeature.types.ts
  • packages/table-core/src/core/headers/coreHeadersFeature.types.ts
  • packages/table-core/src/core/row-models/coreRowModelsFeature.types.ts
  • packages/table-core/src/core/row-models/createCoreRowModel.ts
  • packages/table-core/src/core/rows/coreRowsFeature.types.ts
  • packages/table-core/src/core/table/constructTable.ts
  • packages/table-core/src/core/table/coreTablesFeature.types.ts
  • packages/table-core/src/core/table/coreTablesFeature.utils.ts
  • packages/table-core/src/features/column-faceting/columnFacetingFeature.types.ts
  • packages/table-core/src/features/column-filtering/columnFilteringFeature.types.ts
  • packages/table-core/src/features/column-grouping/columnGroupingFeature.types.ts
  • packages/table-core/src/features/column-ordering/columnOrderingFeature.types.ts
  • packages/table-core/src/features/column-pinning/columnPinningFeature.types.ts
  • packages/table-core/src/features/column-visibility/columnVisibilityFeature.types.ts
  • packages/table-core/src/features/global-filtering/globalFilteringFeature.types.ts
  • packages/table-core/src/features/row-expanding/rowExpandingFeature.types.ts
  • packages/table-core/src/features/row-pagination/rowPaginationFeature.types.ts
  • packages/table-core/src/features/row-pinning/rowPinningFeature.types.ts
  • packages/table-core/src/features/row-selection/rowSelectionFeature.types.ts
  • packages/table-core/src/features/row-sorting/rowSortingFeature.types.ts
  • packages/table-core/src/types/Cell.ts
  • packages/table-core/src/types/Column.ts
  • packages/table-core/src/types/ColumnDef.ts
  • packages/table-core/src/types/Header.ts
  • packages/table-core/src/types/HeaderGroup.ts
  • packages/table-core/src/types/Row.ts
  • packages/table-core/src/types/RowModel.ts
  • packages/table-core/src/types/RowModelFns.ts
  • packages/table-core/src/types/Table.ts
  • packages/table-core/src/types/TableOptions.ts
  • packages/table-core/src/utils.ts
  • packages/table-core/tests/unit/core/columns/constructColumn.test.ts

📝 Walkthrough

Walkthrough

This PR adds TypeScript in out variance annotations to generic type parameters across the table-core library and framework adapters, refactors Table_Internal from a type intersection to an interface with selective slot re-declaration, restructures TableOptions plugin feature handling, and updates framework packages to explicitly specify generic type arguments when constructing tables.

Changes

TypeScript Variance Annotations and Table Type System Restructuring

Layer / File(s) Summary
Framework explicit constructTable generics
packages/angular-table/src/injectTable.ts, packages/preact-table/src/useTable.ts, packages/react-table/src/useTable.ts
Angular, Preact, and React packages now pass explicit <TFeatures, TData> generic type parameters to constructTable calls with inline comments explaining that these prevent generic inference from the spread object used in options composition.
Core feature variance annotations
packages/table-core/src/core/cells/coreCellsFeature.types.ts, packages/table-core/src/core/columns/coreColumnsFeature.types.ts, packages/table-core/src/core/headers/coreHeadersFeature.types.ts, packages/table-core/src/core/rows/coreRowsFeature.types.ts, packages/table-core/src/core/row-models/coreRowModelsFeature.types.ts, packages/table-core/src/core/table/coreTablesFeature.types.ts
Adds in out variance modifiers to TFeatures extends TableFeatures and TData extends RowData generic parameters across core table feature type interfaces (CellContext, Column_CoreProperties, Header_Header, Row_Row, RowModel, etc.).
Feature-specific variance annotations
packages/table-core/src/features/column-*/*.types.ts, packages/table-core/src/features/global-filtering/*.types.ts, packages/table-core/src/features/row-*/*.types.ts
Adds in out variance modifiers systematically to all optional feature type interfaces across filtering, faceting, grouping, pinning, selection, sorting, expanding, and pagination features.
Root type definitions variance annotations
packages/table-core/src/types/Cell.ts, packages/table-core/src/types/Column.ts, packages/table-core/src/types/ColumnDef.ts, packages/table-core/src/types/Header.ts, packages/table-core/src/types/HeaderGroup.ts, packages/table-core/src/types/Row.ts, packages/table-core/src/types/RowModel.ts, packages/table-core/src/types/RowModelFns.ts
Adds in out variance annotations to generic parameters in foundational type definitions across the system.
Table_Internal interface restructuring
packages/table-core/src/types/Table.ts
Refactors Table_Internal from a type intersection (Table<...> & { ... }) to an exported interface that omits internal-redeclared keys from Table_Table, explicitly extends all feature API interfaces, and re-declares internal slots (_rowModels, _rowModelFns, options, initialState, baseAtoms, atoms, store) using broadened *_All types combined with per-TFeatures types. Also updates imports to include TableState_All and per-feature type variants.
TableOptions plugin feature restructuring
packages/table-core/src/types/TableOptions.ts
Replaces the exported TableOptions_FeatureMap_All type with a new internal TableOptions_PluginFeatureMapTypes helper that conditionally intersects only non-stock feature option types, producing unknown when no plugin keys exist. Updates TableOptions_All to explicitly intersect stock feature option types and add the plugin types. Adds in out variance to TableOptions_Core and TableOptions_FeatureMap.
Option handling utilities and type casting
packages/table-core/src/core/table/coreTablesFeature.utils.ts, packages/table-core/src/core/row-models/createCoreRowModel.ts, packages/table-core/src/utils.ts, packages/table-core/src/core/table/constructTable.ts
coreTablesFeature.utils adds explicit TableOptions<TFeatures, TData> casts in merge and set operations; createCoreRowModel signature changes to accept Table_Internal directly instead of Table; makeStateUpdater changes to use structural typing for the instance parameter; constructTable adds an explicit cast on the return value.
Test updates for type compatibility
packages/table-core/tests/unit/core/columns/constructColumn.test.ts
Imports and uses Table_Internal type to cast the table instance for compatibility with constructColumn.

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly Related PRs

  • TanStack/table#6268: Modifies constructTable.ts with changes to internal iteration logic, overlapping file scope with this PR's return type casting update.

🐰 With in out variance now declared,
Types flow both ways, constraints liberated!
Tables refactored, options made bright,
TypeScript generics now shining so right!
Let the framework adapters align—
A type-safe table engine, by design! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: more typescript performance improvements' accurately describes the main focus of this PR, which involves TypeScript type-level optimizations and performance improvements across the tanstack/table packages.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch optimize-types-even-more

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud

nx-cloud Bot commented Jun 12, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit e4f2a3a

Command Status Duration Result
nx affected --targets=test:eslint,test:sherif,t... ✅ Succeeded 5m 16s View ↗
nx run-many --targets=build --exclude=examples/** ✅ Succeeded 28s View ↗

☁️ Nx Cloud last updated this comment at 2026-06-12 20:09:36 UTC

@pkg-pr-new

pkg-pr-new Bot commented Jun 12, 2026

Copy link
Copy Markdown
More templates

@tanstack/angular-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/angular-table@6320

@tanstack/angular-table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/angular-table-devtools@6320

@tanstack/lit-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/lit-table@6320

@tanstack/match-sorter-utils

npm i https://pkg.pr.new/TanStack/table/@tanstack/match-sorter-utils@6320

@tanstack/preact-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/preact-table@6320

@tanstack/preact-table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/preact-table-devtools@6320

@tanstack/react-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/react-table@6320

@tanstack/react-table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/react-table-devtools@6320

@tanstack/solid-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/solid-table@6320

@tanstack/solid-table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/solid-table-devtools@6320

@tanstack/svelte-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/svelte-table@6320

@tanstack/table-core

npm i https://pkg.pr.new/TanStack/table/@tanstack/table-core@6320

@tanstack/table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/table-devtools@6320

@tanstack/vue-table

npm i https://pkg.pr.new/TanStack/table/@tanstack/vue-table@6320

@tanstack/vue-table-devtools

npm i https://pkg.pr.new/TanStack/table/@tanstack/vue-table-devtools@6320

commit: e4f2a3a

@KevinVandy KevinVandy merged commit a3fa2ed into beta Jun 12, 2026
8 checks passed
@KevinVandy KevinVandy deleted the optimize-types-even-more branch June 12, 2026 20:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant