Describe the bug
Since the 5.98.0 rewrite ("fix(vue-query): fix type of queryOptions to allow plain properties or getters"), queryOptions() is typed against a new QueryOptions-based shape. In the published rollup declaration file (build/modern/_tsup-dts-rollup.d.ts) this shape exists as UndefinedInitialQueryOptions_alias_1 / DefinedInitialQueryOptions_alias_1 — but:
_alias_1 is not exported from the package root (build/modern/index.d.ts).
- The public names
UndefinedInitialQueryOptions / DefinedInitialQueryOptions are re-exported from the root, but they still point at the old, UseQueryOptions-based, MaybeRef<...>-union type. Two genuinely different types share one exported name; only the wrong one is reachable.
- Supporting types referenced by the new signature are unexported too: vue-query's
ShallowOption, its local MaybeRefOrGetter alias, and query-core's QueryBehavior, RetryValue, RetryDelayValue, plus a non-exported unique symbol (dataTagErrorSymbol).
Any library that exports a function returning queryOptions(...) with an inferred return type — the exact pattern @kubb/plugin-vue-query generates for every endpoint — hits one of two consequences when its declarations are emitted:
- Hard declaration-emit errors (
TS2527/TS2883) — reproduced here with both tsdown/rolldown-plugin-dts and plain tsc.
- Silently WRONG declarations — the natural fix for (1) is to annotate the return type with the public
UndefinedInitialQueryOptions. That compiles with zero errors, but it is the wrong type: a consumer spreading the factory's result into another queryOptions() call to add select fails to type-check, and the DataTag on queryKey is lost.
Both are reproduced below, from the same root cause: the name collision.
Your minimal, reproducible example
https://github.com/DesselBane/repro-vue-query-query-options
Steps to reproduce
See repo README.md
Expected behavior
No TS2527 error and/or correct type exported so that downstream select works
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
| Package |
Version |
@tanstack/vue-query |
5.101.2 (also confirmed broken at 5.98.0; 5.97.0 is clean — see Regression window) |
@tanstack/query-core |
5.101.2 (transitive) |
typescript |
6.0.3 |
vue |
3.5.31 |
tsdown |
0.21.4 (rolldown-plugin-dts@0.22.5, rolldown@1.0.0-rc.9) |
| Node |
v24.0.0 |
| OS |
Windows 11 |
Tanstack Query adapter
vue-query
TanStack Query version
5.98.0 (and 5.101.2)
TypeScript version
6.0.3
Additional context
Diagnosis and reproduction were created with the help of CLAUDE. I checked the repo and as far as I can tell this is all correct.
Describe the bug
Since the 5.98.0 rewrite ("fix(vue-query): fix type of
queryOptionsto allow plain properties or getters"),queryOptions()is typed against a newQueryOptions-based shape. In the published rollup declaration file (build/modern/_tsup-dts-rollup.d.ts) this shape exists asUndefinedInitialQueryOptions_alias_1/DefinedInitialQueryOptions_alias_1— but:_alias_1is not exported from the package root (build/modern/index.d.ts).UndefinedInitialQueryOptions/DefinedInitialQueryOptionsare re-exported from the root, but they still point at the old,UseQueryOptions-based,MaybeRef<...>-union type. Two genuinely different types share one exported name; only the wrong one is reachable.ShallowOption, its localMaybeRefOrGetteralias, and query-core'sQueryBehavior,RetryValue,RetryDelayValue, plus a non-exportedunique symbol(dataTagErrorSymbol).Any library that exports a function returning
queryOptions(...)with an inferred return type — the exact pattern@kubb/plugin-vue-querygenerates for every endpoint — hits one of two consequences when its declarations are emitted:TS2527/TS2883) — reproduced here with bothtsdown/rolldown-plugin-dtsand plaintsc.UndefinedInitialQueryOptions. That compiles with zero errors, but it is the wrong type: a consumer spreading the factory's result into anotherqueryOptions()call to addselectfails to type-check, and theDataTagonqueryKeyis lost.Both are reproduced below, from the same root cause: the name collision.
Your minimal, reproducible example
https://github.com/DesselBane/repro-vue-query-query-options
Steps to reproduce
See repo README.md
Expected behavior
No TS2527 error and/or correct type exported so that downstream select works
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
@tanstack/vue-query5.101.2(also confirmed broken at5.98.0;5.97.0is clean — see Regression window)@tanstack/query-core5.101.2(transitive)typescript6.0.3vue3.5.31tsdown0.21.4(rolldown-plugin-dts@0.22.5,rolldown@1.0.0-rc.9)v24.0.0Tanstack Query adapter
vue-query
TanStack Query version
5.98.0 (and 5.101.2)
TypeScript version
6.0.3
Additional context
Diagnosis and reproduction were created with the help of CLAUDE. I checked the repo and as far as I can tell this is all correct.