react-doctor/query-mutation-missing-invalidation
Add `onSuccess: () => queryClient.invalidateQueries({ queryKey: ['...'] })` so cached data stays in sync after the mutation
- Category: TanStack Query
- Severity: warn
- Source:
oxlint-plugin-react-doctor - Framework: tanstack-query
- Enabled when: framework=tanstack-query and capabilities=tanstack-query
Validation prompt
Use this to decide whether a fired diagnostic is real or a false positive.
Fires on useMutation({ mutationFn: ..., ... }) when the options object nowhere contains a member call whose property is invalidateQueries, setQueryData, setQueriesData, resetQueries, refetchQueries, removeQueries, cancelQueries, or clear. The walker searches the entire options tree (onSuccess/onSettled/onError/optimisticUpdate). False positive: invalidation lives in a parent router.refresh() or a global mutation success handler.
Fix prompt
Use this once validation confirms the diagnostic is real.
Add onSuccess: () => queryClient.invalidateQueries({ queryKey: ['users'] }) inside the options (or setQueryData for an optimistic update, resetQueries for a hard reset). Always use the object form { queryKey: [...] } — the deprecated string-key signature won't match and stale data lingers. https://tanstack.com/query/latest/docs/framework/react/guides/invalidations-from-mutations