From 4afce6114b347ce57e95f59dc67f6483b249a383 Mon Sep 17 00:00:00 2001 From: gwansikk Date: Thu, 8 Jan 2026 07:55:04 +0900 Subject: [PATCH 1/4] perf(store): improve batch flush performance for large forms --- packages/store/src/scheduler.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/store/src/scheduler.ts b/packages/store/src/scheduler.ts index da36dda..89f6ebb 100644 --- a/packages/store/src/scheduler.ts +++ b/packages/store/src/scheduler.ts @@ -26,7 +26,7 @@ export const __derivedToStore = new WeakMap< >() export const __depsThatHaveWrittenThisTick = { - current: [] as Array | Store>, + current: new Set | Store>(), } let __isFlushing = false @@ -37,11 +37,11 @@ const __initialBatchValues = new Map, unknown>() function __flush_internals(relatedVals: ReadonlyArray>) { for (const derived of relatedVals) { - if (__depsThatHaveWrittenThisTick.current.includes(derived)) { + if (__depsThatHaveWrittenThisTick.current.has(derived)) { continue } - __depsThatHaveWrittenThisTick.current.push(derived) + __depsThatHaveWrittenThisTick.current.add(derived) derived.recompute() const stores = __derivedToStore.get(derived) @@ -109,7 +109,7 @@ export function __flush(store: Store) { const derivedVals = __storeToDerived.get(store) if (!derivedVals) continue - __depsThatHaveWrittenThisTick.current.push(store) + __depsThatHaveWrittenThisTick.current.add(store) __flush_internals(derivedVals) } @@ -125,7 +125,7 @@ export function __flush(store: Store) { } } finally { __isFlushing = false - __depsThatHaveWrittenThisTick.current = [] + __depsThatHaveWrittenThisTick.current.clear() __initialBatchValues.clear() } } From 7efb1566f15482a2815ca2f3fd828c23ec6aeab5 Mon Sep 17 00:00:00 2001 From: gwansikk Date: Thu, 8 Jan 2026 23:13:19 +0900 Subject: [PATCH 2/4] docs: update type definition for `__depsThatHaveWrittenThisTick` --- docs/reference/variables/depsThatHaveWrittenThisTick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/variables/depsThatHaveWrittenThisTick.md b/docs/reference/variables/depsThatHaveWrittenThisTick.md index c48d0df..f5c6d57 100644 --- a/docs/reference/variables/depsThatHaveWrittenThisTick.md +++ b/docs/reference/variables/depsThatHaveWrittenThisTick.md @@ -18,5 +18,5 @@ Defined in: [scheduler.ts:28](https://github.com/TanStack/store/blob/main/packag ```ts current: ( | Derived - | Store unknown>)[]; + | Set unknown>)[]; ``` From 5f9ee84cf11cb34f1a3c9dfa4768397b8f502583 Mon Sep 17 00:00:00 2001 From: gwansikk Date: Thu, 8 Jan 2026 23:33:55 +0900 Subject: [PATCH 3/4] chore: add changeset --- .changeset/orange-carrots-listen.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/orange-carrots-listen.md diff --git a/.changeset/orange-carrots-listen.md b/.changeset/orange-carrots-listen.md new file mode 100644 index 0000000..3dbfea0 --- /dev/null +++ b/.changeset/orange-carrots-listen.md @@ -0,0 +1,5 @@ +--- +'@tanstack/store': minor +--- + +refactor(store): replace array with set in \_\_depsThatHaveWrittenThisTick From 610fa0aadf07ca7bcf31ef381c338737e26969d0 Mon Sep 17 00:00:00 2001 From: Gwansik Kim Date: Thu, 8 Jan 2026 23:35:12 +0900 Subject: [PATCH 4/4] Apply suggestion from @gwansikk --- .changeset/orange-carrots-listen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/orange-carrots-listen.md b/.changeset/orange-carrots-listen.md index 3dbfea0..20f3f92 100644 --- a/.changeset/orange-carrots-listen.md +++ b/.changeset/orange-carrots-listen.md @@ -1,5 +1,5 @@ --- -'@tanstack/store': minor +'@tanstack/store': patch --- refactor(store): replace array with set in \_\_depsThatHaveWrittenThisTick