Skip to content

chore: sync main with upstream TanStack/table - #6

Merged
dvmoritzschoefl merged 669 commits into
mainfrom
sync-upstream-main
Aug 20, 2026
Merged

chore: sync main with upstream TanStack/table#6
dvmoritzschoefl merged 669 commits into
mainfrom
sync-upstream-main

Conversation

@dvmoritzschoefl

Copy link
Copy Markdown

Summary

  • Our main branch has been stale since ~Jan 2025 and had diverged from TanStack/table's main: 33 fork-only commits (old docs/release/CI commits, later superseded by upstream's continued work on the same files) while missing 668 upstream commits.
  • This PR merges upstream/main into main so that after merging, our main's content is byte-identical to TanStack/table's main (verified via git diff — empty).
  • Direct force-push wasn't possible due to the org-wide branch protection ruleset, so this uses a merge commit (-s ours + tree reset to upstream's tree) that records both histories while taking upstream's content entirely.

Test plan

  • git diff <this-branch> upstream/main is empty (content matches exactly)
  • CI passes on this PR

github-actions Bot and others added 30 commits June 7, 2026 09:18
release: v9.0.0-beta.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.3

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…Stack#6298)

* chore: update examples to use table.store.get() instead of removed table.state

* feat: refactor solid/vue native reactivity adapter

* ci: apply automated fixes

* ci: apply automated fixes (attempt 2/3)

* fix: update all examples to call table.atoms instead of table.store

* ci: apply automated fixes

* fix(vue): call reactivity unmount on scope dispose

* correct merge conflict resolution and regen lock file

* fix sherif issue

