From d9c2ae8aaac20c124f08c53c4f19773c5a11d57b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Dec 2025 17:33:51 +0000 Subject: [PATCH] ci: Version Packages --- .changeset/fix-lane-change-layout.md | 31 -------- examples/angular/dynamic/package.json | 2 +- examples/angular/fixed/package.json | 2 +- examples/angular/infinite-scroll/package.json | 2 +- examples/angular/padding/package.json | 2 +- examples/angular/smooth-scroll/package.json | 2 +- examples/angular/sticky/package.json | 2 +- examples/angular/table/package.json | 2 +- examples/angular/variable/package.json | 2 +- examples/angular/window/package.json | 2 +- examples/lit/dynamic/package.json | 4 +- examples/lit/fixed/package.json | 4 +- examples/react/dynamic/package.json | 2 +- examples/react/fixed/package.json | 2 +- examples/react/infinite-scroll/package.json | 2 +- examples/react/padding/package.json | 2 +- examples/react/scroll-padding/package.json | 2 +- examples/react/smooth-scroll/package.json | 2 +- examples/react/sticky/package.json | 2 +- examples/react/table/package.json | 2 +- examples/react/variable/package.json | 2 +- examples/react/window/package.json | 2 +- examples/svelte/dynamic/package.json | 2 +- examples/svelte/fixed/package.json | 2 +- examples/svelte/infinite-scroll/package.json | 2 +- examples/svelte/smooth-scroll/package.json | 2 +- examples/svelte/sticky/package.json | 2 +- examples/svelte/table/package.json | 2 +- examples/vue/dynamic/package.json | 2 +- examples/vue/fixed/package.json | 2 +- examples/vue/infinite-scroll/package.json | 2 +- examples/vue/padding/package.json | 2 +- examples/vue/scroll-padding/package.json | 2 +- examples/vue/smooth-scroll/package.json | 2 +- examples/vue/sticky/package.json | 2 +- examples/vue/table/package.json | 2 +- examples/vue/variable/package.json | 2 +- packages/angular-virtual/CHANGELOG.md | 7 ++ packages/angular-virtual/package.json | 2 +- packages/lit-virtual/CHANGELOG.md | 7 ++ packages/lit-virtual/package.json | 2 +- packages/react-virtual/CHANGELOG.md | 7 ++ packages/react-virtual/package.json | 2 +- packages/solid-virtual/CHANGELOG.md | 7 ++ packages/solid-virtual/package.json | 2 +- packages/svelte-virtual/CHANGELOG.md | 7 ++ packages/svelte-virtual/package.json | 2 +- packages/virtual-core/CHANGELOG.md | 32 ++++++++ packages/virtual-core/package.json | 2 +- packages/vue-virtual/CHANGELOG.md | 7 ++ packages/vue-virtual/package.json | 2 +- pnpm-lock.yaml | 76 +++++++++---------- 52 files changed, 157 insertions(+), 114 deletions(-) delete mode 100644 .changeset/fix-lane-change-layout.md diff --git a/.changeset/fix-lane-change-layout.md b/.changeset/fix-lane-change-layout.md deleted file mode 100644 index 3298bb9e..00000000 --- a/.changeset/fix-lane-change-layout.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@tanstack/virtual-core': patch ---- - -Fix: Correct lane assignments when lane count changes dynamically - -Fixed a critical bug where changing the number of lanes dynamically would cause layout breakage with incorrect lane assignments. When the lane count changed (e.g., from 3 to 2 columns in a responsive masonry layout), some virtual items would retain their old lane numbers, causing out-of-bounds errors and broken layouts. - -**Root Cause**: After clearing measurements cache on lane change, the virtualizer was incorrectly restoring data from `initialMeasurementsCache`, which contained stale lane assignments from the previous lane count. - -**Fix**: Skip `initialMeasurementsCache` restoration during lane transitions by checking the `lanesSettling` flag. This ensures all measurements are recalculated with correct lane assignments for the new lane count. - -**Before**: - -```typescript -// With lanes = 2 -virtualItems.forEach((item) => { - columns[item.lane].push(item) // ❌ Error: item.lane could be 3 -}) -``` - -**After**: - -```typescript -// With lanes = 2 -virtualItems.forEach((item) => { - columns[item.lane].push(item) // ✅ item.lane is always 0 or 1 -}) -``` - -This fix is essential for responsive masonry layouts where column count changes based on viewport width. No performance impact as it only affects the lane change transition path. diff --git a/examples/angular/dynamic/package.json b/examples/angular/dynamic/package.json index da52251d..99211c20 100644 --- a/examples/angular/dynamic/package.json +++ b/examples/angular/dynamic/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", "@faker-js/faker": "^8.4.1", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/fixed/package.json b/examples/angular/fixed/package.json index b2d7e4c2..72c48398 100644 --- a/examples/angular/fixed/package.json +++ b/examples/angular/fixed/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^18.1.0", "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/infinite-scroll/package.json b/examples/angular/infinite-scroll/package.json index 61e0d0d8..a5a6def5 100644 --- a/examples/angular/infinite-scroll/package.json +++ b/examples/angular/infinite-scroll/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", "@tanstack/angular-query-experimental": "5.80.7", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/padding/package.json b/examples/angular/padding/package.json index 34bbe05e..d4b2255b 100644 --- a/examples/angular/padding/package.json +++ b/examples/angular/padding/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^18.1.0", "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/smooth-scroll/package.json b/examples/angular/smooth-scroll/package.json index de0d49d3..53711a68 100644 --- a/examples/angular/smooth-scroll/package.json +++ b/examples/angular/smooth-scroll/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^18.1.0", "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/sticky/package.json b/examples/angular/sticky/package.json index 311d5fbf..023e64ea 100644 --- a/examples/angular/sticky/package.json +++ b/examples/angular/sticky/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", "@faker-js/faker": "^8.4.1", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/table/package.json b/examples/angular/table/package.json index d9251587..85136156 100644 --- a/examples/angular/table/package.json +++ b/examples/angular/table/package.json @@ -19,7 +19,7 @@ "@angular/router": "^18.1.0", "@faker-js/faker": "^8.4.1", "@tanstack/angular-table": "8.21.3", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/variable/package.json b/examples/angular/variable/package.json index fb9bcf76..4417fe51 100644 --- a/examples/angular/variable/package.json +++ b/examples/angular/variable/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^18.1.0", "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/window/package.json b/examples/angular/window/package.json index 71698b04..ca64a517 100644 --- a/examples/angular/window/package.json +++ b/examples/angular/window/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^18.1.0", "@angular/platform-browser-dynamic": "^18.1.0", "@angular/router": "^18.1.0", - "@tanstack/angular-virtual": "^4.0.1", + "@tanstack/angular-virtual": "^4.0.2", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/lit/dynamic/package.json b/examples/lit/dynamic/package.json index ecb8a203..bf96a36c 100644 --- a/examples/lit/dynamic/package.json +++ b/examples/lit/dynamic/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/lit-virtual": "^3.13.14", - "@tanstack/virtual-core": "^3.13.13", + "@tanstack/lit-virtual": "^3.13.15", + "@tanstack/virtual-core": "^3.13.14", "lit": "^3.3.0" }, "devDependencies": { diff --git a/examples/lit/fixed/package.json b/examples/lit/fixed/package.json index aac3e741..82fb92dd 100644 --- a/examples/lit/fixed/package.json +++ b/examples/lit/fixed/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/lit-virtual": "^3.13.14", - "@tanstack/virtual-core": "^3.13.13", + "@tanstack/lit-virtual": "^3.13.15", + "@tanstack/virtual-core": "^3.13.14", "lit": "^3.3.0" }, "devDependencies": { diff --git a/examples/react/dynamic/package.json b/examples/react/dynamic/package.json index 31778823..ba039357 100644 --- a/examples/react/dynamic/package.json +++ b/examples/react/dynamic/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/fixed/package.json b/examples/react/fixed/package.json index 2b7a387a..715c78d5 100644 --- a/examples/react/fixed/package.json +++ b/examples/react/fixed/package.json @@ -8,7 +8,7 @@ "serve": "vite preview" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/infinite-scroll/package.json b/examples/react/infinite-scroll/package.json index 71901015..6203cbba 100644 --- a/examples/react/infinite-scroll/package.json +++ b/examples/react/infinite-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@tanstack/react-query": "^5.80.7", - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/padding/package.json b/examples/react/padding/package.json index 5b87e4ea..1c0b01a3 100644 --- a/examples/react/padding/package.json +++ b/examples/react/padding/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/scroll-padding/package.json b/examples/react/scroll-padding/package.json index d66b478e..c4a38b39 100644 --- a/examples/react/scroll-padding/package.json +++ b/examples/react/scroll-padding/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@react-hookz/web": "^25.1.1", - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/smooth-scroll/package.json b/examples/react/smooth-scroll/package.json index 286871a3..4f6e2696 100644 --- a/examples/react/smooth-scroll/package.json +++ b/examples/react/smooth-scroll/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/sticky/package.json b/examples/react/sticky/package.json index 9646320b..9121d80d 100644 --- a/examples/react/sticky/package.json +++ b/examples/react/sticky/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/examples/react/table/package.json b/examples/react/table/package.json index e7793085..02a9d1d8 100644 --- a/examples/react/table/package.json +++ b/examples/react/table/package.json @@ -11,7 +11,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/variable/package.json b/examples/react/variable/package.json index 5f8091e1..d1f704df 100644 --- a/examples/react/variable/package.json +++ b/examples/react/variable/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/window/package.json b/examples/react/window/package.json index c19cec47..ec77b72a 100644 --- a/examples/react/window/package.json +++ b/examples/react/window/package.json @@ -8,7 +8,7 @@ "serve": "vite preview" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.13", + "@tanstack/react-virtual": "^3.13.14", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/svelte/dynamic/package.json b/examples/svelte/dynamic/package.json index 173788cc..e0970f00 100644 --- a/examples/svelte/dynamic/package.json +++ b/examples/svelte/dynamic/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.13" + "@tanstack/svelte-virtual": "^3.13.14" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/fixed/package.json b/examples/svelte/fixed/package.json index c94142c1..096011e9 100644 --- a/examples/svelte/fixed/package.json +++ b/examples/svelte/fixed/package.json @@ -9,7 +9,7 @@ "check": "svelte-check --tsconfig ./tsconfig.json" }, "dependencies": { - "@tanstack/svelte-virtual": "^3.13.13" + "@tanstack/svelte-virtual": "^3.13.14" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/infinite-scroll/package.json b/examples/svelte/infinite-scroll/package.json index 1ca0d27c..92bc95a9 100644 --- a/examples/svelte/infinite-scroll/package.json +++ b/examples/svelte/infinite-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@tanstack/svelte-query": "^5.80.7", - "@tanstack/svelte-virtual": "^3.13.13" + "@tanstack/svelte-virtual": "^3.13.14" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/smooth-scroll/package.json b/examples/svelte/smooth-scroll/package.json index f555b68d..893c8f99 100644 --- a/examples/svelte/smooth-scroll/package.json +++ b/examples/svelte/smooth-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.13" + "@tanstack/svelte-virtual": "^3.13.14" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/sticky/package.json b/examples/svelte/sticky/package.json index c0ad3343..d7752049 100644 --- a/examples/svelte/sticky/package.json +++ b/examples/svelte/sticky/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.13", + "@tanstack/svelte-virtual": "^3.13.14", "lodash": "^4.17.21" }, "devDependencies": { diff --git a/examples/svelte/table/package.json b/examples/svelte/table/package.json index 232532df..f6486d0e 100644 --- a/examples/svelte/table/package.json +++ b/examples/svelte/table/package.json @@ -11,7 +11,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/svelte-table": "^8.21.3", - "@tanstack/svelte-virtual": "^3.13.13" + "@tanstack/svelte-virtual": "^3.13.14" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/vue/dynamic/package.json b/examples/vue/dynamic/package.json index 70ebcebd..22f911ad 100644 --- a/examples/vue/dynamic/package.json +++ b/examples/vue/dynamic/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/fixed/package.json b/examples/vue/fixed/package.json index 3c4cf260..bb811322 100644 --- a/examples/vue/fixed/package.json +++ b/examples/vue/fixed/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/infinite-scroll/package.json b/examples/vue/infinite-scroll/package.json index f6739878..63448174 100644 --- a/examples/vue/infinite-scroll/package.json +++ b/examples/vue/infinite-scroll/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@tanstack/vue-query": "^5.80.7", - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/padding/package.json b/examples/vue/padding/package.json index 004b70c6..4dd13423 100644 --- a/examples/vue/padding/package.json +++ b/examples/vue/padding/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/scroll-padding/package.json b/examples/vue/scroll-padding/package.json index 883f1d32..6256cc14 100644 --- a/examples/vue/scroll-padding/package.json +++ b/examples/vue/scroll-padding/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "@vueuse/core": "^12.8.2", "vue": "^3.5.16" }, diff --git a/examples/vue/smooth-scroll/package.json b/examples/vue/smooth-scroll/package.json index 0aa86018..d4c329f4 100644 --- a/examples/vue/smooth-scroll/package.json +++ b/examples/vue/smooth-scroll/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/sticky/package.json b/examples/vue/sticky/package.json index fe0815ed..1a0f0b21 100644 --- a/examples/vue/sticky/package.json +++ b/examples/vue/sticky/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "lodash": "^4.17.21", "vue": "^3.5.16" }, diff --git a/examples/vue/table/package.json b/examples/vue/table/package.json index 5d7f7a48..6c0e6628 100644 --- a/examples/vue/table/package.json +++ b/examples/vue/table/package.json @@ -10,7 +10,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/vue-table": "^8.21.3", - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/variable/package.json b/examples/vue/variable/package.json index 8245c625..465285f6 100644 --- a/examples/vue/variable/package.json +++ b/examples/vue/variable/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.13", + "@tanstack/vue-virtual": "^3.13.14", "vue": "^3.5.16" }, "devDependencies": { diff --git a/packages/angular-virtual/CHANGELOG.md b/packages/angular-virtual/CHANGELOG.md index df69e507..2d4a5831 100644 --- a/packages/angular-virtual/CHANGELOG.md +++ b/packages/angular-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/angular-virtual +## 4.0.2 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 4.0.1 ### Patch Changes diff --git a/packages/angular-virtual/package.json b/packages/angular-virtual/package.json index 8554a820..50eaf3b6 100644 --- a/packages/angular-virtual/package.json +++ b/packages/angular-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-virtual", - "version": "4.0.1", + "version": "4.0.2", "description": "Headless UI for virtualizing scrollable elements in Angular", "author": "Garrett Darnell", "license": "MIT", diff --git a/packages/lit-virtual/CHANGELOG.md b/packages/lit-virtual/CHANGELOG.md index dcc944da..0a12ec4d 100644 --- a/packages/lit-virtual/CHANGELOG.md +++ b/packages/lit-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/lit-virtual +## 3.13.15 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 3.13.14 ### Patch Changes diff --git a/packages/lit-virtual/package.json b/packages/lit-virtual/package.json index 3e4809ed..2cc4be0a 100644 --- a/packages/lit-virtual/package.json +++ b/packages/lit-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/lit-virtual", - "version": "3.13.14", + "version": "3.13.15", "description": "Headless UI for virtualizing scrollable elements in Lit", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-virtual/CHANGELOG.md b/packages/react-virtual/CHANGELOG.md index cf8fcb9a..fd03b524 100644 --- a/packages/react-virtual/CHANGELOG.md +++ b/packages/react-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/react-virtual +## 3.13.14 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 3.13.13 ### Patch Changes diff --git a/packages/react-virtual/package.json b/packages/react-virtual/package.json index c2560038..40e92e0d 100644 --- a/packages/react-virtual/package.json +++ b/packages/react-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-virtual", - "version": "3.13.13", + "version": "3.13.14", "description": "Headless UI for virtualizing scrollable elements in React", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/solid-virtual/CHANGELOG.md b/packages/solid-virtual/CHANGELOG.md index 34760994..d8504eb1 100644 --- a/packages/solid-virtual/CHANGELOG.md +++ b/packages/solid-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/solid-virtual +## 3.13.14 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 3.13.13 ### Patch Changes diff --git a/packages/solid-virtual/package.json b/packages/solid-virtual/package.json index e372f62f..84d1fbc0 100644 --- a/packages/solid-virtual/package.json +++ b/packages/solid-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-virtual", - "version": "3.13.13", + "version": "3.13.14", "description": "Headless UI for virtualizing scrollable elements in Solid", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/svelte-virtual/CHANGELOG.md b/packages/svelte-virtual/CHANGELOG.md index 8c268c6b..773cb844 100644 --- a/packages/svelte-virtual/CHANGELOG.md +++ b/packages/svelte-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/svelte-virtual +## 3.13.14 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 3.13.13 ### Patch Changes diff --git a/packages/svelte-virtual/package.json b/packages/svelte-virtual/package.json index 9406011f..a989c2d9 100644 --- a/packages/svelte-virtual/package.json +++ b/packages/svelte-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-virtual", - "version": "3.13.13", + "version": "3.13.14", "description": "Headless UI for virtualizing scrollable elements in Svelte", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/virtual-core/CHANGELOG.md b/packages/virtual-core/CHANGELOG.md index e521ab58..08397e35 100644 --- a/packages/virtual-core/CHANGELOG.md +++ b/packages/virtual-core/CHANGELOG.md @@ -1,5 +1,37 @@ # @tanstack/virtual-core +## 3.13.14 + +### Patch Changes + +- Fix: Correct lane assignments when lane count changes dynamically ([#1095](https://github.com/TanStack/virtual/pull/1095)) + + Fixed a critical bug where changing the number of lanes dynamically would cause layout breakage with incorrect lane assignments. When the lane count changed (e.g., from 3 to 2 columns in a responsive masonry layout), some virtual items would retain their old lane numbers, causing out-of-bounds errors and broken layouts. + + **Root Cause**: After clearing measurements cache on lane change, the virtualizer was incorrectly restoring data from `initialMeasurementsCache`, which contained stale lane assignments from the previous lane count. + + **Fix**: Skip `initialMeasurementsCache` restoration during lane transitions by checking the `lanesSettling` flag. This ensures all measurements are recalculated with correct lane assignments for the new lane count. + + **Before**: + + ```typescript + // With lanes = 2 + virtualItems.forEach((item) => { + columns[item.lane].push(item) // ❌ Error: item.lane could be 3 + }) + ``` + + **After**: + + ```typescript + // With lanes = 2 + virtualItems.forEach((item) => { + columns[item.lane].push(item) // ✅ item.lane is always 0 or 1 + }) + ``` + + This fix is essential for responsive masonry layouts where column count changes based on viewport width. No performance impact as it only affects the lane change transition path. + ## 3.13.13 ### Patch Changes diff --git a/packages/virtual-core/package.json b/packages/virtual-core/package.json index 466dcc18..d2eb7e6e 100644 --- a/packages/virtual-core/package.json +++ b/packages/virtual-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/virtual-core", - "version": "3.13.13", + "version": "3.13.14", "description": "Headless UI for virtualizing scrollable elements in TS/JS + Frameworks", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/vue-virtual/CHANGELOG.md b/packages/vue-virtual/CHANGELOG.md index 2dea356c..4c1c8c33 100644 --- a/packages/vue-virtual/CHANGELOG.md +++ b/packages/vue-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/vue-virtual +## 3.13.14 + +### Patch Changes + +- Updated dependencies [[`6d9274c`](https://github.com/TanStack/virtual/commit/6d9274c3f0a9e64450b5829872079a65277bc654)]: + - @tanstack/virtual-core@3.13.14 + ## 3.13.13 ### Patch Changes diff --git a/packages/vue-virtual/package.json b/packages/vue-virtual/package.json index eb80d597..501d232b 100644 --- a/packages/vue-virtual/package.json +++ b/packages/vue-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-virtual", - "version": "3.13.13", + "version": "3.13.14", "description": "Headless UI for virtualizing scrollable elements in Vue", "author": "Tanner Linsley", "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 66817382..ca85e1a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,7 +102,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -154,7 +154,7 @@ importers: specifier: ^18.1.0 version: 18.2.14(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@18.2.14(@angular/animations@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -209,7 +209,7 @@ importers: specifier: 5.80.7 version: 5.80.7(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -261,7 +261,7 @@ importers: specifier: ^18.1.0 version: 18.2.14(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@18.2.14(@angular/animations@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -313,7 +313,7 @@ importers: specifier: ^18.1.0 version: 18.2.14(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@18.2.14(@angular/animations@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -368,7 +368,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -426,7 +426,7 @@ importers: specifier: 8.21.3 version: 8.21.3(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -478,7 +478,7 @@ importers: specifier: ^18.1.0 version: 18.2.14(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@18.2.14(@angular/animations@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -530,7 +530,7 @@ importers: specifier: ^18.1.0 version: 18.2.14(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@18.2.14(@angular/animations@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@18.2.14(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^4.0.1 + specifier: ^4.0.2 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -561,10 +561,10 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/lit-virtual': - specifier: ^3.13.14 + specifier: ^3.13.15 version: link:../../../packages/lit-virtual '@tanstack/virtual-core': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/virtual-core lit: specifier: ^3.3.0 @@ -586,10 +586,10 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/lit-virtual': - specifier: ^3.13.14 + specifier: ^3.13.15 version: link:../../../packages/lit-virtual '@tanstack/virtual-core': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/virtual-core lit: specifier: ^3.3.0 @@ -611,7 +611,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -642,7 +642,7 @@ importers: examples/react/fixed: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -676,7 +676,7 @@ importers: specifier: ^5.80.7 version: 5.90.5(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -701,7 +701,7 @@ importers: examples/react/padding: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -729,7 +729,7 @@ importers: specifier: ^25.1.1 version: 25.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -754,7 +754,7 @@ importers: examples/react/smooth-scroll: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -782,7 +782,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual lodash: specifier: ^4.17.21 @@ -819,7 +819,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -844,7 +844,7 @@ importers: examples/react/variable: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -869,7 +869,7 @@ importers: examples/react/window: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -903,7 +903,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -931,7 +931,7 @@ importers: examples/svelte/fixed: dependencies: '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -962,7 +962,7 @@ importers: specifier: ^5.80.7 version: 5.90.2(svelte@4.2.20) '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -993,7 +993,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -1024,7 +1024,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual lodash: specifier: ^4.17.21 @@ -1061,7 +1061,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(svelte@4.2.20) '@tanstack/svelte-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -1092,7 +1092,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1117,7 +1117,7 @@ importers: examples/vue/fixed: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1145,7 +1145,7 @@ importers: specifier: ^5.80.7 version: 5.90.5(vue@3.5.22(typescript@5.4.5)) '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1170,7 +1170,7 @@ importers: examples/vue/padding: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1195,7 +1195,7 @@ importers: examples/vue/scroll-padding: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual '@vueuse/core': specifier: ^12.8.2 @@ -1223,7 +1223,7 @@ importers: examples/vue/smooth-scroll: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1251,7 +1251,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual lodash: specifier: ^4.17.21 @@ -1288,7 +1288,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(vue@3.5.22(typescript@5.4.5)) '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1313,7 +1313,7 @@ importers: examples/vue/variable: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.13 + specifier: ^3.13.14 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16