Skip to content

Commit d23cd80

Browse files
ntuckerrenovate[bot]cursoragent
authored
chore: React Native 0.85, @react-native/jest-preset, React 19.2.3 alignment (#3890)
* pkg: Update react to v19.2.5 * chore: upgrade React Native 0.85, align Jest preset, pin React 19.2.3 Bump react-native to 0.85.0, babel-plugin-syntax-hermes-parser to ^0.35.0, and add @react-native/jest-preset for the ReactNative Jest project (resolver, setup, env, asset transformer, react-native subpath mapper). Pin react, react-dom, and react-test-renderer to 19.2.3 to match react-native-renderer. Fix subscriptions.native test import to use @data-client/test. Co-authored-by: Nathaniel Tucker <me@ntucker.me> * chore: remove changeset for internal RN/Jest CI update Co-authored-by: Nathaniel Tucker <me@ntucker.me> * fix: align package-lock.json react versions to 19.2.3 to match package.json The lockfiles for github-app, nextjs, and todo-app had react and react-dom at 19.2.5 while their package.json files pinned 19.2.3. This mismatch would cause npm ci to fail. Regenerated lockfiles to resolve correctly. Co-authored-by: Nathaniel Tucker <me@ntucker.me> * fix: remove redundant slash in react-native moduleNameMapper replacement The capture group ($|/.*) already includes the leading slash for sub-path imports like react-native/Libraries/Text, so the extra / in the replacement template produced double slashes (e.g. <rnDir>//Libraries/Text). Removing the redundant / fixes both bare react-native (empty capture) and sub-path imports. Co-authored-by: Nathaniel Tucker <me@ntucker.me> * fix(jest): avoid double slash in react-native moduleNameMapper replacement Co-authored-by: Nathaniel Tucker <me@ntucker.me> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 7df6a49 commit d23cd80

6 files changed

Lines changed: 230 additions & 231 deletions

File tree

jest.config.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
process.env.ANANSI_JEST_BABELCONFIG = 'babel.config.js';
22
process.env.ANANSI_JEST_TSCONFIG = 'tsconfig.test.json';
33

4+
const path = require('path');
5+
46
const baseConfig = {
57
testEnvironmentOptions: {
68
globalsCleanup: 'on',
@@ -88,30 +90,38 @@ const projects = [
8890
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.node\\.(j|t)sx?$',
8991
},
9092
{
91-
// RN preset at https://github.com/facebook/react-native/blob/main/packages/react-native/jest-preset.js
93+
// Mirrors @react-native/jest-preset (not used as preset: we layer on @anansi/jest-preset).
94+
// https://github.com/facebook/react-native/blob/main/packages/jest-preset/jest-preset.js
9295
...baseConfig,
9396
rootDir: __dirname,
9497
roots: packages.map(pkgName => `<rootDir>/packages/${pkgName}/src`),
9598
displayName: 'ReactNative',
9699
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.native\\.(j|t)sx?$',
97-
testEnvironment: require.resolve('react-native/jest/react-native-env.js'),
100+
resolver: require.resolve('@react-native/jest-preset/jest/resolver.js'),
101+
moduleNameMapper: {
102+
...baseConfig.moduleNameMapper,
103+
'^react-native($|/.*)': `${path.dirname(
104+
require.resolve('react-native/package.json'),
105+
)}$1`,
106+
},
107+
testEnvironment:
108+
require.resolve('@react-native/jest-preset/jest/react-native-env.js'),
98109
transformIgnorePatterns: [
99-
'node_modules\\/(?!(((jest-)?react-native)|@react-native(-community)?|@react-navigation))', //from RN preset
110+
'node_modules\\/(?!(((jest-)?react-native)|@react-native(-community)?|@react-navigation))',
100111
'<rootDir>/.*__tests__/[^/]+\\.(web|node)\\.(j|t)sx?$',
101112
'<rootDir>/scripts',
102113
],
103114
setupFiles: [
104-
require.resolve('react-native/jest/setup.js'), //from RN preset
115+
require.resolve('@react-native/jest-preset/jest/setup.js'),
105116
'<rootDir>/scripts/testSetupNative.js',
106117
],
107118
transform: {
108119
//'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js', //setup.js needs to be transformed, but preprocessor screws everything else up
109120
...baseConfig.transform,
110121
'^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$':
111-
require.resolve('react-native/jest/assetFileTransformer.js'), //from RN preset
122+
require.resolve('@react-native/jest-preset/jest/assetFileTransformer.js'),
112123
},
113124
haste: {
114-
//from RN preset
115125
defaultPlatform: 'ios',
116126
platforms: ['android', 'ios', 'native'],
117127
},

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
"@data-client/react": "workspace:*",
7070
"@data-client/rest": "workspace:*",
7171
"@data-client/test": "workspace:*",
72+
"@react-native/jest-preset": "0.85.0",
7273
"@react-navigation/native": "^7.0.0",
7374
"@react-navigation/native-stack": "^7.0.0",
7475
"@testing-library/dom": "^10.4.0",
@@ -81,7 +82,7 @@
8182
"@types/react": "19.2.14",
8283
"@types/react-dom": "19.2.3",
8384
"babel-plugin-module-resolver": "5.0.3",
84-
"babel-plugin-syntax-hermes-parser": "^0.34.0",
85+
"babel-plugin-syntax-hermes-parser": "^0.35.0",
8586
"benchmark": "^2.1.4",
8687
"copyfiles": "^2.4.1",
8788
"core-js": "^3.40.0",
@@ -96,7 +97,7 @@
9697
"prettier": "3.8.1",
9798
"react": "19.2.3",
9899
"react-dom": "19.2.3",
99-
"react-native": "0.84.1",
100+
"react-native": "0.85.0",
100101
"react-native-safe-area-context": "^5.0.0",
101102
"react-native-screens": "^4.1.0",
102103
"react-test-renderer": "19.2.3",

packages/react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@
215215
"qs": "^6.14.2",
216216
"react": "19.2.3",
217217
"react-dom": "^19.0.0",
218-
"react-native": "0.84.1",
218+
"react-native": "0.85.0",
219219
"react-native-safe-area-context": "^5.0.0",
220220
"react-native-screens": "^4.1.0",
221221
"react-test-renderer": "^19.0.0",

packages/react/src/hooks/__tests__/subscriptions.native.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { actionTypes, Controller } from '@data-client/core';
22
import { CacheProvider, useCache } from '@data-client/react';
33
import { DataProvider as ExternalDataProvider } from '@data-client/react/redux';
4+
import { makeRenderDataClient } from '@data-client/test';
45
import { renderHook } from '@testing-library/react-native';
56
import {
67
PollingArticleResource,
78
ArticleResource,
89
Article,
910
} from '__tests__/new';
1011

11-
import { makeRenderDataClient } from '../../../../test';
1212
import { ControllerContext } from '../../context';
1313
import useSubscription from '../useSubscription';
1414

packages/test/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
"jest": "^30.0.0",
170170
"react": "19.2.3",
171171
"react-dom": "19.2.3",
172-
"react-native": "0.84.1",
172+
"react-native": "0.85.0",
173173
"react-test-renderer": "*",
174174
"rollup-plugins": "workspace:*"
175175
}

0 commit comments

Comments
 (0)