fetchStatus — separate from status; tells you whether the queryFn is actually running ('fetching'), blocked ('paused'), or not running ('idle'). A query can be pending + paused simultaneously. (Ch 10, 14)
Garbage collection (gcTime) — how long an inactive (zero active observers) query stays cached before eviction; default 5 minutes. Independent of staleTime. (Ch 9, 38)
Hydration (dehydrate/hydrate/HydrationBoundary) — freezing a QueryClient's cache to a serializable snapshot and restoring it elsewhere (server → client, or storage → memory). (Ch 36, 80)
Infinite query — a query whose cache entry holds an ordered array of fetched pages (data.pages/data.pageParams), advanced via fetchNextPage/fetchPreviousPage. (Ch 23, 64)
mutationKey — optional identifier on a mutation, used to register shared defaults (setMutationDefaults) or to filter it via useMutationState/useIsMutating. (Ch 26, 65, 68)
Mutation scope (scope.id) — mutations sharing a scope id run serially instead of the default parallel; later ones queue with isPaused: true. (Ch 26, 65)
Network mode (networkMode) — 'online' (default, pause without connectivity) vs. 'always' (ignore connectivity) vs. 'offlineFirst' (try once, then behave like online). (Ch 14, 44)
Observer — the framework-agnostic class (QueryObserver, InfiniteQueryObserver, QueriesObserver) that useQuery/useInfiniteQuery/useQueries are React bindings around. (Ch 55)
Optimistic update — showing a mutation's expected result before the server confirms it, either via mutation.variables ("via the UI") or a cache write in onMutate with rollback in onError ("via the cache"). (Ch 30)
Persister — a pluggable storage adapter ({ persistClient, restoreClient, removeClient }) used by persistQueryClient (whole-client) or experimental_createQueryPersister (per-query). (Ch 47–51)
placeholderData — non-persisted stand-in data shown while a query is pending; the function form (or the keepPreviousData helper) carries the previous query's data across a changing key. (Ch 22, 25)
Query key — a JSON-serializable array uniquely identifying a query's data; must include every variable the queryFn depends on. Hashed deterministically (object key order doesn't matter, array order does). (Ch 11)
queryOptions / infiniteQueryOptions / mutationOptions — type-preserving identity-function helpers for sharing option objects across useQuery/useSuspenseQuery/useQueries/queryClient calls. (Ch 13, 74–76)
Request waterfall — any chain of fetches where one can't start until a prior, unrelated one finishes; the primary performance concern this library's guides warn against. (Ch 34)
select — transforms/subscribes to a derived subset of data, re-rendering only when that derived value changes; memoized by reference, not re-created inline. (Ch 39)
staleTime — how long resolved data is considered fresh (no background refetch triggers); 0 (default), a number, Infinity (fresh until manual invalidation), or 'static' (never refetches, even manually). (Ch 9)
Structural sharing — keeping unchanged parts of a query's data at the same object reference across refetches, for useMemo/useCallback stability; JSON-compatible data only. (Ch 39)
Tracked properties — Proxy-based mechanism that only re-renders a component for useQuery fields it actually reads; defeated by object rest destructuring. (Ch 39, 46)