diff --git a/apps/www/__registry__/index.ts b/apps/www/__registry__/index.ts
index fa662581..4f3683db 100644
--- a/apps/www/__registry__/index.ts
+++ b/apps/www/__registry__/index.ts
@@ -521,6 +521,13 @@ export const Index = {
component: () => import("../src/lib/registry/default/example/DataTableDemoColumn.vue").then((m) => m.default),
files: ["../src/lib/registry/default/example/DataTableDemoColumn.vue"],
},
+ "DataTableReactiveDemo": {
+ name: "DataTableReactiveDemo",
+ type: "components:example",
+ registryDependencies: ["button","checkbox","dropdown-menu","input","table","utils"],
+ component: () => import("../src/lib/registry/default/example/DataTableReactiveDemo.vue").then((m) => m.default),
+ files: ["../src/lib/registry/default/example/DataTableReactiveDemo.vue"],
+ },
"DatePickerDemo": {
name: "DatePickerDemo",
type: "components:example",
@@ -2013,6 +2020,13 @@ export const Index = {
component: () => import("../src/lib/registry/new-york/example/DataTableDemoColumn.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/example/DataTableDemoColumn.vue"],
},
+ "DataTableReactiveDemo": {
+ name: "DataTableReactiveDemo",
+ type: "components:example",
+ registryDependencies: ["button","checkbox","dropdown-menu","input","table","utils"],
+ component: () => import("../src/lib/registry/new-york/example/DataTableReactiveDemo.vue").then((m) => m.default),
+ files: ["../src/lib/registry/new-york/example/DataTableReactiveDemo.vue"],
+ },
"DatePickerDemo": {
name: "DatePickerDemo",
type: "components:example",
diff --git a/apps/www/src/content/docs/components/data-table.md b/apps/www/src/content/docs/components/data-table.md
index b43074b4..eb355716 100644
--- a/apps/www/src/content/docs/components/data-table.md
+++ b/apps/www/src/content/docs/components/data-table.md
@@ -55,6 +55,20 @@ npm install @tanstack/vue-table
+### Reactive Table
+
+A reactive table was added in `v8.20.0` of the TanStack Table. You can see the [docs](https://tanstack.com/table/latest/docs/framework/vue/guide/table-state#using-reactive-data) for more information. We added an example where we are randomizing `status` column. One main point is that you need to mutate **full** data, as it is a `shallowRef` object.
+
+> __*⚠️ `shallowRef` is used under the hood for performance reasons, meaning that the data is not deeply reactive, only the `.value` is. To update the data you have to mutate the data directly.*__
+
+Relative PR: [Tanstack/table #5687](https://github.com/TanStack/table/pull/5687#issuecomment-2281067245)
+
+If you want to mutate `props.data`, you should use [`defineModel`](https://vuejs.org/api/sfc-script-setup.html#definemodel).
+
+There is no difference between using `ref` or `shallowRef` for your data object; it will be automatically mutated by the TanStack Table to `shallowRef`.
+
+
+
## Prerequisites
We are going to build a table to show recent payments. Here's what our data looks like:
diff --git a/apps/www/src/lib/registry/default/example/DataTableReactiveDemo.vue b/apps/www/src/lib/registry/default/example/DataTableReactiveDemo.vue
new file mode 100644
index 00000000..b89847dc
--- /dev/null
+++ b/apps/www/src/lib/registry/default/example/DataTableReactiveDemo.vue
@@ -0,0 +1,273 @@
+
+
+
+