refactor(store): replace array with set in __depsThatHaveWrittenThisTick
#267
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Changes
I'm using TanStack Form for a large-scale form application. The project manages user-addable table rows (each row containing multiple inputs) along with 20-30 additional fields on a single page. During form submission, UI blocking of 2.7 seconds, and in some cases 8-10 seconds, was occurring.
After profiling, I identified that the
__flush_internalsfunction in@tanstack/storewas causing a performance bottleneck due to excessive recursive calls.Change the data structure of
__depsThatHaveWrittenThisTickfromArraytoSet, replacing O(n)includes()with O(1)has()for duplicate checking.Benchmark
Detailed Results
Array.includes()Set.has()Array.includes()Set.has()Array.includes()Set.has()Array.includes()Set.has()Array.includes()Set.has()✅ Checklist
pnpm test:pr.🚀 Release Impact