Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

adelowo/eslint-plugin-react-query-must-invalidate-queries

Repository files navigation

ESLint plugin to enforce best practices when working withTanStack Query

Installation

npm install eslint-plugin-react-query-must-invalidate-queries --save-dev# oryarn add eslint-plugin-react-query-must-invalidate-queries --dev# orpnpm add eslint-plugin-react-query-must-invalidate-queries --save-dev# orbun add eslint-plugin-react-query-must-invalidate-queries --dev

Usage

Addreact-query-must-invalidate-queries to the plugins section of your.eslintrc configuration file:

{"plugins":["react-query-must-invalidate-queries"],"rules":{"react-query-must-invalidate-queries/require-mutation-invalidation":"error"// or "warn"}}

You can see a real world config here using this:https://github.com/ayinke-llc/malak/blob/main/web/ui/eslint.config.mjs

Rules

require-mutation-invalidation

🔧 This rule enforces thatuseMutation hooks include anonSuccess callback thatcallsinvalidateQueries to ensure data consistency.

Why?

When using mutations in React Query, it's important to invalidate related queriesafter a successful mutation to ensure the UI reflects the latest server state withouthaving to do a lot of mental prep.

This rule helps prevent stale data by ensuring that mutations properly invalidate affected queries.

Rule Details

This rule enforces:

  • Presence of anonSuccess callback inuseMutation hooks
  • TheonSuccess callback must include a call toinvalidateQueries

✅ Examples ofcorrect code:

useMutation({mutationFn:updateUser,onSuccess:()=>{queryClient.invalidateQueries({queryKey:["users"]});},});useMutation({mutationFn:updateUser,onSuccess:()=>{const{ invalidateQueries}=queryClient;invalidateQueries({queryKey:["users"]});},});useMutation({mutationFn:updateUser,onSuccess:async()=>{awaitsomeOtherOperation();awaitqueryClient.invalidateQueries({queryKey:["users"]});},});

❌ Examples ofincorrect code:

useMutation({mutationFn:updateUser,});useMutation({mutationFn:updateUser,onSuccess:()=>{console.log("Success!");},});useMutation({mutationFn:updateUser,onSuccess:()=>{},});

When Not To Use It

You might want to disable this rule if:

  • You have mutations that intentionally don't need to invalidate any queries
  • You're handling cache updates through other means likesetQueryData
  • You have a specific caching strategy that doesn't require query invalidation

Contributing

Contributions are welcome! Please read ourcontributing guidelines to get started.

License

MIT

Resources

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp