Skip to content

Commit

Permalink
chore: remove React 16 & 17 code
Browse files Browse the repository at this point in the history
chore: remove more

chore: react version 18.3.1

docs: migration guide
  • Loading branch information
mdjastrzebski committed May 6, 2024
1 parent 6f98f42 commit 3284d7c
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 78 deletions.
13 changes: 6 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
"clean": "del build",
"test": "jest",
"test:ci": "jest --maxWorkers=2 --collectCoverage=true --coverage-provider=v8",
"test:react-17": "scripts/test_react_17",
"typecheck": "tsc",
"flow": "flow",
"copy-flowtypes": "cp typings/index.flow.js build",
Expand Down Expand Up @@ -59,9 +58,9 @@
},
"peerDependencies": {
"jest": ">=28.0.0",
"react": ">=16.8.0",
"react-native": ">=0.59",
"react-test-renderer": ">=16.8.0"
"react": ">=18.2.0",
"react-native": ">=0.73",
"react-test-renderer": ">=18.2.0"
},
"peerDependenciesMeta": {
"jest": {
Expand All @@ -80,7 +79,7 @@
"@release-it/conventional-changelog": "^8.0.1",
"@relmify/jest-serializer-strip-ansi": "^1.0.2",
"@types/jest": "^29.5.12",
"@types/react": "^18.2.65",
"@types/react": "^18.3.1",
"@types/react-test-renderer": "^18.0.7",
"babel-jest": "^29.7.0",
"del-cli": "^5.1.0",
Expand All @@ -90,9 +89,9 @@
"flow-bin": "~0.170.0",
"jest": "^29.7.0",
"prettier": "^2.8.8",
"react": "18.2.0",
"react": "18.3.1",
"react-native": "0.74.1",
"react-test-renderer": "18.2.0",
"react-test-renderer": "18.3.1",
"release-it": "^17.2.1",
"strip-ansi": "^6.0.1",
"typescript": "^5.4.5"
Expand Down
12 changes: 0 additions & 12 deletions scripts/test_react_17

This file was deleted.

5 changes: 1 addition & 4 deletions src/act.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// This file and the act() implementation is sourced from react-testing-library
// https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js
import { act as reactTestRendererAct } from 'react-test-renderer';
import { checkReactVersionAtLeast } from './react-versions';

type ReactAct = typeof reactTestRendererAct;

Expand Down Expand Up @@ -72,9 +71,7 @@ function withGlobalActEnvironment(actImplementation: ReactAct) {
};
}

const act: ReactAct = checkReactVersionAtLeast(18, 0)
? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)
: reactTestRendererAct;
const act = withGlobalActEnvironment(reactTestRendererAct) as ReactAct;

