From 54f67f1cf37598c1b59065ce580f80128725bf92 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Tue, 22 Sep 2026 15:27:31 +0900 Subject: [PATCH 1/2] docs(vue-query): correct 'initialData'/'select' JSDoc inaccuracy --- .../reference/functions/infiniteQueryOptions.md | 5 +++-- .../vue/reference/functions/queryOptions.md | 11 ++++++----- .../vue/reference/functions/useInfiniteQuery.md | 9 +++++---- docs/framework/vue/reference/functions/useQuery.md | 14 ++++++++------ .../DefinedInitialDataInfiniteOptions.md | 2 +- packages/vue-query/src/infiniteQueryOptions.ts | 5 +++-- packages/vue-query/src/queryOptions.ts | 3 ++- packages/vue-query/src/useInfiniteQuery.ts | 3 ++- packages/vue-query/src/useQuery.ts | 8 +++++--- 9 files changed, 35 insertions(+), 25 deletions(-) diff --git a/docs/framework/vue/reference/functions/infiniteQueryOptions.md b/docs/framework/vue/reference/functions/infiniteQueryOptions.md index 40f55905929..aea72580d38 100644 --- a/docs/framework/vue/reference/functions/infiniteQueryOptions.md +++ b/docs/framework/vue/reference/functions/infiniteQueryOptions.md @@ -79,13 +79,14 @@ const { data, isError, error, fetchNextPage } = useInfiniteQuery(projectsOptions function infiniteQueryOptions(options: DefinedInitialDataInfiniteOptions): DefinedInitialDataInfiniteOptions & QueryKeyWithDataTag, TError>; ``` -Defined in: [packages/vue-query/src/infiniteQueryOptions.ts:153](https://github.com/TanStack/query/blob/main/packages/vue-query/src/infiniteQueryOptions.ts#L153) +Defined in: [packages/vue-query/src/infiniteQueryOptions.ts:154](https://github.com/TanStack/query/blob/main/packages/vue-query/src/infiniteQueryOptions.ts#L154) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. `options.queryKey` is required and is the query key to generate options for. -This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. +This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless +a `select` changes `TData` to include `undefined`). ### Type Parameters diff --git a/docs/framework/vue/reference/functions/queryOptions.md b/docs/framework/vue/reference/functions/queryOptions.md index f65c1f03be5..0eb66e89d7d 100644 --- a/docs/framework/vue/reference/functions/queryOptions.md +++ b/docs/framework/vue/reference/functions/queryOptions.md @@ -9,13 +9,14 @@ title: queryOptions function queryOptions(options: DefinedInitialQueryOptions): DefinedInitialQueryOptionsWithDataTag; ``` -Defined in: [packages/vue-query/src/queryOptions.ts:244](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L244) +Defined in: [packages/vue-query/src/queryOptions.ts:245](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L245) You can generally pass everything to `queryOptions` that you can also pass to `useQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.query`. `options.queryKey` is required and is the query key to generate options for. -This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. +This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless +a `select` changes `TData` to include `undefined`). ### Type Parameters @@ -78,7 +79,7 @@ const { data, isError, error } = useQuery(postsOptions) function queryOptions(options: () => DefinedInitialQueryOptions): () => DefinedInitialQueryOptionsWithDataTag; ``` -Defined in: [packages/vue-query/src/queryOptions.ts:281](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L281) +Defined in: [packages/vue-query/src/queryOptions.ts:282](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L282) Same as the plain-object overload, but for options that close over reactive state (`ref`s read inside the function body). Wrap them in a getter so `queryClient` methods like `invalidateQueries`/`fetchQuery` always @@ -152,7 +153,7 @@ const { data } = useQuery(postOptions) function queryOptions(options: UndefinedInitialQueryOptions): UndefinedInitialQueryOptionsWithDataTag; ``` -Defined in: [packages/vue-query/src/queryOptions.ts:326](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L326) +Defined in: [packages/vue-query/src/queryOptions.ts:327](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L327) You can generally pass everything to `queryOptions` that you can also pass to `useQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.query`. `options.queryKey` is required and @@ -218,7 +219,7 @@ const { data, isPending, isError, error } = useQuery(postOptions('1')) function queryOptions(options: () => UndefinedInitialQueryOptions): () => UndefinedInitialQueryOptionsWithDataTag; ``` -Defined in: [packages/vue-query/src/queryOptions.ts:392](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L392) +Defined in: [packages/vue-query/src/queryOptions.ts:393](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L393) Same as the plain-object overload, but for options that close over reactive state (`ref`s read inside the function body). Wrap them in a getter so the `queryKey` — and anything else derived from a `ref` — reacts diff --git a/docs/framework/vue/reference/functions/useInfiniteQuery.md b/docs/framework/vue/reference/functions/useInfiniteQuery.md index ecadeb7e28c..1c671ccc614 100644 --- a/docs/framework/vue/reference/functions/useInfiniteQuery.md +++ b/docs/framework/vue/reference/functions/useInfiniteQuery.md @@ -9,12 +9,13 @@ title: useInfiniteQuery function useInfiniteQuery(options: MaybeRefOrGetter>, queryClient?: QueryClient): UseInfiniteQueryReturnType; ``` -Defined in: [packages/vue-query/src/useInfiniteQuery.ts:117](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L117) +Defined in: [packages/vue-query/src/useInfiniteQuery.ts:118](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L118) The options for `useInfiniteQuery` are identical to `useQuery`, with the addition of `initialPageParam`, `getNextPageParam`, `getPreviousPageParam`, and `maxPages`. -This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. +This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless +a `select` changes `TData` to include `undefined`). `enabled` tracks reactive dependencies automatically as a `ref`, a plain value, or a reactive getter (`() => ...`). `queryKey` reacts through a `ref` for the array itself, or `ref`s and reactive getters as @@ -106,7 +107,7 @@ const { data, isError, error } = useInfiniteQuery({ function useInfiniteQuery(options: MaybeRefOrGetter>, queryClient?: QueryClient): UseInfiniteQueryReturnType; ``` -Defined in: [packages/vue-query/src/useInfiniteQuery.ts:251](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L251) +Defined in: [packages/vue-query/src/useInfiniteQuery.ts:252](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L252) The options for `useInfiniteQuery` are identical to `useQuery`, with the addition of `initialPageParam`, `getNextPageParam`, `getPreviousPageParam`, and `maxPages`. @@ -269,7 +270,7 @@ onUnmounted(() => observer?.disconnect()) function useInfiniteQuery(options: MaybeRefOrGetter>, queryClient?: QueryClient): UseInfiniteQueryReturnType; ``` -Defined in: [packages/vue-query/src/useInfiniteQuery.ts:347](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L347) +Defined in: [packages/vue-query/src/useInfiniteQuery.ts:348](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useInfiniteQuery.ts#L348) Fallback overload for options whose `initialData` presence isn't statically known — for example, a `ref`/reactive object built up conditionally, rather than a plain object literal. Prefer one of the other diff --git a/docs/framework/vue/reference/functions/useQuery.md b/docs/framework/vue/reference/functions/useQuery.md index 471bfacd9a7..fd930e8de0a 100644 --- a/docs/framework/vue/reference/functions/useQuery.md +++ b/docs/framework/vue/reference/functions/useQuery.md @@ -9,9 +9,10 @@ title: useQuery function useQuery(options: DefinedInitialQueryOptions, queryClient?: QueryClient): UseQueryDefinedReturnType; ``` -Defined in: [packages/vue-query/src/useQuery.ts:65](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L65) +Defined in: [packages/vue-query/src/useQuery.ts:67](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L67) -This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. +This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless +a `select` changes `TData` to include `undefined`). `enabled` tracks reactive dependencies automatically as a `ref`, a plain value, or a reactive getter (`() => ...`). `queryKey` reacts through a `ref` or a reactive getter for the array itself, or `ref`s and @@ -56,8 +57,9 @@ will be used. [`UseQueryDefinedReturnType`](../type-aliases/UseQueryDefinedReturnType.md)\<`TData`, `TError`\> -The current query result, typed so that `data` is never `undefined` (`status` never resolves to -`pending` in this overload's type, since `initialData` guarantees data upfront). +The current query result, typed so that `data` is never `undefined` (unless a `select` changes +`TData` to include `undefined`). `status` never resolves to `pending` in this overload's type, since +`initialData` guarantees data upfront. ### Example @@ -88,7 +90,7 @@ const { data, isError, error } = useQuery({ function useQuery(options: UndefinedInitialQueryOptions, queryClient?: QueryClient): UseQueryReturnType; ``` -Defined in: [packages/vue-query/src/useQuery.ts:206](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L206) +Defined in: [packages/vue-query/src/useQuery.ts:208](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L208) `enabled` tracks reactive dependencies automatically as a `ref`, a plain value, or a reactive getter (`() => ...`). `queryKey` reacts through a `ref` or a reactive getter for the array itself, or `ref`s and @@ -257,7 +259,7 @@ const { data, isPlaceholderData, isError, error } = useQuery({ function useQuery(options: MaybeRefOrGetter>, queryClient?: QueryClient): UseQueryReturnType; ``` -Defined in: [packages/vue-query/src/useQuery.ts:282](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L282) +Defined in: [packages/vue-query/src/useQuery.ts:284](https://github.com/TanStack/query/blob/main/packages/vue-query/src/useQuery.ts#L284) Fallback overload for options whose `initialData` presence isn't statically known — for example, a `ref`/reactive object built up conditionally, rather than a plain object literal. Prefer one of the other diff --git a/docs/framework/vue/reference/type-aliases/DefinedInitialDataInfiniteOptions.md b/docs/framework/vue/reference/type-aliases/DefinedInitialDataInfiniteOptions.md index f812ea8d2d8..396b5cee594 100644 --- a/docs/framework/vue/reference/type-aliases/DefinedInitialDataInfiniteOptions.md +++ b/docs/framework/vue/reference/type-aliases/DefinedInitialDataInfiniteOptions.md @@ -10,7 +10,7 @@ type DefinedInitialDataInfiniteOptions = UseBaseQueryReturnType< * The options for `useInfiniteQuery` are identical to `useQuery`, with the addition of * `initialPageParam`, `getNextPageParam`, `getPreviousPageParam`, and `maxPages`. * - * This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. + * This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless + * a `select` changes `TData` to include `undefined`). * * `enabled` tracks reactive dependencies automatically as a `ref`, a plain value, or a reactive getter * (`() => ...`). `queryKey` reacts through a `ref` for the array itself, or `ref`s and reactive getters as diff --git a/packages/vue-query/src/useQuery.ts b/packages/vue-query/src/useQuery.ts index 42f7f45d860..57286fb4a16 100644 --- a/packages/vue-query/src/useQuery.ts +++ b/packages/vue-query/src/useQuery.ts @@ -26,7 +26,8 @@ export type UseQueryDefinedReturnType = UseBaseQueryReturnType< > /** - * This overload is selected when `initialData` is set, so the resulting `data` is never `undefined`. + * This overload is selected when `initialData` is set, so the resulting `data` is never `undefined` (unless + * a `select` changes `TData` to include `undefined`). * * `enabled` tracks reactive dependencies automatically as a `ref`, a plain value, or a reactive getter * (`() => ...`). `queryKey` reacts through a `ref` or a reactive getter for the array itself, or `ref`s and @@ -37,8 +38,9 @@ export type UseQueryDefinedReturnType = UseBaseQueryReturnType< * `initialData` set. * @param queryClient - Use this to use a custom `QueryClient`. Otherwise, the one provided by `VueQueryPlugin` * will be used. - * @returns The current query result, typed so that `data` is never `undefined` (`status` never resolves to - * `pending` in this overload's type, since `initialData` guarantees data upfront). + * @returns The current query result, typed so that `data` is never `undefined` (unless a `select` changes + * `TData` to include `undefined`). `status` never resolves to `pending` in this overload's type, since + * `initialData` guarantees data upfront. * * @example * ```vue From e2ba4c90a0dcb2c16ef62a00ba4e5c71915ed1a4 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Tue, 22 Sep 2026 15:33:24 +0900 Subject: [PATCH 2/2] docs(vue-query): fix missed 'select' qualifier on 'DefinedInitialQueryOptions' JSDoc --- .../vue/reference/type-aliases/DefinedInitialQueryOptions.md | 2 +- packages/vue-query/src/queryOptions.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/framework/vue/reference/type-aliases/DefinedInitialQueryOptions.md b/docs/framework/vue/reference/type-aliases/DefinedInitialQueryOptions.md index cb281f2b62a..9be4d82bf1c 100644 --- a/docs/framework/vue/reference/type-aliases/DefinedInitialQueryOptions.md +++ b/docs/framework/vue/reference/type-aliases/DefinedInitialQueryOptions.md @@ -10,7 +10,7 @@ type DefinedInitialQueryOptions = UseQue Defined in: [packages/vue-query/src/queryOptions.ts:189](https://github.com/TanStack/query/blob/main/packages/vue-query/src/queryOptions.ts#L189) The options accepted by the `queryOptions` overload selected when `initialData` is set — `data` is never -`undefined`. +`undefined` (unless a `select` changes `TData` to include `undefined`). ## Type Parameters diff --git a/packages/vue-query/src/queryOptions.ts b/packages/vue-query/src/queryOptions.ts index 06ff27eb221..33d2be6bb14 100644 --- a/packages/vue-query/src/queryOptions.ts +++ b/packages/vue-query/src/queryOptions.ts @@ -179,7 +179,7 @@ export type UndefinedInitialQueryOptions< /** * The options accepted by the `queryOptions` overload selected when `initialData` is set — `data` is never - * `undefined`. + * `undefined` (unless a `select` changes `TData` to include `undefined`). * * @template TQueryFnData - The type your `queryFn` resolves to. * @template TError - The type of errors your `queryFn` may throw.