-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
docs: clarify default behavior of invalidateQueries refetching #9541
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Yashkanekar
wants to merge
2
commits into
TanStack:main
from
Yashkanekar:fix-docs-react-query-invalidateQueries
+19
−0
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,6 +23,8 @@ When a query is invalidated with `invalidateQueries`, two things happen: | |
- It is marked as stale. This stale state overrides any `staleTime` configurations being used in `useQuery` or related hooks | ||
- If the query is currently being rendered via `useQuery` or related hooks, it will also be refetched in the background | ||
|
||
> **Important:** By default, `invalidateQueries` will immediately refetch _only active queries_—those currently used by mounted components. Inactive queries (cached but not in use) are marked as stale but will not be refetched until they become active again (e.g., when a component utilizing the query mounts). This means that calling `invalidateQueries` without additional options does _not_ guarantee all matching queries are refetched immediately. | ||
|
||
## Query Matching with `invalidateQueries` | ||
|
||
When using APIs like `invalidateQueries` and `removeQueries` (and others that support partial query matching), you can match multiple queries by their prefix, or get really specific and match an exact query. For information on the types of filters you can use, please see [Query Filters](../filters.md#query-filters). | ||
|
@@ -131,3 +133,20 @@ const todoListQuery = useQuery({ | |
``` | ||
|
||
[//]: # 'Example5' | ||
|
||
By default, `invalidateQueries` only refetches active queries. If you want to refetch **all matching queries**, including those currently inactive in the cache, you need to explicitly set the `refetchType` (or `type`) option to `'all'`: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is partially wrong. setting |
||
|
||
[//]: # 'Example6' | ||
|
||
```tsx | ||
queryClient.invalidateQueries({ | ||
queryKey: ['todos'], | ||
refetchType: 'all', // or type: 'all' | ||
}) | ||
``` | ||
|
||
[//]: # 'Example6' | ||
|
||
This forces every matching query—active or inactive—to be refetched immediately. | ||
|
||
> 🧠 **Note:** The default behavior (`refetchType: 'active'`) helps avoid unnecessary network requests. But if you're triggering an invalidation after a mutation that affects _all clients or views_, make sure to use `refetchType: 'all'` to keep all query caches up to date. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.