From 56870c8a6944e1d14f510ee892853dfd259177e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Curley?= Date: Fri, 8 May 2026 18:13:34 +0100 Subject: [PATCH 1/5] feat(preact-query): use new methods for usePrefetchQuery plus tests --- .changeset/cute-cloths-switch.md | 5 ++ .../src/__tests__/useInfiniteQuery.test-d.tsx | 12 +++++ .../usePrefetchInfiniteQuery.test-d.tsx | 23 ++++++++- .../src/__tests__/usePrefetchQuery.test-d.tsx | 16 +++++++ packages/preact-query/src/types.ts | 48 ++++++++++++++++--- .../src/usePrefetchInfiniteQuery.tsx | 15 +++--- .../preact-query/src/usePrefetchQuery.tsx | 16 +++++-- 7 files changed, 115 insertions(+), 20 deletions(-) create mode 100644 .changeset/cute-cloths-switch.md diff --git a/.changeset/cute-cloths-switch.md b/.changeset/cute-cloths-switch.md new file mode 100644 index 00000000000..9106e50a103 --- /dev/null +++ b/.changeset/cute-cloths-switch.md @@ -0,0 +1,5 @@ +--- +'@tanstack/preact-query': minor +--- + +preact-query: update usePrefetchQuery and usePrefetchInfiniteQuery to use queryClient.query and queryClient.infiniteQuery diff --git a/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx b/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx index 11fd40f392e..20ef2cdaa77 100644 --- a/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx +++ b/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx @@ -40,6 +40,18 @@ describe('pageParam', () => { }) }) + it('initialPageParam should define type of param passed to queryFunctionContext for infiniteQuery', () => { + const queryClient = new QueryClient() + queryClient.infiniteQuery({ + queryKey: ['key'], + queryFn: ({ pageParam }) => { + expectTypeOf(pageParam).toEqualTypeOf() + return Promise.resolve(pageParam) + }, + initialPageParam: 1, + }) + }) + it('initialPageParam should define type of param passed to queryFunctionContext for prefetchInfiniteQuery', () => { const queryClient = new QueryClient() queryClient.prefetchInfiniteQuery({ diff --git a/packages/preact-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx b/packages/preact-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx index 048f340991f..2c160bcb6c4 100644 --- a/packages/preact-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx +++ b/packages/preact-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx @@ -1,7 +1,7 @@ import { queryKey } from '@tanstack/query-test-utils' import { assertType, describe, expectTypeOf, it } from 'vitest' -import { usePrefetchInfiniteQuery } from '..' +import { skipToken, usePrefetchInfiniteQuery } from '..' describe('usePrefetchInfiniteQuery', () => { it('should return nothing', () => { @@ -59,4 +59,25 @@ describe('usePrefetchInfiniteQuery', () => { }), ) }) + + it('should not allow skipToken in queryFn', () => { + assertType( + usePrefetchInfiniteQuery({ + queryKey: queryKey(), + // @ts-expect-error + queryFn: skipToken, + initialPageParam: 1, + getNextPageParam: () => 1, + }), + ) + assertType( + usePrefetchInfiniteQuery({ + queryKey: queryKey(), + // @ts-expect-error + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + }), + ) + }) }) diff --git a/packages/preact-query/src/__tests__/usePrefetchQuery.test-d.tsx b/packages/preact-query/src/__tests__/usePrefetchQuery.test-d.tsx index 6f5d5102514..b50a0af1b06 100644 --- a/packages/preact-query/src/__tests__/usePrefetchQuery.test-d.tsx +++ b/packages/preact-query/src/__tests__/usePrefetchQuery.test-d.tsx @@ -13,6 +13,22 @@ describe('usePrefetchQuery', () => { expectTypeOf(result).toEqualTypeOf() }) + it('should forward query data and query key types', () => { + type CustomQueryKey = readonly ['key', number] + + usePrefetchQuery, CustomQueryKey>({ + queryKey: ['key', 1], + queryFn: (context) => { + expectTypeOf(context.queryKey).toEqualTypeOf() + return Promise.resolve('data') + }, + select: (data) => { + expectTypeOf(data).toEqualTypeOf>() + return data.length + }, + }) + }) + it('should not allow refetchInterval, enabled or throwOnError options', () => { assertType( usePrefetchQuery({ diff --git a/packages/preact-query/src/types.ts b/packages/preact-query/src/types.ts index 135af5a5261..f279c8973c7 100644 --- a/packages/preact-query/src/types.ts +++ b/packages/preact-query/src/types.ts @@ -4,8 +4,8 @@ import type { DefinedInfiniteQueryObserverResult, DefinedQueryObserverResult, DistributiveOmit, - FetchQueryOptions, InfiniteData, + InfiniteQueryExecuteOptions, InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutateFunction, @@ -13,6 +13,7 @@ import type { MutationObserverResult, OmitKeyof, Override, + QueryExecuteOptions, QueryKey, QueryObserverOptions, QueryObserverResult, @@ -46,17 +47,52 @@ export interface UseBaseQueryOptions< subscribed?: boolean } -export interface UsePrefetchQueryOptions< +export type UsePrefetchQueryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, + TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, -> extends OmitKeyof< - FetchQueryOptions, +> = DistributiveOmit< + QueryExecuteOptions, 'queryFn' -> { +> & { queryFn?: Exclude< - FetchQueryOptions['queryFn'], + QueryExecuteOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey + >['queryFn'], + SkipToken + > +} + +export type UsePrefetchInfiniteQueryOptions< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +> = DistributiveOmit< + InfiniteQueryExecuteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + >, + 'queryFn' +> & { + queryFn?: Exclude< + InfiniteQueryExecuteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + >['queryFn'], SkipToken > } diff --git a/packages/preact-query/src/usePrefetchInfiniteQuery.tsx b/packages/preact-query/src/usePrefetchInfiniteQuery.tsx index e408e345220..9d11800a2be 100644 --- a/packages/preact-query/src/usePrefetchInfiniteQuery.tsx +++ b/packages/preact-query/src/usePrefetchInfiniteQuery.tsx @@ -1,12 +1,9 @@ -import type { - DefaultError, - FetchInfiniteQueryOptions, - QueryClient, - QueryKey, -} from '@tanstack/query-core' - +import { noop } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' +import type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core' +import type { UsePrefetchInfiniteQueryOptions } from './types' + export function usePrefetchInfiniteQuery< TQueryFnData = unknown, TError = DefaultError, @@ -14,7 +11,7 @@ export function usePrefetchInfiniteQuery< TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( - options: FetchInfiniteQueryOptions< + options: UsePrefetchInfiniteQueryOptions< TQueryFnData, TError, TData, @@ -26,6 +23,6 @@ export function usePrefetchInfiniteQuery< const client = useQueryClient(queryClient) if (!client.getQueryState(options.queryKey)) { - client.prefetchInfiniteQuery(options) + void client.infiniteQuery(options).then(noop).catch(noop) } } diff --git a/packages/preact-query/src/usePrefetchQuery.tsx b/packages/preact-query/src/usePrefetchQuery.tsx index e7a2a346340..9705be29e71 100644 --- a/packages/preact-query/src/usePrefetchQuery.tsx +++ b/packages/preact-query/src/usePrefetchQuery.tsx @@ -1,20 +1,28 @@ -import type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core' - +import { noop } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' + +import type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core' import type { UsePrefetchQueryOptions } from './types' export function usePrefetchQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, + TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: UsePrefetchQueryOptions, + options: UsePrefetchQueryOptions< + TQueryFnData, + TError, + TData, + TQueryData, + TQueryKey + >, queryClient?: QueryClient, ) { const client = useQueryClient(queryClient) if (!client.getQueryState(options.queryKey)) { - client.prefetchQuery(options) + void client.fetchQuery(options).then(noop).catch(noop) } } From 7b642e1a258ad4f9a4434f0009f07b3d2e68024d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Curley?= Date: Fri, 8 May 2026 18:36:43 +0100 Subject: [PATCH 2/5] docs(preact-query): updated docs for usePrefetchQuery --- .../functions/usePrefetchInfiniteQuery.md | 4 +- .../reference/functions/usePrefetchQuery.md | 10 +++-- docs/framework/preact/reference/index.md | 1 + .../UsePrefetchInfiniteQueryOptions.md | 41 +++++++++++++++++++ .../interfaces/UsePrefetchQueryOptions.md | 28 +++++++------ 5 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md diff --git a/docs/framework/preact/reference/functions/usePrefetchInfiniteQuery.md b/docs/framework/preact/reference/functions/usePrefetchInfiniteQuery.md index ea76ffc475e..179fc99f1f3 100644 --- a/docs/framework/preact/reference/functions/usePrefetchInfiniteQuery.md +++ b/docs/framework/preact/reference/functions/usePrefetchInfiniteQuery.md @@ -7,7 +7,7 @@ title: usePrefetchInfiniteQuery function usePrefetchInfiniteQuery(options, queryClient?): void; ``` -Defined in: [preact-query/src/usePrefetchInfiniteQuery.tsx:10](https://github.com/TanStack/query/blob/main/packages/preact-query/src/usePrefetchInfiniteQuery.tsx#L10) +Defined in: [preact-query/src/usePrefetchInfiniteQuery.tsx:7](https://github.com/TanStack/query/blob/main/packages/preact-query/src/usePrefetchInfiniteQuery.tsx#L7) ## Type Parameters @@ -35,7 +35,7 @@ Defined in: [preact-query/src/usePrefetchInfiniteQuery.tsx:10](https://github.co ### options -`FetchInfiniteQueryOptions`\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\> +[`UsePrefetchInfiniteQueryOptions`](../interfaces/UsePrefetchInfiniteQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`, `TPageParam`\> ### queryClient? diff --git a/docs/framework/preact/reference/functions/usePrefetchQuery.md b/docs/framework/preact/reference/functions/usePrefetchQuery.md index 2eddd789187..5ea47ff60e8 100644 --- a/docs/framework/preact/reference/functions/usePrefetchQuery.md +++ b/docs/framework/preact/reference/functions/usePrefetchQuery.md @@ -4,10 +4,10 @@ title: usePrefetchQuery --- ```ts -function usePrefetchQuery(options, queryClient?): void; +function usePrefetchQuery(options, queryClient?): void; ``` -Defined in: [preact-query/src/usePrefetchQuery.tsx:6](https://github.com/TanStack/query/blob/main/packages/preact-query/src/usePrefetchQuery.tsx#L6) +Defined in: [preact-query/src/usePrefetchQuery.tsx:7](https://github.com/TanStack/query/blob/main/packages/preact-query/src/usePrefetchQuery.tsx#L7) ## Type Parameters @@ -23,6 +23,10 @@ Defined in: [preact-query/src/usePrefetchQuery.tsx:6](https://github.com/TanStac `TData` = `TQueryFnData` +### TQueryData + +`TQueryData` = `TQueryFnData` + ### TQueryKey `TQueryKey` *extends* readonly `unknown`[] = readonly `unknown`[] @@ -31,7 +35,7 @@ Defined in: [preact-query/src/usePrefetchQuery.tsx:6](https://github.com/TanStac ### options -[`UsePrefetchQueryOptions`](../interfaces/UsePrefetchQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`\> +[`UsePrefetchQueryOptions`](../interfaces/UsePrefetchQueryOptions.md)\<`TQueryFnData`, `TError`, `TData`, `TQueryData`, `TQueryKey`\> ### queryClient? diff --git a/docs/framework/preact/reference/index.md b/docs/framework/preact/reference/index.md index ec26d5caf6a..8b47d6ffc64 100644 --- a/docs/framework/preact/reference/index.md +++ b/docs/framework/preact/reference/index.md @@ -10,6 +10,7 @@ title: "@tanstack/preact-query" - [UseBaseQueryOptions](interfaces/UseBaseQueryOptions.md) - [UseInfiniteQueryOptions](interfaces/UseInfiniteQueryOptions.md) - [UseMutationOptions](interfaces/UseMutationOptions.md) +- [UsePrefetchInfiniteQueryOptions](interfaces/UsePrefetchInfiniteQueryOptions.md) - [UsePrefetchQueryOptions](interfaces/UsePrefetchQueryOptions.md) - [UseQueryOptions](interfaces/UseQueryOptions.md) - [UseSuspenseInfiniteQueryOptions](interfaces/UseSuspenseInfiniteQueryOptions.md) diff --git a/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md b/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md new file mode 100644 index 00000000000..63ca7aab76f --- /dev/null +++ b/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md @@ -0,0 +1,41 @@ +--- +id: UsePrefetchInfiniteQueryOptions +title: UsePrefetchInfiniteQueryOptions +--- + +```ts +type UsePrefetchInfiniteQueryOptions +``` + +Defined in: [preact-query/src/types.ts:72](https://github.com/TanStack/query/blob/main/packages/preact-query/src/types.ts#L72) + +## Type Declaration + +### queryFn? + +```ts +optional queryFn: QueryFunction; +``` + +## Type Parameters + +### TQueryFnData + +`TQueryFnData` = `unknown` + +### TError + +`TError` = `DefaultError` + +### TData + +`TData` = `TQueryFnData` + +### TQueryKey + +`TQueryKey` *extends* `QueryKey` = `QueryKey` + +### TPageParam + +`TPageParam` = `unknown` +ß diff --git a/docs/framework/preact/reference/interfaces/UsePrefetchQueryOptions.md b/docs/framework/preact/reference/interfaces/UsePrefetchQueryOptions.md index 5fdd4d15a76..1e3eaef90c9 100644 --- a/docs/framework/preact/reference/interfaces/UsePrefetchQueryOptions.md +++ b/docs/framework/preact/reference/interfaces/UsePrefetchQueryOptions.md @@ -3,11 +3,19 @@ id: UsePrefetchQueryOptions title: UsePrefetchQueryOptions --- -Defined in: [preact-query/src/types.ts:48](https://github.com/TanStack/query/blob/main/packages/preact-query/src/types.ts#L48) +```ts +type UsePrefetchQueryOptions +``` -## Extends +Defined in: [preact-query/src/types.ts:50](https://github.com/TanStack/query/blob/main/packages/preact-query/src/types.ts#L50) -- `OmitKeyof`\<`FetchQueryOptions`\<`TQueryFnData`, `TError`, `TData`, `TQueryKey`\>, `"queryFn"`\> +## Type Declaration + +### queryFn? + +```ts +optional queryFn: QueryFunction; +``` ## Type Parameters @@ -23,16 +31,10 @@ Defined in: [preact-query/src/types.ts:48](https://github.com/TanStack/query/blo `TData` = `TQueryFnData` -### TQueryKey - -`TQueryKey` *extends* `QueryKey` = `QueryKey` +### TQueryData -## Properties +`TQueryData` = `TQueryFnData` -### queryFn? - -```ts -optional queryFn: QueryFunction; -``` +### TQueryKey -Defined in: [preact-query/src/types.ts:57](https://github.com/TanStack/query/blob/main/packages/preact-query/src/types.ts#L57) +`TQueryKey` *extends* `QueryKey` = `QueryKey` From b1ae25310d47ccf3835507b2d084a3c6f84a0564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Curley?= Date: Tue, 18 Aug 2026 15:16:07 +0100 Subject: [PATCH 3/5] Update docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../reference/interfaces/UsePrefetchInfiniteQueryOptions.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md b/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md index 63ca7aab76f..a389c958db2 100644 --- a/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md +++ b/docs/framework/preact/reference/interfaces/UsePrefetchInfiniteQueryOptions.md @@ -38,4 +38,3 @@ optional queryFn: QueryFunction; ### TPageParam `TPageParam` = `unknown` -ß From 8cf3459e39a09d46d9fbdd6048b94f63fe6ff423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Curley?= Date: Thu, 20 Aug 2026 11:29:02 +0100 Subject: [PATCH 4/5] Update packages/preact-query/src/usePrefetchInfiniteQuery.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Dominik Dorfmeister 🔮 --- packages/preact-query/src/usePrefetchInfiniteQuery.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preact-query/src/usePrefetchInfiniteQuery.tsx b/packages/preact-query/src/usePrefetchInfiniteQuery.tsx index 9d11800a2be..acfdc2bd324 100644 --- a/packages/preact-query/src/usePrefetchInfiniteQuery.tsx +++ b/packages/preact-query/src/usePrefetchInfiniteQuery.tsx @@ -23,6 +23,6 @@ export function usePrefetchInfiniteQuery< const client = useQueryClient(queryClient) if (!client.getQueryState(options.queryKey)) { - void client.infiniteQuery(options).then(noop).catch(noop) + void client.infiniteQuery(options).catch(noop) } } From 9f2e02169551c2f631fe9213d40bf358331cc61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Curley?= Date: Thu, 20 Aug 2026 11:29:12 +0100 Subject: [PATCH 5/5] Update packages/preact-query/src/usePrefetchQuery.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Dominik Dorfmeister 🔮 --- packages/preact-query/src/usePrefetchQuery.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preact-query/src/usePrefetchQuery.tsx b/packages/preact-query/src/usePrefetchQuery.tsx index 9705be29e71..376bf157c5d 100644 --- a/packages/preact-query/src/usePrefetchQuery.tsx +++ b/packages/preact-query/src/usePrefetchQuery.tsx @@ -23,6 +23,6 @@ export function usePrefetchQuery< const client = useQueryClient(queryClient) if (!client.getQueryState(options.queryKey)) { - void client.fetchQuery(options).then(noop).catch(noop) + void client.fetchQuery(options).catch(noop) } }