Skip to content

Commit 05f9804

Browse files
[v13] chore: remove react 16 & 17 code (#1602)
* chore: remove React 16 & 17 code chore: remove more chore: react version 18.3.1 docs: migration guide * refactor: finish merge
1 parent 6f98f42 commit 05f9804

File tree

7 files changed

+56
-80
lines changed

7 files changed

+56
-80
lines changed

package.json

+6-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"clean": "del build",
2828
"test": "jest",
2929
"test:ci": "jest --maxWorkers=2 --collectCoverage=true --coverage-provider=v8",
30-
"test:react-17": "scripts/test_react_17",
3130
"typecheck": "tsc",
3231
"flow": "flow",
3332
"copy-flowtypes": "cp typings/index.flow.js build",
@@ -59,9 +58,9 @@
5958
},
6059
"peerDependencies": {
6160
"jest": ">=28.0.0",
62-
"react": ">=16.8.0",
63-
"react-native": ">=0.59",
64-
"react-test-renderer": ">=16.8.0"
61+
"react": ">=18.2.0",
62+
"react-native": ">=0.73",
63+
"react-test-renderer": ">=18.2.0"
6564
},
6665
"peerDependenciesMeta": {
6766
"jest": {
@@ -80,7 +79,7 @@
8079
"@release-it/conventional-changelog": "^8.0.1",
8180
"@relmify/jest-serializer-strip-ansi": "^1.0.2",
8281
"@types/jest": "^29.5.12",
83-
"@types/react": "^18.2.65",
82+
"@types/react": "^18.3.1",
8483
"@types/react-test-renderer": "^18.0.7",
8584
"babel-jest": "^29.7.0",
8685
"del-cli": "^5.1.0",
@@ -90,9 +89,9 @@
9089
"flow-bin": "~0.170.0",
9190
"jest": "^29.7.0",
9291
"prettier": "^2.8.8",
93-
"react": "18.2.0",
92+
"react": "18.3.1",
9493
"react-native": "0.74.1",
95-
"react-test-renderer": "18.2.0",
94+
"react-test-renderer": "18.3.1",
9695
"release-it": "^17.2.1",
9796
"strip-ansi": "^6.0.1",
9897
"typescript": "^5.4.5"

scripts/test_react_17

-12
This file was deleted.

src/act.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// This file and the act() implementation is sourced from react-testing-library
22
// https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js
33
import { act as reactTestRendererAct } from 'react-test-renderer';
4-
import { checkReactVersionAtLeast } from './react-versions';
54

65
type ReactAct = typeof reactTestRendererAct;
76

@@ -72,9 +71,7 @@ function withGlobalActEnvironment(actImplementation: ReactAct) {
7271
};
7372
}
7473

75-
const act: ReactAct = checkReactVersionAtLeast(18, 0)
76-
? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)
77-
: reactTestRendererAct;
74+
const act = withGlobalActEnvironment(reactTestRendererAct) as ReactAct;
7875

7976
export default act;
8077
export { setIsReactActEnvironment as setReactActEnvironment, getIsReactActEnvironment };

src/helpers/wrap-async.ts

+10-26
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
/* istanbul ignore file */
22

3-
import act, { getIsReactActEnvironment, setReactActEnvironment } from '../act';
3+
import { getIsReactActEnvironment, setReactActEnvironment } from '../act';
44
import { flushMicroTasks } from '../flush-micro-tasks';
5-
import { checkReactVersionAtLeast } from '../react-versions';
65

