Skip to content

Commit a108398

Browse files
authored
fix(react-query*): declare '@types/react' as an optional peer dependency (#11728)
* fix(react-query*): declare '@types/react' as a peer dependency like 'react-query-devtools' * fix(react-query*): mark '@types/react' as an optional peer dependency
1 parent 5817e6f commit a108398

6 files changed

Lines changed: 51 additions & 4 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@tanstack/react-query': patch
3+
'@tanstack/react-query-devtools': patch
4+
'@tanstack/react-query-next-experimental': patch
5+
'@tanstack/react-query-persist-client': patch
6+
---
7+
8+
fix(react-query*): declare '@types/react' as an optional peer dependency

‎knip.ts‎

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
import angularQuery from './packages/angular-query-experimental/package.json'
2+
import reactQuery from './packages/react-query/package.json'
3+
import reactQueryDevtools from './packages/react-query-devtools/package.json'
4+
import reactQueryNextExperimental from './packages/react-query-next-experimental/package.json'
5+
import reactQueryPersistClient from './packages/react-query-persist-client/package.json'
26
import type { KnipConfig } from 'knip'
37

8+
// Strict mode excludes optional peer dependencies. Read the declared names
9+
// so removing a declaration still causes an unlisted dependency error.
10+
const optionalPeerDependencies = (pkg: {
11+
peerDependencies: Record<string, string>
12+
peerDependenciesMeta: Record<string, { optional: boolean }>
13+
}) =>
14+
Object.keys(pkg.peerDependenciesMeta)
15+
.filter((dependency) => dependency in pkg.peerDependencies)
16+
.map((dependency) => `${dependency}!`)
17+
418
export default {
519
ignore: ['scripts/*.{j,t}s', '**/ts-fixture/file.ts'],
620
treatConfigHintsAsErrors: true,
@@ -25,15 +39,17 @@ export default {
2539
entry: ['src/v4/**/*.cjs', 'src/v5/**/*.cjs'],
2640
ignore: ['**/__testfixtures__/**'],
2741
},
28-
// Built types import 'react', which the consumer's '@types/react' provides.
2942
'packages/react-query': {
30-
ignoreDependencies: ['@types/react!'],
43+
ignoreDependencies: optionalPeerDependencies(reactQuery),
44+
},
45+
'packages/react-query-devtools': {
46+
ignoreDependencies: optionalPeerDependencies(reactQueryDevtools),
3147
},
3248
'packages/react-query-next-experimental': {
33-
ignoreDependencies: ['@types/react!'],
49+
ignoreDependencies: optionalPeerDependencies(reactQueryNextExperimental),
3450
},
3551
'packages/react-query-persist-client': {
36-
ignoreDependencies: ['@types/react!'],
52+
ignoreDependencies: optionalPeerDependencies(reactQueryPersistClient),
3753
},
3854
'packages/vue-query': {
3955
ignoreDependencies: ['vue2', 'vue2.7'],

‎packages/react-query-devtools/package.json‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,10 @@
9292
"@tanstack/react-query": "workspace:^",
9393
"@types/react": "^18 || ^19",
9494
"react": "^18 || ^19"
95+
},
96+
"peerDependenciesMeta": {
97+
"@types/react": {
98+
"optional": true
99+
}
95100
}
96101
}

‎packages/react-query-next-experimental/package.json‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@
6464
},
6565
"peerDependencies": {
6666
"@tanstack/react-query": "workspace:^",
67+
"@types/react": "^18 || ^19",
6768
"next": "^13 || ^14 || ^15 || ^16",
6869
"react": "^18 || ^19"
70+
},
71+
"peerDependenciesMeta": {
72+
"@types/react": {
73+
"optional": true
74+
}
6975
}
7076
}

‎packages/react-query-persist-client/package.json‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@
7171
},
7272
"peerDependencies": {
7373
"@tanstack/react-query": "workspace:^",
74+
"@types/react": "^18 || ^19",
7475
"react": "^18 || ^19"
76+
},
77+
"peerDependenciesMeta": {
78+
"@types/react": {
79+
"optional": true
80+
}
7581
}
7682
}

‎packages/react-query/package.json‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@
8080
"typescript": "catalog:"
8181
},
8282
"peerDependencies": {
83+
"@types/react": "^18 || ^19",
8384
"react": "^18 || ^19"
85+
},
86+
"peerDependenciesMeta": {
87+
"@types/react": {
88+
"optional": true
89+
}
8490
}
8591
}

0 commit comments

Comments
 (0)