Commit adff581
Move @types/react-test-renderer to dependencies (#4015)
Move `@types/react-test-renderer` from `devDependencies` to
`dependencies`.
The published `lib/typescript/jestUtils/jestUtils.d.ts` imports
`ReactTestInstance` from `react-test-renderer` (line 1). Since
`@types/react-test-renderer` is only in `devDependencies`, it's not
installed for consumers — causing `TS2307: Cannot find module
'react-test-renderer'` for projects with `skipLibCheck: false`.
The [TypeScript
handbook](https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html)
is explicit: when published `.d.ts` files reference `@types/*` packages,
those packages must be in `dependencies` so consumers resolve them
automatically. Several major packages have fixed this exact pattern:
-
[webpack/schema-utils#97](webpack/schema-utils#97)
— moved `@types/json-schema` to `dependencies` for the same reason
- [@mui/material#14508](mui/material-ui#14508)
— keeps `@types/react-transition-group` in `dependencies` because
published types extend it
-
[react-native-testing-library#1534](callstack/react-native-testing-library#1534)
— shipped `.d.ts` broke `skipLibCheck: false` consumers, fixed within 2
days
This repo dealt with the same class of issue in #1990 (move
`@types/react-native` to `dependencies` — closed only because RN 0.71+
bundled its own types, not because the approach was rejected) and #2259
(shipped `.d.ts` type errors).
Note: `react-test-renderer` is [deprecated in React
19](https://react.dev/warnings/react-test-renderer). As more projects
drop it from their own dependencies, this breakage will increase for
downstream consumers.
**Consumer reproduction:**
```bash
mkdir test-rngh && cd test-rngh
npm init -y
npm install react react-native react-native-gesture-handler typescript @types/react
```
`tsconfig.json`:
```json
{
"compilerOptions": {
"strict": true,
"noEmit": true,
"skipLibCheck": false,
"moduleResolution": "bundler",
"module": "esnext",
"target": "esnext",
"jsx": "react-jsx"
},
"include": ["*.ts"]
}
```
`repro.ts`:
```typescript
import type { fireGestureHandler } from 'react-native-gesture-handler/lib/typescript/jestUtils/jestUtils';
export type { fireGestureHandler };
```
```bash
npx tsc --noEmit
npm install @types/react-test-renderer
npx tsc --noEmit
```
**Upstream quality gates:**
```bash
yarn workspace react-native-gesture-handler ts-check # PASS
yarn workspace react-native-gesture-handler build # PASS — module + commonjs + typescript
```
Zero regressions.1 parent 2aeb684 commit adff581
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| |||
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
88 | | - | |
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| |||
0 commit comments