76
/**
87
* Run given async callback with temporarily disabled `act` environment and flushes microtasks queue.
@@ -11,30 +10,15 @@ import { checkReactVersionAtLeast } from '../react-versions';
1110
* @returns Result of the callback
1211
*/
1312
export async function wrapAsync<Result>(callback: () => Promise<Result>): Promise<Result> {
14-
if (checkReactVersionAtLeast(18, 0)) {
15-
const previousActEnvironment = getIsReactActEnvironment();
16-
setReactActEnvironment(false);
13+
const previousActEnvironment = getIsReactActEnvironment();
14+
setReactActEnvironment(false);
1715

18-
try {
19-
const result = await callback();
20-
// Flush the microtask queue before restoring the `act` environment
21-
await flushMicroTasks();
22-
return result;
23-
} finally {
24-
setReactActEnvironment(previousActEnvironment);
25-
}
16+
try {
17+
const result = await callback();
18+
// Flush the microtask queue before restoring the `act` environment
19+
await flushMicroTasks();
20+
return result;
21+
} finally {
22+
setReactActEnvironment(previousActEnvironment);
2623
}
27-
28-
if (!checkReactVersionAtLeast(16, 9)) {
29-
return callback();
30-
}
31-
32-
// Wrapping with act for react version 16.9 to 17.x
33-
let result: Result;
34-
await act(async () => {
35-
result = await callback();
36-
});
37-
38-
// Either we have result or `callback` threw error
39-
return result!;
4024
}

website/docs/MigrationV13.md

+6
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ Migration to React Native Testing Library version 13 from version 12.x.
1313

1414
# Breaking changes
1515

16+
## Supported React and React Native versions
17+
18+
This version supports only React 19 and corresponding React Native versions. If you use React 18 or 19, please use latest of v12 versions.
19+
20+
[Note: at the moment there is no React Native for React 19, and React 19 is still in beta, so we use React 18.3 for the time being].
21+
1622
## Removed deprecated \*ByAccessibilityState queries
1723

1824
This deprecated query has been removed as is typically too general to give meaningful results. Use one of the following options:

website/docs/OtherAPIs.md

-4
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,6 @@ await waitFor(() => {
101101
}, 10000);
102102
```
103103

104-
:::info
105-
In order to properly use `waitFor` you need at least React >=16.9.0 (featuring async `act`) or React Native >=0.61 (which comes with React >=16.9.0).
106-
:::
107-
108104
:::note
109105
If you receive warnings related to `act()` function consult our [Undestanding Act](./UnderstandingAct.md) function document.
110106
:::

yarn.lock

+33-27
Original file line numberDiff line numberDiff line change
@@ -3585,7 +3585,7 @@ __metadata:
35853585
"@release-it/conventional-changelog": "npm:^8.0.1"
35863586
"@relmify/jest-serializer-strip-ansi": "npm:^1.0.2"
35873587
"@types/jest": "npm:^29.5.12"
3588-
"@types/react": "npm:^18.2.65"
3588+
"@types/react": "npm:^18.3.1"
35893589
"@types/react-test-renderer": "npm:^18.0.7"
35903590
babel-jest: "npm:^29.7.0"
35913591
del-cli: "npm:^5.1.0"
@@ -3597,18 +3597,18 @@ __metadata:
35973597
jest-matcher-utils: "npm:^29.7.0"
35983598
prettier: "npm:^2.8.8"
35993599
pretty-format: "npm:^29.7.0"
3600-
react: "npm:18.2.0"
3600+
react: "npm:18.3.1"
36013601
react-native: "npm:0.74.1"
3602-
react-test-renderer: "npm:18.2.0"
3602+
react-test-renderer: "npm:18.3.1"
36033603
redent: "npm:^3.0.0"
36043604
release-it: "npm:^17.2.1"
36053605
strip-ansi: "npm:^6.0.1"
36063606
typescript: "npm:^5.4.5"
36073607
peerDependencies:
36083608
jest: ">=28.0.0"
3609-
react: ">=16.8.0"
3610-
react-native: ">=0.59"
3611-
react-test-renderer: ">=16.8.0"
3609+
react: ">=18.2.0"
3610+
react-native: ">=0.73"
3611+
react-test-renderer: ">=18.2.0"
36123612
peerDependenciesMeta:
36133613
jest:
36143614
optional: true
@@ -3796,14 +3796,13 @@ __metadata:
37963796
languageName: node
37973797
linkType: hard
37983798

3799-
"@types/react@npm:^18.2.65":
3800-
version: 18.2.65
3801-
resolution: "@types/react@npm:18.2.65"
3799+
"@types/react@npm:^18.3.1":
3800+
version: 18.3.1
3801+
resolution: "@types/react@npm:18.3.1"
38023802
dependencies:
38033803
"@types/prop-types": "npm:*"
3804-
"@types/scheduler": "npm:*"
38053804
csstype: "npm:^3.0.2"
3806-
checksum: 10c0/91158b5a9e90489a5984bb610c3692001ecdf1d286c78384252698bcb306ef88e9434e75f01bf7739017e949e7690b7d6f1b7ef9d7097f86f3f649482a33604b
3805+
checksum: 10c0/18d856c12a4ec93f3cda2d58ef3d77a9480818afd3af895f812896fb82cfca1f35a692ab1add4ce826a4eb58a071624c7d1c8c6c4ccfb81c100d2916dc607614
38073806
languageName: node
38083807
linkType: hard
38093808

@@ -11004,7 +11003,7 @@ __metadata:
1100411003
languageName: node
1100511004
linkType: hard
1100611005

11007-
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0":
11006+
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0":
1100811007
version: 18.2.0
1100911008
resolution: "react-is@npm:18.2.0"
1101011009
checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0
@@ -11025,6 +11024,13 @@ __metadata:
1102511024
languageName: node
1102611025
linkType: hard
1102711026

11027+
"react-is@npm:^18.3.1":
11028+
version: 18.3.1
11029+
resolution: "react-is@npm:18.3.1"
11030+
checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072
11031+
languageName: node
11032+
linkType: hard
11033+
1102811034
"react-native@npm:0.74.1":
1102911035
version: 0.74.1
1103011036
resolution: "react-native@npm:0.74.1"
@@ -11097,25 +11103,25 @@ __metadata:
1109711103
languageName: node
1109811104
linkType: hard
1109911105

11100-
"react-test-renderer@npm:18.2.0":
11101-
version: 18.2.0
11102-
resolution: "react-test-renderer@npm:18.2.0"
11106+
"react-test-renderer@npm:18.3.1":
11107+
version: 18.3.1
11108+
resolution: "react-test-renderer@npm:18.3.1"
1110311109
dependencies:
11104-
react-is: "npm:^18.2.0"
11110+
react-is: "npm:^18.3.1"
1110511111
react-shallow-renderer: "npm:^16.15.0"
11106-
scheduler: "npm:^0.23.0"
11112+
scheduler: "npm:^0.23.2"
1110711113
peerDependencies:
11108-
react: ^18.2.0
11109-
checksum: 10c0/53dfada1da1e8dd0498a5601e9eea3dc6ca23c6c2694d1cab9712faea869c11e4ce1c9a618d674cb668a668b41fb6bcf9a7b0a078cd853b1922f002fa22f42c8
11114+
react: ^18.3.1
11115+
checksum: 10c0/c633558ef9af33bc68f0c4dbb5163a004c4fb9eade7bd0a7cfc0355fb367f36bd9d96533c90b7e85a146be6c525113a15f58683d269e0177ad77e2b04d4fe51c
1111011116
languageName: node
1111111117
linkType: hard
1111211118

11113-
"react@npm:18.2.0":
11114-
version: 18.2.0
11115-
resolution: "react@npm:18.2.0"
11119+
"react@npm:18.3.1":
11120+
version: 18.3.1
11121+
resolution: "react@npm:18.3.1"
1111611122
dependencies:
1111711123
loose-envify: "npm:^1.1.0"
11118-
checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8
11124+
checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3
1111911125
languageName: node
1112011126
linkType: hard
1112111127

@@ -11668,12 +11674,12 @@ __metadata:
1166811674
languageName: node
1166911675
linkType: hard
1167011676

11671-
"scheduler@npm:^0.23.0":
11672-
version: 0.23.0
11673-
resolution: "scheduler@npm:0.23.0"
11677+
"scheduler@npm:^0.23.2":
11678+
version: 0.23.2
11679+
resolution: "scheduler@npm:0.23.2"
1167411680
dependencies:
1167511681
loose-envify: "npm:^1.1.0"
11676-
checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd
11682+
checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78
1167711683
languageName: node
1167811684
linkType: hard
1167911685

0 commit comments

Comments
 (0)