Install
$ agentstack add skill-skilld-dev-vue-ecosystem-skills-tanstack-vue-query-skilld ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
TanStack/query @tanstack/vue-query@5.100.9
Tags: alpha: 5.0.0-alpha.91, beta: 5.0.0-beta.35, rc: 5.0.0-rc.16
References: [Docs](./references/docs/_INDEX.md)
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
- BREAKING:
useQueries()returnsRefinstead ofReactive— Vue 2.7+ compatibility fix that aligns with other composables. Destructuring return value now requires unwrapping ref or usingtoRefs(). Update:const { data } = useQueries(...)becomesconst { data } = useQueries(...).valueorconst { data } = toRefs(useQueries(...))[0][source](./references/docs/framework/vue/guides/migrating-to-v5.md:L11:22)
- NEW: Composables support
injectionContext—useQuery,useMutation, and other composables can now run in functions with injection context (e.g., router navigation guards), not just componentsetup(). Must use withineffectScopeto prevent memory leaks [source](./references/docs/framework/vue/guides/migrating-to-v5.md:L32:39)
- NEW: Options getter functions in
useQuery— pass reactive getters toqueryKeyandenabledoptions to track changes withoutcomputed(). Example:useQuery({ queryKey: () => ['posts', userId.value], enabled: () => isReady.value })[source](./references/releases/@tanstack/vue-query@5.91.0.md)
- NEW: Options getter functions extended to additional composables —
useInfiniteQuery,useMutation,usePrefetchQuery, andusePrefetchInfiniteQuerynow support reactive getters for all reactive options [source](./references/releases/@tanstack/vue-query@5.92.0.md)
- NEW:
enableDevtoolsV6Pluginoption for Traditional Devtools — integrate with Vue DevTools v6+ for custom inspector and timeline events. Enable:app.use(VueQueryPlugin, { enableDevtoolsV6Plugin: true }). Both v6 and v7 supported [source](./references/docs/framework/vue/devtools.md:L125:139)
- EXPERIMENTAL:
experimental_createQueryPersister— persist individual queries to storage (AsyncStorage, LocalStorage, custom). Separate package@tanstack/query-persist-client-core. IncludespersistQueryByKey(),retrieveQuery(),restoreQueries(),persisterGc()utilities. RespectsstaleTimeon restore [source](./references/docs/framework/vue/plugins/createPersister.md:L32:44)
- EXPERIMENTAL:
broadcastQueryClientplugin — sync query cache across browser tabs and windows via message broadcasting. Experimental API, separate package, subject to change [source](./references/docs/_INDEX.md:L72)
Also changed: Vue 3.3+ now required (was 3.x) · suspense() method on useQuery return for explicit await · VueQueryPlugin initialization unchanged · Query options now support getters alongside refs and values
Best Practices
- Always use
queryOptions()helper when defining query configurations, rather than passing objects directly touseQuery— this enables TypeScript inference, prevents queryKey/queryFn mismatches at runtime, and allows safe reuse withqueryClientmethods likegetQueryData()andinvalidateQueries()[source](./references/docs/eslint/prefer-query-options.md)
- Pass reactive values (Ref or computed) directly into the
queryKeyarray, not their.value— Vue Query automatically tracks reactive dependencies and refetches when they change [source](./references/docs/framework/vue/reactivity.md#keeping-queries-reactive)
- Accept
MaybeRefOrGetterin composable parameters instead of string values — this allows callers to pass refs, plain values, or reactive getters (() => props.userId) without wrapper code, giving maximum flexibility [source](./references/docs/framework/vue/reactivity.md#using-derived-state-inside-queries)
- Use
computed(() => props.property)for derived state from component props, not direct property access — property access on reactive objects loses reactivity, but computed captures it in the query's reactive tracking [source](./references/docs/framework/vue/reactivity.md#using-derived-state-inside-queries)
- Include all external variables used in
queryFnin thequeryKey— treat the query key like a dependency array; missing dependencies cause stale data and prevent proper cache invalidation [source](./references/docs/eslint/exhaustive-deps.md)
- Create a single
QueryClientinstance at app initialization, not inside components — the client holds the cache for the entire app lifecycle, and recreating it loses all cached data [source](./references/docs/eslint/stable-query-client.md)
- Destructure only the fields you actually use from query results; avoid object rest destructuring (
...rest) — rest destructuring subscribes to all fields, triggering unnecessary re-renders on any cache change [source](./references/docs/eslint/no-rest-destructuring.md)
- Use
skipTokenin acomputedqueryFnfor conditional queries instead ofenabled— this is more elegant for complex conditions and makes the intent clearer that the query should not run at all [source](./references/docs/framework/vue/guides/disabling-queries.md#with-skiptoken)
- Provide
placeholderDataas a function that queries other cache entries — this allows rendering stale detail data while fresh data loads, creating seamless UX transitions [source](./references/docs/framework/vue/guides/placeholder-query-data.md#using-previous-query-results)
- Set
gcTime: Infinityin server-side QueryClient defaults to prevent memory accumulation — the server creates isolated clients per request and should rely on automatic cleanup rather than manual garbage collection [source](./references/docs/framework/vue/guides/ssr.md#high-memory-consumption-on-server)
- Use
queryClient.setMutationDefaults()to define default mutation functions keyed bymutationKey— this enables persisted mutations to resume after a page reload by replaying the same function [source](./references/docs/framework/vue/guides/mutations.md#paused-mutations)
- Call
toRefs()on the result ofuseQuerieswithcombinebefore destructuring — the combined result is wrapped in a Ref for Vue 2 compatibility, and destructuring directly loses reactivity [source](./references/repos/TanStack/query/discussions/discussion-9860.md)
- Prefetch infinite query pages with the
pagesoption and providegetNextPageParam— this pre-fills multiple pages into the cache, reducing pagination load states and waterfalls [source](./references/docs/framework/vue/guides/prefetching.md#prefetching-infinite-queries)
- Use a
computed()expression for theenabledoption when the condition depends on reactive state — this keeps the query automatically in sync with changing conditions without manual tracking [source](./references/docs/framework/vue/guides/disabling-queries.md#with-a-computed-enabled-value)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: skilld-dev
- Source: skilld-dev/vue-ecosystem-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.