@tanstack/query-db-collection@1.0.4
·
1 commit
to main
since this release
Patch Changes
-
Fix data loss on component remount by implementing reference counting for QueryObserver lifecycle (#870)
What changed vs main:
Previously, when live query subscriptions unsubscribed, there was no tracking of which rows were still needed by other active queries. This caused data loss during remounts.
This PR adds reference counting infrastructure to properly manage QueryObserver lifecycle:
- Pass same predicates to
unloadSubsetthat were passed toloadSubset - Use them to compute the queryKey (via
generateQueryKeyFromOptions) - Use existing machinery (
queryToRowsmap) to find rows that query loaded - Decrement the ref count
- GC rows where count reaches 0 (no longer referenced by any active query)
Impact:
- Navigation back to previously loaded pages shows cached data immediately
- No unnecessary refetches during quick remounts (< gcTime)
- Multiple live queries with identical predicates correctly share QueryObservers
- Proper row-level cleanup when last subscriber leaves
- TanStack Query's cache lifecycle (gcTime) is fully respected
- No data leakage from in-flight requests when unsubscribing
- Pass same predicates to
-
Updated dependencies [
077fc1a]:- @tanstack/db@0.5.5