* update table state docs

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
release: v9.0.0-beta.4

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* chore: correct tfeatures usage in examples

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…ns (TanStack#6305)

* chore: correct tfeatures usage in examples

* ci: apply automated fixes

* feat: new custom plugins support and massive typescript simplificatoins

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* release: v9.0.0-beta.5

* fix: table-core versions

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
release: v9.0.0-beta.6

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.7

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.8

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.9

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…k#6318)

* feat: refactor features option to include row models and fns

* ci: apply automated fixes

* fix column/global filtering feature relationship in types

* fix TData in custom filterFns

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
release: v9.0.0-beta.10

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.11

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
release: v9.0.0-beta.12

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix: AppTable remounting children on table state updates (TanStack#6323)

App wrappers (AppTable, AppCell, AppHeader, AppFooter) were memoized
on the unstable `table` reference, causing them to be recreated every
render. React then remounted their entire subtrees on every state
change, destroying controlled input focus.

Keep wrappers stable (created once) and read the current table from a
ref updated each render. Fixes children remounting while preserving
latest table state access.

* also apply fix to preact

* modify composable table examples to make this easier to test

* update other composable table examples

---------

Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
release: v9.0.0-beta.13

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…tack#6328)

* fix: enhance table option merging to preserve static properties

Updated the table_mergeOptions function to ensure that static options (features, atoms, initialState) are preserved without mutation when merging new options. Added a test to verify that static options remain unchanged after invoking setOptions.

* add short circuit
release: v9.0.0-beta.14

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
KevinVandy and others added 28 commits August 6, 2026 20:47
* docs: Add shadcn examples for svelte and vue

Ports the react lib-shadcn and kitchen-sink-shadcn examples to svelte
(shadcn-svelte / bits-ui) and vue (shadcn-vue / reka-ui), one variant
per framework:

- lib-shadcn: single-file basic demos with the same features object,
  fully internal state, debounced global search, and the numbered
  walkthrough comments from the react originals
- kitchen-sink-shadcn: same architecture as react - identical
  hooks/features.ts, createTableHook with injected table/cell/header
  components, the operator-based filter engine, faceted filters,
  grouping/aggregation, pinning, resizing, and drag reordering wired
  directly with @dnd-kit-svelte / dnd-kit-vue
- date filters cross the calendar boundary as ISO strings since both
  ports use @internationalized/date rather than JS Date
- registers all four under Component Library Examples in docs/config.json

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci: apply automated fixes

* fix grouped column undefined renders

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
…anStack#6521)

* fix(react-table): accept built-in fn names in legacy column helper

* test(react-table): cover declaration-merged fn names in legacy helper

---------

Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
…omponent in TanStack Devtools (TanStack#6516)

* fix: set TableDevtoolsPanel devtoolsOpen default behavior to true

* add changeset

* Make resolvePanelProps private
aggregationFn_median bailed out and returned undefined for an entire
group as soon as it hit a single non-numeric (e.g. null) value, unlike
sum/min/max/mean which all skip non-numeric values and aggregate over
whatever numeric values remain. Bring median in line with the rest of
the built-in aggregation functions: filter out non-numeric values and
compute the median from what's left, only returning undefined when no
numeric values remain.

Fixes TanStack#5008

Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat: support infinite pagination page sizes

* add devtools to all with-tanstack examples

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…anStack#6529)

* fix(table-core): flatten sorted parent rows ahead of their sub-rows

The sorted row model recursed into a row's sub-rows before pushing the
row itself, so getSortedRowModel().flatRows came out in post-order:
every descendant preceded its own parent. The core row model, the
paginated row model and the depth-truncation helper in the filtered row
model all flatten a parent first, and getSortedRowModel().rows is
already in that order, so flatRows disagreed with its own rows.

Reserve the row's slot before descending, and overwrite it when the
branch is cloned so flatRows keeps the same row instance that rows
holds.

* fix another case

---------

Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ateSlice (TanStack#6532)

* refactor(table-core): centralize no-op state update guarding in setStateSlice

Route every table.setX state router through a single setStateSlice util
that resolves the updater once against the slice's current value,
structurally compares the result, and skips the onXChange handler
entirely when nothing changed. This removes the class of render loops
where auto resets fired change handlers with freshly allocated but
semantically identical values (e.g. autoResetExpanded after a data
reference change), and deletes the scattered ad-hoc guards that
previously protected individual slices.

For uncontrolled slices the default handler receives the pre-resolved
value, so updaters run exactly once. User handlers and externally owned
slices receive the original updater untouched to preserve functional
update composition and independent base-atom fallback semantics.

Supersedes TanStack#6519.

Co-Authored-By: Dmitrii Kartashev <dikartashev@gmail.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix test and regen docs

* add date filters to filter examples

* omit row selection from new check

* auto fix lint issues

* ci: apply automated fixes

* format

* lint fix

* uncomment

* address stale updater bug, simplify

* still skip autoResetPageIndex in controlled state scenarios

* regen docs again

* refactor(table-core): make stateSlicesEqual the setStateSlice default, call unguarded handlers directly

setStateSlice now always guards, with isEqual as an override hook for
custom feature slices. Slices that deliberately skip guarding
(rowSelection, columnSizing, columnResizing, globalFilter, and the
expanded/cellSelection setters) call their change handler directly
instead of routing through a no-op wrapper, keeping pointer-frequency
paths free of the routing overhead. rowPinning picks up the guard via
the new default, matching columnPinning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Dmitrii Kartashev <dikartashev@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…t mount window (TanStack#6534)

* fix(angular): fix stale options during the effect first run

* fix(angular): revisit adapter to support lazy initialization

* Apply suggestion from @riccardoperra

* Apply suggestion from @riccardoperra

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix callout formatting

* docs: convert remaining blockquote callouts to GitHub alert syntax

Converts all 341 remaining old-style callouts (> **Note:**, > NOTE:,
> **NOTE**:, > Tip:, > **Warning:**, etc.) across the docs to the
GitHub markdown alert syntax ([!NOTE], [!TIP], [!WARNING], [!IMPORTANT])
that tanstack.com renders as styled callouts.

Also fixes one pre-existing alert in client-side-vs-server-side.md that
had its content on the same line as the marker, and trailing whitespace
on the alert marker in the svelte quick-start.

Qualified callouts with custom titles (TypeScript Note, Framework note,
Naming note) are intentionally left as plain blockquotes since the alert
syntax does not support custom titles.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Kevin Van Cott <kevinvandy656@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…anStack#6553)

Keep Vue and Angular table plugins working with current @tanstack/devtools plugin props and font injection, and bump workspace dependencies excluding Babel and TypeScript.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…cations (TanStack#6562)

* perf: revisit angular adapter to improve memory usage and flexrender dirty checking

* refactor: optimize input/output handling in flex render components

- Replace `for...in` loops with `Object.keys()` for better performance and clarity.
- Simplify the rendering logic by removing unnecessary checks and parameters.
- Ensure consistent handling of injectors across component rendering.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Merges upstream/main into main so that our main branch's content matches
TanStack/table's main 1:1. Our main had been stale since ~Jan 2025 and had
diverged with 33 fork-only commits (old docs/release commits later
superseded by upstream's continued work) while missing 668 upstream
commits.
@dvmoritzschoefl
dvmoritzschoefl merged commit a5226c8 into main Aug 20, 2026
1 check passed
@dvmoritzschoefl
dvmoritzschoefl deleted the sync-upstream-main branch August 20, 2026 12:20
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.