export default act;
export { setIsReactActEnvironment as setReactActEnvironment, getIsReactActEnvironment };
33 changes: 9 additions & 24 deletions src/helpers/wrap-async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,15 @@ import { checkReactVersionAtLeast } from '../react-versions';
* @returns Result of the callback
*/
export async function wrapAsync<Result>(callback: () => Promise<Result>): Promise<Result> {
if (checkReactVersionAtLeast(18, 0)) {
const previousActEnvironment = getIsReactActEnvironment();
setReactActEnvironment(false);
const previousActEnvironment = getIsReactActEnvironment();
setReactActEnvironment(false);

try {
const result = await callback();
// Flush the microtask queue before restoring the `act` environment
await flushMicroTasks();
return result;
} finally {
setReactActEnvironment(previousActEnvironment);
}
try {
const result = await callback();
// Flush the microtask queue before restoring the `act` environment
await flushMicroTasks();
return result;
} finally {
setReactActEnvironment(previousActEnvironment);
}

if (!checkReactVersionAtLeast(16, 9)) {
return callback();
}

// Wrapping with act for react version 16.9 to 17.x
let result: Result;
await act(async () => {
result = await callback();
});

// Either we have result or `callback` threw error
return result!;
}
6 changes: 6 additions & 0 deletions website/docs/MigrationV13.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ Migration to React Native Testing Library version 13 from version 12.x.

# Breaking changes

## Supported React and React Native versions

This version supports only React 19 and corresponding React Native versions. If you use React 18 or 19, please use latest of v12 versions.

[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].

## Removed deprecated \*ByAccessibilityState queries

This deprecated query has been removed as is typically too general to give meaningful results. Use one of the following options:
Expand Down
4 changes: 0 additions & 4 deletions website/docs/OtherAPIs.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,6 @@ await waitFor(() => {
}, 10000);
```

:::info
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).
:::

:::note
If you receive warnings related to `act()` function consult our [Undestanding Act](./UnderstandingAct.md) function document.
:::
Expand Down
60 changes: 33 additions & 27 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3585,7 +3585,7 @@ __metadata:
"@release-it/conventional-changelog": "npm:^8.0.1"
"@relmify/jest-serializer-strip-ansi": "npm:^1.0.2"
"@types/jest": "npm:^29.5.12"
"@types/react": "npm:^18.2.65"
"@types/react": "npm:^18.3.1"
"@types/react-test-renderer": "npm:^18.0.7"
babel-jest: "npm:^29.7.0"
del-cli: "npm:^5.1.0"
Expand All @@ -3597,18 +3597,18 @@ __metadata:
jest-matcher-utils: "npm:^29.7.0"
prettier: "npm:^2.8.8"
pretty-format: "npm:^29.7.0"
react: "npm:18.2.0"
react: "npm:18.3.1"
react-native: "npm:0.74.1"
react-test-renderer: "npm:18.2.0"
react-test-renderer: "npm:18.3.1"
redent: "npm:^3.0.0"
release-it: "npm:^17.2.1"
strip-ansi: "npm:^6.0.1"
typescript: "npm:^5.4.5"
peerDependencies:
jest: ">=28.0.0"
react: ">=16.8.0"
react-native: ">=0.59"
react-test-renderer: ">=16.8.0"
react: ">=18.2.0"
react-native: ">=0.73"
react-test-renderer: ">=18.2.0"
peerDependenciesMeta:
jest:
optional: true
Expand Down Expand Up @@ -3796,14 +3796,13 @@ __metadata:
languageName: node
linkType: hard

"@types/react@npm:^18.2.65":
version: 18.2.65
resolution: "@types/react@npm:18.2.65"
"@types/react@npm:^18.3.1":
version: 18.3.1
resolution: "@types/react@npm:18.3.1"
dependencies:
"@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/91158b5a9e90489a5984bb610c3692001ecdf1d286c78384252698bcb306ef88e9434e75f01bf7739017e949e7690b7d6f1b7ef9d7097f86f3f649482a33604b
checksum: 10c0/18d856c12a4ec93f3cda2d58ef3d77a9480818afd3af895f812896fb82cfca1f35a692ab1add4ce826a4eb58a071624c7d1c8c6c4ccfb81c100d2916dc607614
languageName: node
linkType: hard

Expand Down Expand Up @@ -11004,7 +11003,7 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0":
"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0":
version: 18.2.0
resolution: "react-is@npm:18.2.0"
checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0
Expand All @@ -11025,6 +11024,13 @@ __metadata:
languageName: node
linkType: hard

"react-is@npm:^18.3.1":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072
languageName: node
linkType: hard

"react-native@npm:0.74.1":
version: 0.74.1
resolution: "react-native@npm:0.74.1"
Expand Down Expand Up @@ -11097,25 +11103,25 @@ __metadata:
languageName: node
linkType: hard

"react-test-renderer@npm:18.2.0":
version: 18.2.0
resolution: "react-test-renderer@npm:18.2.0"
"react-test-renderer@npm:18.3.1":
version: 18.3.1
resolution: "react-test-renderer@npm:18.3.1"
dependencies:
react-is: "npm:^18.2.0"
react-is: "npm:^18.3.1"
react-shallow-renderer: "npm:^16.15.0"
scheduler: "npm:^0.23.0"
scheduler: "npm:^0.23.2"
peerDependencies:
react: ^18.2.0
checksum: 10c0/53dfada1da1e8dd0498a5601e9eea3dc6ca23c6c2694d1cab9712faea869c11e4ce1c9a618d674cb668a668b41fb6bcf9a7b0a078cd853b1922f002fa22f42c8
react: ^18.3.1
checksum: 10c0/c633558ef9af33bc68f0c4dbb5163a004c4fb9eade7bd0a7cfc0355fb367f36bd9d96533c90b7e85a146be6c525113a15f58683d269e0177ad77e2b04d4fe51c
languageName: node
linkType: hard

"react@npm:18.2.0":
version: 18.2.0
resolution: "react@npm:18.2.0"
"react@npm:18.3.1":
version: 18.3.1
resolution: "react@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8
checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3
languageName: node
linkType: hard

Expand Down Expand Up @@ -11668,12 +11674,12 @@ __metadata:
languageName: node
linkType: hard

"scheduler@npm:^0.23.0":
version: 0.23.0
resolution: "scheduler@npm:0.23.0"
"scheduler@npm:^0.23.2":
version: 0.23.2
resolution: "scheduler@npm:0.23.2"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd
checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78
languageName: node
linkType: hard

Expand Down

0 comments on commit 3284d7c

Please sign in to comment.