Skip to content

Commit a1a2316

Browse files
authored
fix(apple): always enable Hermes from 0.80+ (#2444)
1 parent cfabb28 commit a1a2316

File tree

3 files changed

+41
-25
lines changed

3 files changed

+41
-25
lines changed

ios/features.mjs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,24 @@ export function isBridgelessEnabled(reactNativeVersion, options) {
6060
* @returns {boolean | "from-source"}
6161
*/
6262
export function isHermesEnabled(platform, reactNativeVersion, options) {
63-
const useHermes = process.env["USE_HERMES"];
64-
const enabled =
65-
typeof useHermes === "string"
66-
? useHermes === "1"
67-
: options["hermesEnabled"] === true;
63+
if (reactNativeVersion < v(0, 80, 0)) {
64+
const useHermes = process.env["USE_HERMES"];
65+
const enabled =
66+
typeof useHermes === "string"
67+
? useHermes === "1"
68+
: options["hermesEnabled"] === true;
6869

69-
// Hermes prebuilds for visionOS was introduced in 0.76
70-
if (enabled && platform === "visionos" && reactNativeVersion < v(0, 76, 0)) {
71-
return "from-source";
70+
// Hermes prebuilds for visionOS was introduced in 0.76
71+
if (
72+
enabled &&
73+
platform === "visionos" &&
74+
reactNativeVersion < v(0, 76, 0)
75+
) {
76+
return "from-source";
77+
}
78+
79+
return enabled;
7280
}
7381

74-
return enabled;
82+
return true;
7583
}

test/ios/app.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ const PROJECT_FILES = {
268268
testsBuildSettings: {},
269269
uitestsBuildSettings: {},
270270
useBridgeless: true,
271-
useHermes: false,
271+
useHermes: true,
272272
useNewArch: true,
273273
xcodeprojPath: "/~/node_modules/.generated/ios/ReactTestApp.xcodeproj",
274274
},
@@ -297,7 +297,7 @@ const PROJECT_FILES = {
297297
testsBuildSettings: {},
298298
uitestsBuildSettings: {},
299299
useBridgeless: true,
300-
useHermes: false,
300+
useHermes: true,
301301
useNewArch: true,
302302
xcodeprojPath: "/~/node_modules/.generated/ios/ReactTestApp.xcodeproj",
303303
},
@@ -362,7 +362,7 @@ const PROJECT_FILES = {
362362
testsBuildSettings: {},
363363
uitestsBuildSettings: {},
364364
useBridgeless: true,
365-
useHermes: false,
365+
useHermes: true,
366366
useNewArch: true,
367367
xcodeprojPath:
368368
"/~/node_modules/.generated/macos/ReactTestApp.xcodeproj",
@@ -428,7 +428,7 @@ const PROJECT_FILES = {
428428
testsBuildSettings: {},
429429
uitestsBuildSettings: {},
430430
useBridgeless: true,
431-
useHermes: false,
431+
useHermes: true,
432432
useNewArch: true,
433433
xcodeprojPath:
434434
"/~/node_modules/.generated/visionos/ReactTestApp.xcodeproj",
@@ -490,7 +490,7 @@ const PROJECT_FILES = {
490490
testsBuildSettings: {},
491491
uitestsBuildSettings: {},
492492
useBridgeless: false,
493-
useHermes: false,
493+
useHermes: true,
494494
useNewArch: false,
495495
xcodeprojPath: "/~/node_modules/.generated/ios/ReactTestApp.xcodeproj",
496496
},
@@ -549,7 +549,7 @@ const PROJECT_FILES = {
549549
testsBuildSettings: {},
550550
uitestsBuildSettings: {},
551551
useBridgeless: false,
552-
useHermes: false,
552+
useHermes: true,
553553
useNewArch: false,
554554
xcodeprojPath:
555555
"/~/node_modules/.generated/macos/ReactTestApp.xcodeproj",
@@ -609,7 +609,7 @@ const PROJECT_FILES = {
609609
testsBuildSettings: {},
610610
uitestsBuildSettings: {},
611611
useBridgeless: false,
612-
useHermes: false,
612+
useHermes: true,
613613
useNewArch: false,
614614
xcodeprojPath:
615615
"/~/node_modules/.generated/visionos/ReactTestApp.xcodeproj",

test/ios/features.test.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,31 +55,39 @@ describe("isBridgelessEnabled()", () => {
5555
});
5656

5757
describe("isHermesEnabled()", () => {
58-
before(() => {
58+
function resetEnvironmentVariables() {
5959
delete process.env["USE_HERMES"];
60-
});
60+
}
6161

62-
afterEach(() => {
63-
delete process.env["USE_HERMES"];
64-
});
62+
before(resetEnvironmentVariables);
63+
64+
afterEach(resetEnvironmentVariables);
6565

6666
for (const platform of ["ios", "macos", "visionos"] as const) {
6767
it(`[${platform}] is disabled by default`, () => {
68-
ok(!isHermesEnabled(platform, v(1, 0, 0), {}));
68+
ok(!isHermesEnabled(platform, v(0, 79, 0), {}));
6969
});
7070

7171
it(`[${platform}] returns true when enabled`, () => {
72-
ok(isHermesEnabled(platform, v(1, 0, 0), { hermesEnabled: true }));
72+
ok(isHermesEnabled(platform, v(0, 79, 0), { hermesEnabled: true }));
7373
});
7474

7575
it(`[${platform}] returns true if 'USE_HERMES=1'`, () => {
7676
process.env["USE_HERMES"] = "1";
77-
ok(isHermesEnabled(platform, v(1, 0, 0), {}));
77+
ok(isHermesEnabled(platform, v(0, 79, 0), {}));
7878
});
7979

8080
it(`[${platform}] returns false if 'USE_HERMES=0'`, () => {
8181
process.env["USE_HERMES"] = "0";
82-
ok(!isHermesEnabled(platform, v(1, 0, 0), { hermesEnabled: true }));
82+
ok(!isHermesEnabled(platform, v(0, 79, 0), { hermesEnabled: true }));
83+
});
84+
85+
it(`[${platform}] always returns true from 0.80 on`, () => {
86+
ok(isHermesEnabled(platform, v(0, 80, 0), {}));
87+
88+
process.env["USE_HERMES"] = "0";
89+
90+
ok(isHermesEnabled(platform, v(0, 80, 0), {}));
8391
});
8492
}
8593

0 commit comments

Comments
 (0)