diff --git a/packages/preact-query/src/__tests__/useQueries.test.tsx b/packages/preact-query/src/__tests__/useQueries.test.tsx
index 05c9ad613c..d0a77bca02 100644
--- a/packages/preact-query/src/__tests__/useQueries.test.tsx
+++ b/packages/preact-query/src/__tests__/useQueries.test.tsx
@@ -13,6 +13,7 @@ import {
} from 'vitest'
import {
+ IsRestoringProvider,
QueryCache,
QueryClient,
queryOptions,
@@ -1812,4 +1813,127 @@ describe('useQueries', () => {
expect(renderCount).toBeLessThan(10)
expect(rendered.getByTestId('query-count').textContent).toBe('queries: 1')
})
+
+ it('should not fetch for the duration of the restoring period when isRestoring is true', async () => {
+ const key1 = queryKey()
+ const key2 = queryKey()
+ const queryFn1 = vi.fn(() => sleep(10).then(() => 'data1'))
+ const queryFn2 = vi.fn(() => sleep(10).then(() => 'data2'))
+
+ function Page() {
+ const results = useQueries({
+ queries: [
+ { queryKey: key1, queryFn: queryFn1 },
+ { queryKey: key2, queryFn: queryFn2 },
+ ],
+ })
+
+ return (
+
+
{results[0]?.status}
+
{results[1]?.status}
+
{results[0]?.fetchStatus}
+
{results[1]?.fetchStatus}
+
{results[0]?.data ?? 'undefined'}
+
{results[1]?.data ?? 'undefined'}
+
+ )
+ }
+
+ const rendered = renderWithClient(
+ queryClient,
+
+
+ ,
+ )
+
+ await vi.advanceTimersByTimeAsync(0)
+
+ expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
+ expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
+ expect(queryFn1).toHaveBeenCalledTimes(0)
+ expect(queryFn2).toHaveBeenCalledTimes(0)
+
+ await vi.advanceTimersByTimeAsync(11)
+
+ expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
+ expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
+ expect(queryFn1).toHaveBeenCalledTimes(0)
+ expect(queryFn2).toHaveBeenCalledTimes(0)
+ })
+
+ it('should not fetch queries with different durations for the duration of the restoring period when isRestoring is true', async () => {
+ const key1 = queryKey()
+ const key2 = queryKey()
+ const queryFn1 = vi.fn(() => sleep(10).then(() => 'data1'))
+ const queryFn2 = vi.fn(() => sleep(20).then(() => 'data2'))
+
+ function Page() {
+ const results = useQueries({
+ queries: [
+ { queryKey: key1, queryFn: queryFn1 },
+ { queryKey: key2, queryFn: queryFn2 },
+ ],
+ })
+
+ return (
+
+
{results[0]?.status}
+
{results[1]?.status}
+
{results[0]?.fetchStatus}
+
{results[1]?.fetchStatus}
+
{results[0]?.data ?? 'undefined'}
+
{results[1]?.data ?? 'undefined'}
+
+ )
+ }
+
+ const rendered = renderWithClient(
+ queryClient,
+
+
+ ,
+ )
+
+ await vi.advanceTimersByTimeAsync(0)
+
+ expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
+ expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
+ expect(queryFn1).toHaveBeenCalledTimes(0)
+ expect(queryFn2).toHaveBeenCalledTimes(0)
+
+ await vi.advanceTimersByTimeAsync(11)
+
+ expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
+ expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
+ expect(queryFn1).toHaveBeenCalledTimes(0)
+ expect(queryFn2).toHaveBeenCalledTimes(0)
+
+ await vi.advanceTimersByTimeAsync(10)
+
+ expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
+ expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
+ expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
+ expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
+ expect(queryFn1).toHaveBeenCalledTimes(0)
+ expect(queryFn2).toHaveBeenCalledTimes(0)
+ })
})