diff --git a/.changeset/v9-stable-release.md b/.changeset/v9-stable-release.md
new file mode 100644
index 0000000000..2e07981b35
--- /dev/null
+++ b/.changeset/v9-stable-release.md
@@ -0,0 +1,22 @@
+---
+'@tanstack/table-core': major
+'@tanstack/table-devtools': major
+'@tanstack/alpine-table': major
+'@tanstack/angular-table': major
+'@tanstack/angular-table-devtools': major
+'@tanstack/ember-table': major
+'@tanstack/lit-table': major
+'@tanstack/octane-table': major
+'@tanstack/preact-table': major
+'@tanstack/preact-table-devtools': major
+'@tanstack/react-table': major
+'@tanstack/react-table-devtools': major
+'@tanstack/solid-table': major
+'@tanstack/solid-table-devtools': major
+'@tanstack/svelte-table': major
+'@tanstack/vue-table': major
+'@tanstack/vue-table-devtools': major
+'@tanstack/match-sorter-utils': major
+---
+
+TanStack Table v9 stable release. See the "Migrating to V9" guide for your framework (e.g. [React](https://tanstack.com/table/latest/docs/framework/react/guide/migrating)) for upgrade instructions.
diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml
index ba8e8cfa12..1d4088db88 100644
--- a/.github/workflows/zizmor.yml
+++ b/.github/workflows/zizmor.yml
@@ -2,7 +2,7 @@ name: GitHub Actions Security Analysis
on:
push:
- branches: [alpha]
+ branches: [main]
pull_request:
branches: ['**']
diff --git a/README.md b/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/README.md
+++ b/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/docs/devtools.md b/docs/devtools.md
index a2728129a5..9164311d88 100644
--- a/docs/devtools.md
+++ b/docs/devtools.md
@@ -14,21 +14,18 @@ The table devtools let you inspect registered table instances, switch between mu
Install the TanStack Devtools host package and the Table adapter for your framework.
-> [!IMPORTANT]
-> While TanStack Table v9 is in beta, the table devtools adapters must be installed with the `@beta` tag. Installing without the tag resolves to the old v8 devtools, which have a completely different API.
-
# React
```sh
-npm install @tanstack/react-devtools @tanstack/react-table-devtools@beta
+npm install @tanstack/react-devtools @tanstack/react-table-devtools
```
# Preact
```sh
-npm install @tanstack/preact-devtools @tanstack/preact-table-devtools@beta
+npm install @tanstack/preact-devtools @tanstack/preact-table-devtools
```
# Octane
@@ -38,19 +35,19 @@ There is not currently a dedicated Octane Table Devtools adapter.
# Vue
```sh
-npm install @tanstack/vue-devtools @tanstack/vue-table-devtools@beta
+npm install @tanstack/vue-devtools @tanstack/vue-table-devtools
```
# Solid
```sh
-npm install @tanstack/solid-devtools @tanstack/solid-table-devtools@beta
+npm install @tanstack/solid-devtools @tanstack/solid-table-devtools
```
# Angular
```sh
-npm install @tanstack/angular-devtools @tanstack/angular-table-devtools@beta
+npm install @tanstack/angular-devtools @tanstack/angular-table-devtools
```
diff --git a/docs/framework/alpine/guide/custom-features.md b/docs/framework/alpine/guide/custom-features.md
index 5fc3617c02..8c38b58900 100644
--- a/docs/framework/alpine/guide/custom-features.md
+++ b/docs/framework/alpine/guide/custom-features.md
@@ -120,19 +120,19 @@ This might be a bit confusing, so let's break down what each of these methods do
#### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
#### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
#### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
### API Creators
@@ -150,13 +150,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
#### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
#### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -168,13 +168,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
#### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
#### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/alpine/quick-start.md b/docs/framework/alpine/quick-start.md
index ff33264358..8b79b4d8ab 100644
--- a/docs/framework/alpine/quick-start.md
+++ b/docs/framework/alpine/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/alpine-table@beta alpinejs
+npm install @tanstack/alpine-table alpinejs
```
The `@tanstack/alpine-table` package works with Alpine 3.
diff --git a/docs/framework/angular/guide/custom-features.md b/docs/framework/angular/guide/custom-features.md
index d88a63c9be..e9b0b77432 100644
--- a/docs/framework/angular/guide/custom-features.md
+++ b/docs/framework/angular/guide/custom-features.md
@@ -126,19 +126,19 @@ This might be a bit confusing, so let's break down what each of these methods do
##### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
##### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
##### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
#### API Creators
@@ -156,13 +156,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
##### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
##### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -174,13 +174,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
##### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
##### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/angular/guide/migrating.md b/docs/framework/angular/guide/migrating.md
index c394790f1b..0bc883ec57 100644
--- a/docs/framework/angular/guide/migrating.md
+++ b/docs/framework/angular/guide/migrating.md
@@ -2,21 +2,6 @@
title: Migrating to TanStack Table V9 (Angular)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See the row models section below for the new shape.
-
----
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -488,9 +473,9 @@ Update your column definitions.
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/angular/quick-start.md b/docs/framework/angular/quick-start.md
index 010f70e2d2..b28e4e207c 100644
--- a/docs/framework/angular/quick-start.md
+++ b/docs/framework/angular/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/angular-table@beta
+npm install @tanstack/angular-table
```
## Your First Table
diff --git a/docs/framework/ember/guide/custom-features.md b/docs/framework/ember/guide/custom-features.md
index 8096e31ed0..64b17a1272 100644
--- a/docs/framework/ember/guide/custom-features.md
+++ b/docs/framework/ember/guide/custom-features.md
@@ -126,19 +126,19 @@ This might be a bit confusing, so let's break down what each of these methods do
##### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
##### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
##### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
#### API Creators
@@ -156,13 +156,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
##### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
##### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -174,13 +174,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
##### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
##### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/ember/quick-start.md b/docs/framework/ember/quick-start.md
index fc64d0bb7a..fb1d558786 100644
--- a/docs/framework/ember/quick-start.md
+++ b/docs/framework/ember/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/ember-table@beta
+npm install @tanstack/ember-table
```
`@tanstack/ember-table` is a v2 addon that requires Ember 5.8+ with Embroider (or ember-auto-import v2). It works with `.gts`/`.gjs` template tag components and Glint.
diff --git a/docs/framework/lit/guide/custom-features.md b/docs/framework/lit/guide/custom-features.md
index 5244d51761..67ebdcc759 100644
--- a/docs/framework/lit/guide/custom-features.md
+++ b/docs/framework/lit/guide/custom-features.md
@@ -118,19 +118,19 @@ This might be a bit confusing, so let's break down what each of these methods do
#### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
#### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
#### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
### API Creators
@@ -148,13 +148,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
#### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
#### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -166,13 +166,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
#### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
#### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/lit/guide/migrating.md b/docs/framework/lit/guide/migrating.md
index e15cb3225f..9a6e2dffe9 100644
--- a/docs/framework/lit/guide/migrating.md
+++ b/docs/framework/lit/guide/migrating.md
@@ -2,21 +2,10 @@
title: Migrating to TanStack Table V9 (Lit)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See the row models section below for the new shape.
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
-> The Lit adapter may change during the v9 beta cycle. This guide documents the current local v9 API and avoids speculating about future beta changes.
-
### 1. Better Performance
- **Lower memory usage**: The core architecture now shares more behavior across table objects, with some large-table scenarios seeing up to 90% memory savings.
@@ -483,9 +472,9 @@ Do not provide both `atoms.pagination` and `state.pagination`; the atom owns tha
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/lit/quick-start.md b/docs/framework/lit/quick-start.md
index 7c033e33a8..dc80655d02 100644
--- a/docs/framework/lit/quick-start.md
+++ b/docs/framework/lit/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/lit-table@beta
+npm install @tanstack/lit-table
```
## Your First Table
diff --git a/docs/framework/octane/guide/custom-features.md b/docs/framework/octane/guide/custom-features.md
index c537312a7d..d37ba70680 100644
--- a/docs/framework/octane/guide/custom-features.md
+++ b/docs/framework/octane/guide/custom-features.md
@@ -126,19 +126,19 @@ This might be a bit confusing, so let's break down what each of these methods do
##### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
##### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
##### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
#### API Creators
@@ -156,13 +156,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
##### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
##### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -174,13 +174,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
##### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
##### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/octane/quick-start.md b/docs/framework/octane/quick-start.md
index b5a4f6c4f5..41ed1d848a 100644
--- a/docs/framework/octane/quick-start.md
+++ b/docs/framework/octane/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/octane-table@beta
+npm install @tanstack/octane-table
```
## Your First Table
diff --git a/docs/framework/preact/guide/custom-features.md b/docs/framework/preact/guide/custom-features.md
index 47540ae503..ea112df683 100644
--- a/docs/framework/preact/guide/custom-features.md
+++ b/docs/framework/preact/guide/custom-features.md
@@ -126,19 +126,19 @@ This might be a bit confusing, so let's break down what each of these methods do
##### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
##### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
##### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
#### API Creators
@@ -156,13 +156,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
##### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
##### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -174,13 +174,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
##### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
##### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/preact/guide/migrating.md b/docs/framework/preact/guide/migrating.md
index bf13b47793..a4b99db326 100644
--- a/docs/framework/preact/guide/migrating.md
+++ b/docs/framework/preact/guide/migrating.md
@@ -2,21 +2,6 @@
title: Migrating to TanStack Table V9 (Preact)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See the row models section below for the new shape.
-
----
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -473,9 +458,9 @@ When `atoms.pagination` is provided, table writes like `table.setPageIndex(2)` w
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
@@ -820,7 +805,7 @@ type Person = {
- [ ] Replace `@tanstack/react-table` imports used through `preact/compat` with `@tanstack/preact-table`.
- [ ] Replace `useReactTable` with `useTable`.
- [ ] Define `features` using `tableFeatures()` (or use `stockFeatures`)
-- [ ] Migrate `get*RowModel()` options (or earlier-beta `rowModels: {...}` entries) to `tableFeatures({...})` slots (e.g. `filteredRowModel: createFilteredRowModel()`).
+- [ ] Migrate `get*RowModel()` options to `tableFeatures({...})` slots (e.g. `filteredRowModel: createFilteredRowModel()`).
- [ ] Drop `getCoreRowModel`; the core row model is automatic.
- [ ] Move `sortingFns`, `filterFns`, and `aggregationFns` into `tableFeatures` slots (not factory args).
- [ ] Rename `sortingFn` to `sortFn` and `sortingFns` to `sortFns`.
diff --git a/docs/framework/preact/quick-start.md b/docs/framework/preact/quick-start.md
index 105e4c29f5..b274c9e0b6 100644
--- a/docs/framework/preact/quick-start.md
+++ b/docs/framework/preact/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/preact-table@beta
+npm install @tanstack/preact-table
```
## Your First Table
diff --git a/docs/framework/react/guide/custom-features.md b/docs/framework/react/guide/custom-features.md
index 58571cce81..6aba8576ab 100644
--- a/docs/framework/react/guide/custom-features.md
+++ b/docs/framework/react/guide/custom-features.md
@@ -126,19 +126,19 @@ This might be a bit confusing, so let's break down what each of these methods do
##### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
##### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
##### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
#### API Creators
@@ -156,13 +156,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
##### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
##### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -174,13 +174,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
##### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
##### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/react/guide/migrating.md b/docs/framework/react/guide/migrating.md
index 858a639fd5..5ff837b038 100644
--- a/docs/framework/react/guide/migrating.md
+++ b/docs/framework/react/guide/migrating.md
@@ -2,21 +2,6 @@
title: Migrating to TanStack Table V9 (React)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See [Row Model Factories](#row-model-factories) for the new shape.
-
----
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -549,9 +534,9 @@ const columns = [
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/react/quick-start.md b/docs/framework/react/quick-start.md
index b070809d6b..f182953b9c 100644
--- a/docs/framework/react/quick-start.md
+++ b/docs/framework/react/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/react-table@beta
+npm install @tanstack/react-table
```
## Your First Table
diff --git a/docs/framework/solid/guide/custom-features.md b/docs/framework/solid/guide/custom-features.md
index 6f405c910e..f2ee25223d 100644
--- a/docs/framework/solid/guide/custom-features.md
+++ b/docs/framework/solid/guide/custom-features.md
@@ -120,19 +120,19 @@ This might be a bit confusing, so let's break down what each of these methods do
#### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
#### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
#### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
### API Creators
@@ -150,13 +150,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
#### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
#### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -168,13 +168,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
#### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
#### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/solid/guide/migrating.md b/docs/framework/solid/guide/migrating.md
index e2931205d5..3d76ee69ca 100644
--- a/docs/framework/solid/guide/migrating.md
+++ b/docs/framework/solid/guide/migrating.md
@@ -2,15 +2,6 @@
title: Migrating to TanStack Table V9 (Solid)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See the row models section below for the new shape.
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -442,9 +433,9 @@ Sorting-related APIs have been renamed for consistency:
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/solid/quick-start.md b/docs/framework/solid/quick-start.md
index ed917e390c..f23a702984 100644
--- a/docs/framework/solid/quick-start.md
+++ b/docs/framework/solid/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/solid-table@beta
+npm install @tanstack/solid-table
```
## Your First Table
diff --git a/docs/framework/svelte/guide/custom-features.md b/docs/framework/svelte/guide/custom-features.md
index fc8fc4bc4d..2d05d3f2fb 100644
--- a/docs/framework/svelte/guide/custom-features.md
+++ b/docs/framework/svelte/guide/custom-features.md
@@ -120,19 +120,19 @@ This might be a bit confusing, so let's break down what each of these methods do
#### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
#### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
#### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
### API Creators
@@ -150,13 +150,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
#### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
#### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -168,13 +168,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
#### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
#### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/svelte/guide/migrating.md b/docs/framework/svelte/guide/migrating.md
index 7fbdc1c7a1..7f8995b00c 100644
--- a/docs/framework/svelte/guide/migrating.md
+++ b/docs/framework/svelte/guide/migrating.md
@@ -2,18 +2,6 @@
title: Migrating to TanStack Table V9 (Svelte)
---
-> [!NOTE]
-> `v9.0.0-beta.59` removes Svelte's table-creation selectors. `createTable` and `createAppTable` now accept only their options object; the selected `table.state` property, `subscribeTable`, and `SubscribeSource` are also removed. Read one slice with `table.atoms..get()` and the complete state with `table.store.get()`. These reads update naturally in Svelte templates, `$derived`, `$derived.by`, and `$effect`. This is an intentional beta-breaking change with no compatibility overload or runtime shim. See [State Management Changes](#state-management-changes) for examples.
-
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See the row models section below for the new shape.
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -359,40 +347,7 @@ The same reads become reactive dependencies when they run in a Svelte template,
`$derived` now owns projection and equality behavior. A full-store read is appropriate for debug output, persistence, or computations that intentionally depend on every slice; use an atom when only one slice matters.
-#### Migrating a `createTable` Selector
-
-```ts
-// Before beta.59
-const table = createTable(options, (state) => ({
- pagination: state.pagination,
-}))
-
-table.state.pagination
-```
-
-```ts
-// beta.59+
-const table = createTable(options)
-const pagination = $derived(table.atoms.pagination.get())
-```
-
-Identity selectors and selectors returning `null` should simply be deleted. Atom and table API reads already register the relevant Svelte dependencies.
-
-#### Migrating a `createAppTable` Selector
-
-```ts
-// Before beta.59
-const table = createAppTable(options, (state) => ({
- sorting: state.sorting,
-}))
-table.state.sorting
-
-// beta.59+
-const table = createAppTable(options)
-const sorting = $derived(table.atoms.sorting.get())
-```
-
-The selected-state generic was removed with the selector. `SvelteTable` now has two generic parameters, `AppSvelteTable` has five, and `useTableContext` only accepts its optional row-data generic.
+`SvelteTable` has two generic parameters, `AppSvelteTable` has five, and `useTableContext` only accepts its optional row-data generic.
### Controlled State
@@ -499,9 +454,9 @@ Do not provide both `atoms.pagination` and `state.pagination`; the atom owns tha
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/svelte/quick-start.md b/docs/framework/svelte/quick-start.md
index da0b42979e..5f3bb917ee 100644
--- a/docs/framework/svelte/quick-start.md
+++ b/docs/framework/svelte/quick-start.md
@@ -8,10 +8,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/svelte-table@beta
+npm install @tanstack/svelte-table
```
## Your First Table
diff --git a/docs/framework/vanilla/quick-start.md b/docs/framework/vanilla/quick-start.md
index ee2ebee576..7a8817a9d1 100644
--- a/docs/framework/vanilla/quick-start.md
+++ b/docs/framework/vanilla/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/table-core@beta
+npm install @tanstack/table-core
```
## Your First Table
diff --git a/docs/framework/vue/guide/custom-features.md b/docs/framework/vue/guide/custom-features.md
index 0d9842392e..56b7beb34d 100644
--- a/docs/framework/vue/guide/custom-features.md
+++ b/docs/framework/vue/guide/custom-features.md
@@ -120,19 +120,19 @@ This might be a bit confusing, so let's break down what each of these methods do
#### getDefaultTableOptions
-The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
+The `getDefaultTableOptions` method in a table feature is responsible for setting the default table options for that feature. For example, in the [Column Resizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-resizing/columnResizingFeature.ts) feature, the `getDefaultTableOptions` method sets the default `columnResizeMode` option with a default value of `"onEnd"`.
#### getDefaultColumnDef
-The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
+The `getDefaultColumnDef` method in a table feature is responsible for setting the default column options for that feature. For example, in the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature, the `getDefaultColumnDef` method sets the default `sortUndefined` column option with a default value of `1`.
#### getInitialState
-The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
+The `getInitialState` method in a table feature is responsible for setting the default state for that feature. For example, in the [Pagination](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-pagination/rowPaginationFeature.ts) feature, the `getInitialState` method sets the default `pageSize` state with a value of `10` and the default `pageIndex` state with a value of `0`.
### API Creators
@@ -150,13 +150,13 @@ Keep API assignment in `constructTableAPIs`; initialization and reset hooks are
#### constructTableAPIs
-The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
+The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature.
#### assignHeaderPrototype and initHeaderInstanceData
-The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
+The `assignHeaderPrototype` method in a table feature is responsible for adding methods to the shared `header` prototype. For example, the [Column Sizing](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/column-sizing/columnSizingFeature.ts) feature adds header instance API methods such as `getStart`. So then, when you call `header.getStart()`, you are calling a method that was added by the column sizing feature. The `initHeaderInstanceData` method is available for per-header instance data or caches that cannot live on the shared prototype. It runs during header construction, before sub-headers are populated and before the header is linked to its header group. Headers are reconstructed whenever header groups recompute, so it reruns on every rebuild.
@@ -168,13 +168,13 @@ The `initHeaderGroupInstanceData` method is available for per-header-group insta
#### assignColumnPrototype and initColumnInstanceData
-The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
+The `assignColumnPrototype` method in a table feature is responsible for adding methods to the shared `column` prototype. For example, the [Sorting](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-sorting/rowSortingFeature.ts) feature adds column instance API methods such as `getNextSortingOrder`, `toggleSorting`, etc. So then, when you call `column.toggleSorting()`, you are calling a method that was added by the row sorting feature. The `initColumnInstanceData` method is available for per-column instance data or caches that cannot live on the shared prototype. For example, the [Aggregation](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-aggregation/rowAggregationFeature.ts) feature uses it to set up a per-column aggregation cache.
#### assignRowPrototype and initRowInstanceData
-The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
+The `assignRowPrototype` method in a table feature is responsible for adding methods to the shared `row` prototype. The `initRowInstanceData` method is available for per-row instance data or caches that cannot live on the shared prototype. For example, the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature adds row instance API methods such as `toggleSelected` and `getIsSelected`.
diff --git a/docs/framework/vue/guide/migrating.md b/docs/framework/vue/guide/migrating.md
index 9d6a59acf2..894687c760 100644
--- a/docs/framework/vue/guide/migrating.md
+++ b/docs/framework/vue/guide/migrating.md
@@ -2,21 +2,6 @@
title: Migrating to TanStack Table V9 (Vue)
---
-> [!NOTE]
-> `v9.0.0-beta.48`/`beta.49` split aggregation out of `columnGroupingFeature` into a new `rowAggregationFeature` (`stockFeatures` includes both). If you declare features explicitly, add `rowAggregationFeature` anywhere you use `aggregationFns`, `aggregationFn`, `aggregatedCell`, `cell.getIsAggregated()`, or `column.getAggregationValue()`. Aggregation function definitions, row-depth selection, and the `getAggregationValue` signature also changed. See [Grouping and Aggregation](#grouping-and-aggregation) below.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.38` renames column pinning from physical `left`/`right` terminology to logical `start`/`end` terminology (in LTR layouts `start` usually means left; in RTL it usually means right). Update `columnPinning.left`/`right` to `columnPinning.start`/`end`, `column.pin('left' | 'right')` to `column.pin('start' | 'end')`, and `getLeft*`/`getRight*` APIs to `getStart*`/`getEnd*`. See [Column Pinning](#column-pinning) for the full mapping.
-
----
-
-> [!NOTE]
-> `v9.0.0-beta.10` moves row model factories and the `filterFns`/`sortFns`/`aggregationFns` registries onto the `features` object (the separate `rowModels` option is gone, and the factories no longer take arguments). See [Row Model Factories](#row-model-factories) for the new shape.
-
----
-
## What's New in TanStack Table V9
TanStack Table V9 is a major release with significant internal architectural improvements while maintaining the core table logic you're familiar with. Here are the key changes:
@@ -476,9 +461,9 @@ Do not provide both `atoms.pagination` and `state.pagination`; the atom owns tha
### Column Pinning
-`v9.0.0-beta.38` changes column pinning to use logical `start`/`end` terminology instead of physical `left`/`right` terminology. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases in beta.38.
+V9 changes column pinning to use logical `start`/`end` terminology instead of the physical `left`/`right` terminology used in V8. In LTR languages/layouts, `start` usually corresponds to left and `end` to right; in RTL languages/layouts, `start` usually corresponds to right and `end` to left. There are no deprecated aliases.
-| Before beta.38 | beta.38+ |
+| V8 | V9 |
| ------------------------------------ | ------------------------------------ |
| `columnPinning.left` | `columnPinning.start` |
| `columnPinning.right` | `columnPinning.end` |
diff --git a/docs/framework/vue/quick-start.md b/docs/framework/vue/quick-start.md
index 5fb65b1711..787373327e 100644
--- a/docs/framework/vue/quick-start.md
+++ b/docs/framework/vue/quick-start.md
@@ -6,10 +6,8 @@ TanStack Table is a headless table library. It manages your table's state and lo
## Installation
-TanStack Table v9 is currently published under the `beta` tag:
-
```bash
-npm install @tanstack/vue-table@beta
+npm install @tanstack/vue-table
```
## Your First Table
diff --git a/docs/guide/row-models.md b/docs/guide/row-models.md
index cc8ec918ac..6115cd74d9 100644
--- a/docs/guide/row-models.md
+++ b/docs/guide/row-models.md
@@ -121,7 +121,7 @@ To use built-in functions by string name, import them individually (`filterFn_in
## Customize/Fork Row Models
-You don't have to use the exact row models that are provided by TanStack Table. If you need some advanced customization for certain row models, feel free to copy the [source code](https://github.com/TanStack/table/tree/beta/packages/table-core/src/features) for the row model you want to customize and modify it to your needs. Each row model factory lives alongside its feature (e.g. `row-sorting/createSortedRowModel.ts`), and the core row model lives in [`core/row-models`](https://github.com/TanStack/table/tree/beta/packages/table-core/src/core/row-models).
+You don't have to use the exact row models that are provided by TanStack Table. If you need some advanced customization for certain row models, feel free to copy the [source code](https://github.com/TanStack/table/tree/main/packages/table-core/src/features) for the row model you want to customize and modify it to your needs. Each row model factory lives alongside its feature (e.g. `row-sorting/createSortedRowModel.ts`), and the core row model lives in [`core/row-models`](https://github.com/TanStack/table/tree/main/packages/table-core/src/core/row-models).
## Using Row Models
diff --git a/docs/installation.md b/docs/installation.md
index 77feb0e310..c0fdf888dc 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -8,22 +8,19 @@ Install your table adapter as a dependency using your preferred package manager:
-react: @tanstack/react-table@beta
-preact: @tanstack/preact-table@beta
-octane: @tanstack/octane-table@beta
-vue: @tanstack/vue-table@beta
-solid: @tanstack/solid-table@beta
-svelte: @tanstack/svelte-table@beta
-angular: @tanstack/angular-table@beta
-ember: @tanstack/ember-table@beta
-lit: @tanstack/lit-table@beta
-alpine: @tanstack/alpine-table@beta
+react: @tanstack/react-table
+preact: @tanstack/preact-table
+octane: @tanstack/octane-table
+vue: @tanstack/vue-table
+solid: @tanstack/solid-table
+svelte: @tanstack/svelte-table
+angular: @tanstack/angular-table
+ember: @tanstack/ember-table
+lit: @tanstack/lit-table
+alpine: @tanstack/alpine-table
-> [!IMPORTANT]
-> TanStack Table v9 is currently in beta, so the `@beta` dist-tag is required. If you omit it, your package manager will install the `latest` tag, which is still v8, and none of the v9 APIs documented here will exist.
-
# React
@@ -68,4 +65,4 @@ The `@tanstack/alpine-table` package works with Alpine 3.
-Don't see your favorite framework (or favorite version of your framework) listed? You can always just use the `@tanstack/table-core` package and build your own adapter in your own codebase. Usually, only a thin wrapper is needed to manage state and rendering for your specific framework. Browse the [source code](https://github.com/TanStack/table/tree/beta/packages) of all of the other adapters to see how they work.
+Don't see your favorite framework (or favorite version of your framework) listed? You can always just use the `@tanstack/table-core` package and build your own adapter in your own codebase. Usually, only a thin wrapper is needed to manage state and rendering for your specific framework. Browse the [source code](https://github.com/TanStack/table/tree/main/packages) of all of the other adapters to see how they work.
diff --git a/packages/alpine-table/README.md b/packages/alpine-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/alpine-table/README.md
+++ b/packages/alpine-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/angular-table/README.md b/packages/angular-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/angular-table/README.md
+++ b/packages/angular-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/angular-table/skills/migrate-v8-to-v9/SKILL.md b/packages/angular-table/skills/migrate-v8-to-v9/SKILL.md
index 783bced1c2..25de9bc59d 100644
--- a/packages/angular-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/angular-table/skills/migrate-v8-to-v9/SKILL.md
@@ -105,7 +105,7 @@ Row, cell, column, header, and related methods now live on shared prototypes and
### Logical column pinning
-Beta.38 has no physical aliases.
+V9 has no physical aliases.
| old | new |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
diff --git a/packages/ember-table/README.md b/packages/ember-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/ember-table/README.md
+++ b/packages/ember-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/lit-table/README.md b/packages/lit-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/lit-table/README.md
+++ b/packages/lit-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/lit-table/skills/migrate-v8-to-v9/SKILL.md b/packages/lit-table/skills/migrate-v8-to-v9/SKILL.md
index bb4d0a97b7..e5e467c13a 100644
--- a/packages/lit-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/lit-table/skills/migrate-v8-to-v9/SKILL.md
@@ -107,7 +107,7 @@ Row, cell, column, header, and related methods now live on shared prototypes and
### Logical column pinning
-Beta.38 has no `left`/`right` aliases.
+V9 has no `left`/`right` aliases.
| old | new |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
@@ -195,4 +195,4 @@ Use `row.getValue('name')`; prototype methods require the original instance and
## API Discovery
-Inspect `node_modules/@tanstack/lit-table/dist/index.d.ts` and `TableController.d.ts`. Verify feature slots and exact beta APIs in `node_modules/@tanstack/table-core/dist/`; do not reconstruct v9 from v8 memory.
+Inspect `node_modules/@tanstack/lit-table/dist/index.d.ts` and `TableController.d.ts`. Verify feature slots and the exact installed v9 APIs in `node_modules/@tanstack/table-core/dist/`; do not reconstruct v9 from v8 memory.
diff --git a/packages/match-sorter-utils/README.md b/packages/match-sorter-utils/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/match-sorter-utils/README.md
+++ b/packages/match-sorter-utils/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/octane-table/README.md b/packages/octane-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/octane-table/README.md
+++ b/packages/octane-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/preact-table-devtools/README.md b/packages/preact-table-devtools/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/preact-table-devtools/README.md
+++ b/packages/preact-table-devtools/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/preact-table/README.md b/packages/preact-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/preact-table/README.md
+++ b/packages/preact-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/preact-table/skills/migrate-v8-to-v9/SKILL.md b/packages/preact-table/skills/migrate-v8-to-v9/SKILL.md
index 67327d231d..a123c50570 100644
--- a/packages/preact-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/preact-table/skills/migrate-v8-to-v9/SKILL.md
@@ -17,7 +17,7 @@ sources:
- 'TanStack/table:examples/preact/basic-use-table'
---
-Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this as the exhaustive Preact migration checklist. Verify exact APIs in the installed declarations before assuming another v9 beta has the same surface.
+Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this as the exhaustive Preact migration checklist. Verify the exact v9 APIs in the installed declarations before assuming a different v9 version has the same surface.
Framework prerequisite: Preact 10 or newer (`preact >=10`).
@@ -59,7 +59,7 @@ V8 did not have a first-party Preact adapter; many Preact apps used `@tanstack/r
| `getFacetedMinMaxValues()` | `facetedMinMaxValues: createFacetedMinMaxValues()` |
| `getFacetedUniqueValues()` | `facetedUniqueValues: createFacetedUniqueValues()` |
| Table/factory `sortingFns`, `filterFns`, `aggregationFns` | `sortFns`, `filterFns`, `aggregationFns` slots in `tableFeatures()` |
-| Early-beta `rowModels: { ... }` | Direct named slots in `tableFeatures()` |
+| Removed `rowModels: { ... }` object | Direct named slots in `tableFeatures()` |
In the registry slots, register individually imported built-ins (`filterFn_includesString`, `sortFn_alphanumeric`, `aggregationFn_sum`, and so on) under their conventional keys alongside custom functions; the full `filterFns`/`sortFns`/`aggregationFns` registry objects still work but bundle every built-in.
@@ -110,7 +110,7 @@ Infer with `typeof features`; use `StockFeatures` only for deliberate `stockFeat
### Shared API and semantic changes
-| v8 / pre-beta.38 pinning | v9 beta.38+ |
+| v8 pinning | v9 |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
| `columnPinning.left` / `.right` | `.start` / `.end` |
| `column.pin('left' \| 'right')` | `column.pin('start' \| 'end')` |
@@ -150,7 +150,7 @@ All other underscore-prefixed internals are removed. `getIsSomeRowsSelected()` a
1. Replace React adapter imports and `useReactTable`; remove Table-only `preact/compat` configuration.
2. Inventory used features, row models, registries, state slices, methods, and `_` internals.
-3. Build `tableFeatures()` in prerequisite order; remove `getCoreRowModel` and old/early-beta row-model placement.
+3. Build `tableFeatures()` in prerequisite order; remove `getCoreRowModel` and old row-model placement.
4. Apply all pinning, sizing, sorting, row, and selection mappings above.
5. Update helpers/types with `typeof features`, retarget augmentation, and prefer feature registry/meta slots.
6. Replace `getState()`/`onStateChange`; explicitly choose internal, per-slice controlled, or external-atom ownership.
diff --git a/packages/react-table-devtools/README.md b/packages/react-table-devtools/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/react-table-devtools/README.md
+++ b/packages/react-table-devtools/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/react-table/README.md b/packages/react-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/react-table/README.md
+++ b/packages/react-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/react-table/skills/migrate-v8-to-v9/SKILL.md b/packages/react-table/skills/migrate-v8-to-v9/SKILL.md
index 8e65e7e6d9..a5cf79217b 100644
--- a/packages/react-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/react-table/skills/migrate-v8-to-v9/SKILL.md
@@ -18,7 +18,7 @@ sources:
- 'TanStack/table:examples/react/basic-use-table'
---
-Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this skill as the exhaustive migration checklist, not as general API documentation. Inspect the installed `src` files before writing APIs for a different v9 beta.
+Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this skill as the exhaustive migration checklist, not as general API documentation. Inspect the installed `src` files before writing APIs for a different v9 version.
Framework prerequisite: React 18 or newer (`react >=18`).
@@ -70,7 +70,7 @@ Prefer explicit features as the end state. `stockFeatures` is a useful kitchen-s
| `sortingFns` table option | `sortFns` slot in `tableFeatures()` |
| `filterFns` table option/factory argument | `filterFns` slot in `tableFeatures()` |
| `aggregationFns` table option/factory argument | `aggregationFns` slot in `tableFeatures()` |
-| Early-v9-beta `rowModels: { ... }` | Named row-model slots directly in `tableFeatures()` |
+| Removed `rowModels: { ... }` object | Named row-model slots directly in `tableFeatures()` |
In the registry slots, register individually imported built-ins (`filterFn_includesString`, `sortFn_alphanumeric`, `aggregationFn_sum`, and so on) under their conventional keys alongside custom functions; the full `filterFns`/`sortFns`/`aggregationFns` registry objects still work but bundle every built-in.
@@ -137,7 +137,7 @@ Infer `TFeatures` with `typeof features`. If deliberately using `stockFeatures`,
Column pinning now uses logical regions, with no deprecated aliases:
-| v8 / pre-beta.38 | v9 beta.38+ |
+| v8 | v9 |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
| `columnPinning.left` / `.right` | `.start` / `.end` |
| `column.pin('left' \| 'right')` | `column.pin('start' \| 'end')` |
diff --git a/packages/solid-table-devtools/README.md b/packages/solid-table-devtools/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/solid-table-devtools/README.md
+++ b/packages/solid-table-devtools/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/solid-table/README.md b/packages/solid-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/solid-table/README.md
+++ b/packages/solid-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/solid-table/skills/migrate-v8-to-v9/SKILL.md b/packages/solid-table/skills/migrate-v8-to-v9/SKILL.md
index 8bf4fd22e4..2a6d732ed7 100644
--- a/packages/solid-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/solid-table/skills/migrate-v8-to-v9/SKILL.md
@@ -17,7 +17,7 @@ sources:
- 'TanStack/table:examples/solid/basic-use-table'
---
-Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this as the exhaustive Solid migration checklist. Check the installed declarations before emitting APIs for another beta.
+Read `@tanstack/table-core#migrate-v8-to-v9`, `getting-started`, and `table-state`. Use this as the exhaustive Solid migration checklist. Check the installed declarations before emitting APIs for a different v9 version.
Framework prerequisite: Solid 1.3 or newer (`solid-js >=1.3`).
@@ -65,7 +65,7 @@ Keep static features and columns outside reactive component work. Prefer explici
| `getFacetedMinMaxValues()` | `facetedMinMaxValues: createFacetedMinMaxValues()` |
| `getFacetedUniqueValues()` | `facetedUniqueValues: createFacetedUniqueValues()` |
| Table/factory `sortingFns`, `filterFns`, `aggregationFns` | `sortFns`, `filterFns`, `aggregationFns` feature slots |
-| Early-beta `rowModels: { ... }` | Direct named slots in `tableFeatures()` |
+| Removed `rowModels: { ... }` | Direct named slots in `tableFeatures()` |
In the registry slots, register individually imported built-ins (`filterFn_includesString`, `sortFn_alphanumeric`, `aggregationFn_sum`, and so on) under their conventional keys alongside custom functions; the full `filterFns`/`sortFns`/`aggregationFns` registry objects still work but bundle every built-in.
@@ -131,7 +131,7 @@ Infer with `typeof features`; use `StockFeatures` only when deliberately typing
### Shared API and semantic changes
-| v8 / pre-beta.38 pinning | v9 beta.38+ |
+| v8 pinning | v9 |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
| `columnPinning.left` / `.right` | `.start` / `.end` |
| `column.pin('left' \| 'right')` | `column.pin('start' \| 'end')` |
@@ -170,7 +170,7 @@ All other underscore-prefixed internals are removed. `getIsSomeRowsSelected()` a
## Migration procedure
1. Replace `createSolidTable` with `createTable` and inventory used features, processing, state, and APIs.
-2. Build `tableFeatures()` in prerequisite order; remove `getCoreRowModel` and old/early-beta row-model placement.
+2. Build `tableFeatures()` in prerequisite order; remove `getCoreRowModel` and old row-model placement.
3. Apply all pinning, sizing, sorting, row, and selection mappings above.
4. Update helpers/types with `typeof features`; migrate meta and function augmentation to per-feature slots where appropriate.
5. Preserve Solid tracking with getters for `data` and controlled state; replace `getState()` and `onStateChange`.
diff --git a/packages/svelte-table/README.md b/packages/svelte-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/svelte-table/README.md
+++ b/packages/svelte-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/svelte-table/skills/migrate-v8-to-v9/SKILL.md b/packages/svelte-table/skills/migrate-v8-to-v9/SKILL.md
index b523469aeb..c7e363333b 100644
--- a/packages/svelte-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/svelte-table/skills/migrate-v8-to-v9/SKILL.md
@@ -1,7 +1,7 @@
---
name: migrate-v8-to-v9
description: >
- Complete Svelte v8-to-v9 migration reference: Svelte 5, createTable, beta.59 selector removal, explicit features and row-model slots, atom/rune state, rendering helpers, prototype methods, type generics, sorting, sizing, selection, and logical pinning.
+ Complete Svelte v8-to-v9 migration reference: Svelte 5, createTable, selector-API removal, explicit features and row-model slots, atom/rune state, rendering helpers, prototype methods, type generics, sorting, sizing, selection, and logical pinning.
metadata:
type: lifecycle
library: '@tanstack/svelte-table'
@@ -80,7 +80,7 @@ Factories take no arguments. Register `filterFns`, `sortFns`, and `aggregationFn
- Reactive option inputs must remain live: use getters for rune values such as `data` and controlled state slices.
- `table.getState().sorting` becomes the narrow `table.atoms.sorting.get()` read. Use `table.store.get()` when code intentionally needs the complete state.
- Table atom, store, and API reads become reactive inside templates, `$derived`, `$derived.by`, and `$effect`; use native `$derived` values for projections.
-- Starting in beta.59, remove second-argument selectors from `createTable` and `createAppTable`, replace `table.state`, and remove `subscribeTable` / `SubscribeSource` imports.
+- Remove second-argument selectors from `createTable` and `createAppTable` (if present from an earlier v9 version), replace `table.state`, and remove `subscribeTable` / `SubscribeSource` imports.
- `SvelteTable` now has two generic parameters, `AppSvelteTable` has five, and `useTableContext` no longer accepts a selected-state generic.
- For Svelte-owned controlled slices, use `createTableState` and matching `onSortingChange`, `onPaginationChange`, and other per-slice callbacks.
- For shared ownership, provide atoms created by `@tanstack/svelte-store` through `atoms`. Never provide both `atoms.pagination` and `state.pagination`.
@@ -107,7 +107,7 @@ Row, cell, column, header, and related object methods now live on shared prototy
### Logical column pinning
-There are no `left`/`right` aliases in beta.38.
+V9 has no `left`/`right` aliases.
| old | new |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
@@ -174,9 +174,9 @@ Register both the feature and its `create*RowModel()` slot. Leaving `get*RowMode
Use `get data() { return data }`; a one-time `data` snapshot does not remain reactive.
-### HIGH: Keeping beta.58 Svelte selectors
+### HIGH: Keeping removed Svelte selectors
-Remove second arguments from `createTable` and `createAppTable`, replace selected `table.state` reads with `table.atoms..get()` or `table.store.get()`, and remove `subscribeTable`, `SubscribeSource`, and selected-state generic parameters. Beta.59 intentionally has no compatibility layer for these APIs.
+Remove second arguments from `createTable` and `createAppTable`, replace selected `table.state` reads with `table.atoms..get()` or `table.store.get()`, and remove `subscribeTable`, `SubscribeSource`, and selected-state generic parameters. V9 intentionally has no compatibility layer for these APIs.
### HIGH: Destructuring instance methods
@@ -198,4 +198,4 @@ Keep calls bound to row/cell/column/header instances; shallow copies do not cont
## API Discovery
-Verify the installed target in `node_modules/@tanstack/svelte-table/dist/index.d.ts` and its adapter sources. Verify feature slots and exact beta APIs in `node_modules/@tanstack/table-core/dist/`; do not reconstruct v9 APIs from v8 memory.
+Verify the installed target in `node_modules/@tanstack/svelte-table/dist/index.d.ts` and its adapter sources. Verify feature slots and the exact installed v9 APIs in `node_modules/@tanstack/table-core/dist/`; do not reconstruct v9 APIs from v8 memory.
diff --git a/packages/svelte-table/skills/table-state/SKILL.md b/packages/svelte-table/skills/table-state/SKILL.md
index 6db93fb831..0f0eda0977 100644
--- a/packages/svelte-table/skills/table-state/SKILL.md
+++ b/packages/svelte-table/skills/table-state/SKILL.md
@@ -167,7 +167,7 @@ const table = createTable(options)
const pagination = $derived(table.atoms.pagination.get())
```
-Starting in beta.59, `createTable` and `createAppTable` take only options, `table.state` is absent, and `subscribeTable` and `SubscribeSource` are no longer exported. Use native tracked Svelte reads and `$derived` projections.
+In v9, `createTable` and `createAppTable` take only options, `table.state` is absent, and `subscribeTable` and `SubscribeSource` are no longer exported. Use native tracked Svelte reads and `$derived` projections.
Source: `docs/framework/svelte/guide/migrating.md`
diff --git a/packages/table-core/README.md b/packages/table-core/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/table-core/README.md
+++ b/packages/table-core/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/table-core/skills/migrate-v8-to-v9/SKILL.md b/packages/table-core/skills/migrate-v8-to-v9/SKILL.md
index 8f929b128d..4aef419a92 100644
--- a/packages/table-core/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/table-core/skills/migrate-v8-to-v9/SKILL.md
@@ -97,7 +97,7 @@ Honor feature prerequisites in the same `tableFeatures` call:
### 2. Move row models into feature slots and rename factories
-V8 `get*RowModel()` table options and the earlier-v9-beta `rowModels` object are gone. V9 `create*RowModel()` factories take no registry arguments and are registered as named feature slots.
+V8 `get*RowModel()` table options and the removed `rowModels` object are gone. V9 `create*RowModel()` factories take no registry arguments and are registered as named feature slots.
| V8 table option | V9 `tableFeatures` slot | V9 factory |
| -------------------------------------------------- | -------------------------------------- | ---------------------------------------------- |
@@ -175,7 +175,7 @@ Audit all methods extracted from rows, cells, columns, headers, and header group
### 5. Replace physical column pinning with logical pinning
-V9 beta.38 has no `left`/`right` aliases. Replace all state keys, return-value comparisons, arguments, and API families:
+V9 has no `left`/`right` aliases. Replace all state keys, return-value comparisons, arguments, and API families:
| V8 | V9 |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
@@ -298,7 +298,7 @@ Do not confuse new capabilities with required breakages. After the table works,
- [ ] Inventory every feature API used by table, row, column, cell, and header code; register all 16 required stock features.
- [ ] Use `stockFeatures` only as a temporary parity aid and record an explicit-feature follow-up.
- [ ] Remove `getCoreRowModel()` unless supplying a deliberate custom `coreRowModel` slot.
-- [ ] Move all remaining `get*RowModel()` options or earlier-beta `rowModels` entries to `create*RowModel()` feature slots.
+- [ ] Move all remaining `get*RowModel()` options (or a removed `rowModels: {...}` object, if present) to `create*RowModel()` feature slots.
- [ ] Register each dependent feature before its row-model slot.
- [ ] Move `filterFns`, `sortingFns`/`sortFns`, and `aggregationFns` into feature slots, registering individually imported built-ins; pass no registries to factories.
- [ ] Register `rowAggregationFeature` independently and migrate custom aggregation callables to context-based `AggregationFnDef` definitions.
@@ -329,9 +329,9 @@ Do not confuse new capabilities with required breakages. After the table works,
If `table.nextPage`, `column.toggleSorting`, or a state slice disappears, add the associated feature. Do not cast the table to a broader type.
-### [CRITICAL] Mixing v8, early-v9-beta, and beta.38 configuration
+### [CRITICAL] Mixing v8 and v9 configuration styles
-Do not combine v8 `get*RowModel` options, an earlier beta's `rowModels` object, or physical pinning names with the current `tableFeatures` slots.
+Do not combine v8 `get*RowModel` options, a removed `rowModels` object, or physical pinning names with the current `tableFeatures` slots.
### [HIGH] Treating `stockFeatures` or `useLegacyTable` as the finished migration
@@ -351,4 +351,4 @@ Use the installed version, not main-branch memory:
4. Inspect the installed adapter's `dist/index.d.ts` and its migration skill for entrypoints and rendering.
5. Inspect `dist/legacy.d.ts` only to remove an existing bridge, never to design new v9 code.
-If package-manager layout prevents that exact path, resolve the installed package root first. Do not substitute APIs from a different v9 beta.
+If package-manager layout prevents that exact path, resolve the installed package root first. Do not substitute APIs from a different v9 version.
diff --git a/packages/table-devtools/README.md b/packages/table-devtools/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/table-devtools/README.md
+++ b/packages/table-devtools/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/vue-table-devtools/README.md b/packages/vue-table-devtools/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/vue-table-devtools/README.md
+++ b/packages/vue-table-devtools/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/vue-table/README.md b/packages/vue-table/README.md
index d25eaa5af2..f9ec9e8e28 100644
--- a/packages/vue-table/README.md
+++ b/packages/vue-table/README.md
@@ -47,16 +47,16 @@
> [!NOTE]
> You may know TanStack Table by the adapter names:
>
-> - [Angular Table](https://tanstack.com/table/alpha/docs/framework/angular/angular-table)
-> - [Lit Table](https://tanstack.com/table/alpha/docs/framework/lit/lit-table)
-> - [Octane Table](https://tanstack.com/table/beta/docs/framework/octane/quick-start)
-> - [Preact Table](https://tanstack.com/table/beta/docs/framework/preact/quick-start)
-> - [React Table](https://tanstack.com/table/alpha/docs/framework/react/react-table)
-> - [Solid Table](https://tanstack.com/table/alpha/docs/framework/solid/solid-table)
-> - [Svelte Table](https://tanstack.com/table/alpha/docs/framework/svelte/svelte-table)
-> - [Vue Table](https://tanstack.com/table/alpha/docs/framework/vue/vue-table)
-> - [Alpine Table](https://tanstack.com/table/alpha/docs/framework/alpine/alpine-table)
-> - [Ember Table](https://tanstack.com/table/alpha/docs/framework/ember/ember-table)
+> - [Angular Table](https://tanstack.com/table/latest/docs/framework/angular/angular-table)
+> - [Lit Table](https://tanstack.com/table/latest/docs/framework/lit/lit-table)
+> - [Octane Table](https://tanstack.com/table/latest/docs/framework/octane/quick-start)
+> - [Preact Table](https://tanstack.com/table/latest/docs/framework/preact/quick-start)
+> - [React Table](https://tanstack.com/table/latest/docs/framework/react/react-table)
+> - [Solid Table](https://tanstack.com/table/latest/docs/framework/solid/solid-table)
+> - [Svelte Table](https://tanstack.com/table/latest/docs/framework/svelte/svelte-table)
+> - [Vue Table](https://tanstack.com/table/latest/docs/framework/vue/vue-table)
+> - [Alpine Table](https://tanstack.com/table/latest/docs/framework/alpine/alpine-table)
+> - [Ember Table](https://tanstack.com/table/latest/docs/framework/ember/ember-table)
A headless table library for building powerful datagrids with full control over markup, styles, and behavior.
diff --git a/packages/vue-table/skills/migrate-v8-to-v9/SKILL.md b/packages/vue-table/skills/migrate-v8-to-v9/SKILL.md
index a89642e24e..006d2eca0a 100644
--- a/packages/vue-table/skills/migrate-v8-to-v9/SKILL.md
+++ b/packages/vue-table/skills/migrate-v8-to-v9/SKILL.md
@@ -98,7 +98,7 @@ Row, cell, column, header, and related methods now live on shared prototypes and
### Logical column pinning
-There are no `left`/`right` aliases in beta.38.
+V9 has no `left`/`right` aliases.
| old | new |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
@@ -182,4 +182,4 @@ For `table.Subscribe`, use `children={(atoms) => ...}` explicitly.
## API Discovery
-Inspect `node_modules/@tanstack/vue-table/dist/index.d.ts` and `useTable.d.ts`; verify feature slots and exact beta APIs in `node_modules/@tanstack/table-core/dist/`. Do not reconstruct v9 from v8 memory.
+Inspect `node_modules/@tanstack/vue-table/dist/index.d.ts` and `useTable.d.ts`; verify feature slots and the exact installed v9 APIs in `node_modules/@tanstack/table-core/dist/`. Do not reconstruct v9 from v8 memory.