File tree Expand file tree Collapse file tree 3 files changed +29
-16
lines changed
packages/query-db-collection Expand file tree Collapse file tree 3 files changed +29
-16
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @tanstack/query-db-collection ' : patch
3+ ---
4+
5+ Fix on-demand sync behavior so the full TanStack Query lifecycle is respected.
6+
7+ This patch resolves an issue where using on-demand synchronization could break the query lifecycle, including the error reported in https://github.com/TanStack/db/issues/998.
Original file line number Diff line number Diff line change @@ -692,13 +692,16 @@ export function queryCollectionOptions(
692692 // Query is still loading, wait for the first result
693693 return new Promise < void > ( ( resolve , reject ) => {
694694 const unsubscribe = observer . subscribe ( ( result ) => {
695- if ( result . isSuccess ) {
696- unsubscribe ( )
697- resolve ( )
698- } else if ( result . isError ) {
699- unsubscribe ( )
700- reject ( result . error )
701- }
695+ // Use a microtask in case `subscribe` is called synchronously, before `unsubscribe` is initialized
696+ queueMicrotask ( ( ) => {
697+ if ( result . isSuccess ) {
698+ unsubscribe ( )
699+ resolve ( )
700+ } else if ( result . isError ) {
701+ unsubscribe ( )
702+ reject ( result . error )
703+ }
704+ } )
702705 } )
703706 } )
704707 }
@@ -745,13 +748,16 @@ export function queryCollectionOptions(
745748 // Create a promise that resolves when the query result is first available
746749 const readyPromise = new Promise < void > ( ( resolve , reject ) => {
747750 const unsubscribe = localObserver . subscribe ( ( result ) => {
748- if ( result . isSuccess ) {
749- unsubscribe ( )
750- resolve ( )
751- } else if ( result . isError ) {
752- unsubscribe ( )
753- reject ( result . error )
754- }
751+ // Use a microtask in case `subscribe` is called synchronously, before `unsubscribe` is initialized
752+ queueMicrotask ( ( ) => {
753+ if ( result . isSuccess ) {
754+ unsubscribe ( )
755+ resolve ( )
756+ } else if ( result . isError ) {
757+ unsubscribe ( )
758+ reject ( result . error )
759+ }
760+ } )
755761 } )
756762 } )
757763
Original file line number Diff line number Diff line change @@ -4219,7 +4219,7 @@ describe(`QueryCollection`, () => {
42194219 defaultOptions : {
42204220 queries : {
42214221 gcTime : 5 * 60 * 1000 , // 5 minutes
4222- staleTime : 0 ,
4222+ staleTime : Infinity , // set an Infinity staleTime to prevent a refetch
42234223 retry : false ,
42244224 } ,
42254225 } ,
@@ -4562,7 +4562,7 @@ describe(`QueryCollection`, () => {
45624562 const testQueryClient = new QueryClient ( {
45634563 defaultOptions : {
45644564 queries : {
4565- staleTime : 0 ,
4565+ staleTime : Infinity , // set an Infinity staleTime to prevent a refetch
45664566 gcTime : 300 ,
45674567 retry : false ,
45684568 } ,
You can’t perform that action at this time.
0 commit comments