diff --git a/packages/react-query/src/__tests__/queryOptions.test-d.tsx b/packages/react-query/src/__tests__/queryOptions.test-d.tsx index dcb8d0ca47..232f55a2b0 100644 --- a/packages/react-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/queryOptions.test-d.tsx @@ -169,4 +169,23 @@ describe('queryOptions', () => { const data = queryClient.getQueryData(options.queryKey) expectTypeOf(data).toEqualTypeOf() }) + + it('should allow undefined response in initialData', () => { + return (id: string | null) => + queryOptions({ + queryKey: ['todo', id], + queryFn: () => + Promise.resolve({ + id: '1', + title: 'Do Laundry', + }), + initialData: () => + !id + ? undefined + : { + id, + title: 'Initial Data', + }, + }) + }) }) diff --git a/packages/react-query/src/queryOptions.ts b/packages/react-query/src/queryOptions.ts index 5eae0e4c23..ec1c11aa2c 100644 --- a/packages/react-query/src/queryOptions.ts +++ b/packages/react-query/src/queryOptions.ts @@ -1,4 +1,9 @@ -import type { DataTag, DefaultError, QueryKey } from '@tanstack/query-core' +import type { + DataTag, + DefaultError, + InitialDataFunction, + QueryKey, +} from '@tanstack/query-core' import type { UseQueryOptions } from './types' export type UndefinedInitialDataOptions< @@ -7,7 +12,7 @@ export type UndefinedInitialDataOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { - initialData?: undefined + initialData?: undefined | InitialDataFunction> } type NonUndefinedGuard = T extends undefined ? never : T