From 4195e0593b842873ad3e8fc1f7e9eb08af4d395d Mon Sep 17 00:00:00 2001 From: Levi <32551245+LeviWilliams@users.noreply.github.com> Date: Tue, 3 Feb 2026 13:44:37 -0600 Subject: [PATCH 1/3] Clear stale sizes on data change --- src/core/calculateItemsInView.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/calculateItemsInView.ts b/src/core/calculateItemsInView.ts index 8562765f..44d95a71 100644 --- a/src/core/calculateItemsInView.ts +++ b/src/core/calculateItemsInView.ts @@ -264,6 +264,16 @@ export function calculateItemsInView( indexByKey.clear(); idCache.length = 0; positions.clear(); + const { sizesKnown } = state; + const staleKeys = new Set([...sizesKnown.keys(), ...sizes.keys()]); + for (let i = 0; i < data.length; i++) { + const id = keyExtractor ? keyExtractor(data[i], i) : String(i); + staleKeys.delete(id); + } + for (const key of staleKeys) { + sizesKnown.delete(key); + sizes.delete(key); + } } // Update all positions upfront so we can assume they're correct From 5df182d5dc4c5cbd6f6042cf0d0de6a40175a1cc Mon Sep 17 00:00:00 2001 From: Levi <32551245+LeviWilliams@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:14:51 -0600 Subject: [PATCH 2/3] Don't stringify default id --- src/core/calculateItemsInView.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/calculateItemsInView.ts b/src/core/calculateItemsInView.ts index 44d95a71..b58517c7 100644 --- a/src/core/calculateItemsInView.ts +++ b/src/core/calculateItemsInView.ts @@ -267,7 +267,8 @@ export function calculateItemsInView( const { sizesKnown } = state; const staleKeys = new Set([...sizesKnown.keys(), ...sizes.keys()]); for (let i = 0; i < data.length; i++) { - const id = keyExtractor ? keyExtractor(data[i], i) : String(i); + const id = keyExtractor ? keyExtractor(data[i], i) : i; + // @ts-expect-error Types will match at runtime staleKeys.delete(id); } for (const key of staleKeys) { From 0c4ac3ab295bb214915b7de3b13d82623ba458e8 Mon Sep 17 00:00:00 2001 From: Levi <32551245+LeviWilliams@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:08:09 -0600 Subject: [PATCH 3/3] Leverage preexisting util --- src/core/calculateItemsInView.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/calculateItemsInView.ts b/src/core/calculateItemsInView.ts index b58517c7..ddf408b7 100644 --- a/src/core/calculateItemsInView.ts +++ b/src/core/calculateItemsInView.ts @@ -267,8 +267,7 @@ export function calculateItemsInView( const { sizesKnown } = state; const staleKeys = new Set([...sizesKnown.keys(), ...sizes.keys()]); for (let i = 0; i < data.length; i++) { - const id = keyExtractor ? keyExtractor(data[i], i) : i; - // @ts-expect-error Types will match at runtime + const id = getId(state, i); staleKeys.delete(id); } for (const key of staleKeys) {