Skip to content

Commit bb4556a

Browse files
cyphercodesTkDodo
andauthored
fix(eslint-plugin-query): allow suspense queries combine deps (#10642)
Co-authored-by: cyphercodes <cyphercodes@users.noreply.github.com> Co-authored-by: Dominik Dorfmeister 🔮 <office@dorfmeister.cc>
1 parent 98fd431 commit bb4556a

3 files changed

Lines changed: 27 additions & 3 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@tanstack/eslint-plugin-query": patch
3+
---
4+
5+
Fix `no-unstable-deps` false positives for `useSuspenseQueries` results returned from `combine`.

packages/eslint-plugin-query/src/__tests__/no-unstable-deps.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,24 @@ const baseTestCases = {
6363
}
6464
`,
6565
},
66+
{
67+
name: `should pass when useSuspenseQueries with combine is passed to ${reactHookAlias} as dependency`,
68+
code: `
69+
${reactHookImport}
70+
import { useSuspenseQueries } from "@tanstack/react-query";
71+
72+
function Component() {
73+
const queries = useSuspenseQueries({
74+
queries: [
75+
{ queryKey: ['test'], queryFn: () => 'test' }
76+
],
77+
combine: (results) => ({ data: results[0]?.data })
78+
});
79+
const callback = ${reactHookInvocation}(() => { queries.data }, [queries]);
80+
return;
81+
}
82+
`,
83+
},
6684
])
6785
.concat([
6886
{

packages/eslint-plugin-query/src/rules/no-unstable-deps/no-unstable-deps.rule.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,13 @@ export const rule = createRule({
112112
allHookNames.includes(node.init.callee.name) &&
113113
helpers.isTanstackQueryImport(node.init.callee)
114114
) {
115-
// Special case for useQueries with combine property - it's stable
115+
// Special case for useQueries/useSuspenseQueries with combine property - it's stable
116116
if (
117-
node.init.callee.name === 'useQueries' &&
117+
(node.init.callee.name === 'useQueries' ||
118+
node.init.callee.name === 'useSuspenseQueries') &&
118119
hasCombineProperty(node.init)
119120
) {
120-
// Don't track useQueries with combine as unstable
121+
// Don't track useQueries/useSuspenseQueries with combine as unstable
121122
return
122123
}
123124
collectVariableNames(node.id, node.init.callee.name)

0 commit comments

Comments
 (0)