expo-build-properties 1.0.11-canary-20251216-3f01dbf → 2.0.0-canary-20251230-fc48ddc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,8 +4,12 @@
4
4
 
5
5
  ### 🛠 Breaking changes
6
6
 
7
+ - Remove deprecated `android.newArchEnabled` and `ios.newArchEnabled` properties. ([#41684](https://github.com/expo/expo/pull/41684) by [@gabrieldonadel](https://github.com/gabrieldonadel))
8
+
7
9
  ### 🎉 New features
8
10
 
11
+ - Add support for enabling Hermes V1 ([#41715](https://github.com/expo/expo/pull/41715) by [@gabrieldonadel](https://github.com/gabrieldonadel))
12
+
9
13
  ### 🐛 Bug fixes
10
14
 
11
15
  ### 💡 Others
package/build/android.js CHANGED
@@ -13,15 +13,6 @@ const androidQueryUtils_1 = require("./androidQueryUtils");
13
13
  const fileContentsUtils_1 = require("./fileContentsUtils");
14
14
  const { createBuildGradlePropsConfigPlugin } = config_plugins_1.AndroidConfig.BuildProperties;
15
15
  exports.withAndroidBuildProperties = createBuildGradlePropsConfigPlugin([
16
- {
17
- propName: 'newArchEnabled',
18
- propValueGetter: (config) => {
19
- if (config.android?.newArchEnabled !== undefined) {
20
- config_plugins_1.WarningAggregator.addWarningAndroid('withAndroidBuildProperties', 'android.newArchEnabled is deprecated, use app config `newArchEnabled` instead.', 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled');
21
- }
22
- return config.android?.newArchEnabled?.toString();
23
- },
24
- },
25
16
  {
26
17
  propName: 'android.minSdkVersion',
27
18
  propValueGetter: (config) => config.android?.minSdkVersion?.toString(),
@@ -110,6 +101,15 @@ exports.withAndroidBuildProperties = createBuildGradlePropsConfigPlugin([
110
101
  propName: 'exclusiveEnterpriseRepository',
111
102
  propValueGetter: (config) => config.android?.exclusiveMavenMirror,
112
103
  },
104
+ {
105
+ propName: 'hermesV1Enabled',
106
+ propValueGetter: (config) => {
107
+ if (config.android?.useHermesV1 && config.android?.buildReactNativeFromSource !== true) {
108
+ config_plugins_1.WarningAggregator.addWarningAndroid('withAndroidBuildProperties', 'Hermes V1 requires building React Native from source. Set `buildReactNativeFromSource` to `true` to enable it.');
109
+ }
110
+ return config.android?.useHermesV1?.toString();
111
+ },
112
+ },
113
113
  ], 'withAndroidBuildProperties');
114
114
  /**
115
115
  * Appends `props.android.extraProguardRules` content into `android/app/proguard-rules.pro`
package/build/ios.js CHANGED
@@ -4,16 +4,6 @@ exports.withIosInfoPlist = exports.withIosDeploymentTarget = exports.withIosBuil
4
4
  const config_plugins_1 = require("expo/config-plugins");
5
5
  const { createBuildPodfilePropsConfigPlugin } = config_plugins_1.IOSConfig.BuildProperties;
6
6
  exports.withIosBuildProperties = createBuildPodfilePropsConfigPlugin([
7
- {
8
- propName: 'newArchEnabled',
9
- propValueGetter: (config) => {
10
- if (config.ios?.newArchEnabled !== undefined) {
11
- config_plugins_1.WarningAggregator.addWarningIOS('withIosBuildProperties', 'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead.\n' +
12
- 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled');
13
- }
14
- return config.ios?.newArchEnabled?.toString();
15
- },
16
- },
17
7
  {
18
8
  propName: 'ios.useFrameworks',
19
9
  propValueGetter: (config) => config.ios?.useFrameworks,
@@ -45,6 +35,15 @@ exports.withIosBuildProperties = createBuildPodfilePropsConfigPlugin([
45
35
  propName: 'ios.buildReactNativeFromSource',
46
36
  propValueGetter: (config) => config.ios?.buildReactNativeFromSource?.toString(),
47
37
  },
38
+ {
39
+ propName: 'expo.useHermesV1',
40
+ propValueGetter: (config) => {
41
+ if (config.ios?.useHermesV1 && config.ios?.buildReactNativeFromSource !== true) {
42
+ config_plugins_1.WarningAggregator.addWarningIOS('withIosBuildProperties', 'Hermes V1 requires building React Native from source. Set `buildReactNativeFromSource` to `true` to enable it.');
43
+ }
44
+ return config.ios?.useHermesV1?.toString();
45
+ },
46
+ },
48
47
  ], 'withIosBuildProperties');
49
48
  const withIosDeploymentTarget = (config, props) => {
50
49
  const deploymentTarget = props.ios?.deploymentTarget;
@@ -18,13 +18,6 @@ export interface PluginConfigType {
18
18
  * @platform android
19
19
  */
20
20
  export interface PluginConfigTypeAndroid {
21
- /**
22
- * Enable React Native New Architecture for Android platform.
23
- *
24
- * @deprecated Use [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) in
25
- * app config file instead.
26
- */
27
- newArchEnabled?: boolean;
28
21
  /**
29
22
  * Override the default `minSdkVersion` version number in **build.gradle**.
30
23
  * */
@@ -184,6 +177,15 @@ export interface PluginConfigTypeAndroid {
184
177
  * @default 'stable'
185
178
  */
186
179
  reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
180
+ /**
181
+ * Enable the experimental Hermes V1 engine.
182
+ *
183
+ * In React Native 0.83, using Hermes V1 requires building React Native from source.
184
+ * You must set `buildReactNativeFromSource` to `true` when enabling this option.
185
+ *
186
+ * @default false
187
+ */
188
+ useHermesV1?: boolean;
187
189
  }
188
190
  /**
189
191
  * @platform android
@@ -260,13 +262,6 @@ export type AndroidMavenRepositoryCredentials = AndroidMavenRepositoryPasswordCr
260
262
  * @platform ios
261
263
  */
262
264
  export interface PluginConfigTypeIos {
263
- /**
264
- * Enable React Native New Architecture for iOS platform.
265
- *
266
- * @deprecated Use [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) in
267
- * app config file instead.
268
- */
269
- newArchEnabled?: boolean;
270
265
  /**
271
266
  * Override the default iOS "Deployment Target" version in the following projects:
272
267
  * - in CocoaPods projects,
@@ -353,6 +348,15 @@ export interface PluginConfigTypeIos {
353
348
  * @default 'stable'
354
349
  */
355
350
  reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
351
+ /**
352
+ * Enable the experimental Hermes V1 engine.
353
+ *
354
+ * In React Native 0.83, using Hermes V1 requires building React Native from source.
355
+ * You must set `buildReactNativeFromSource` to `true` when enabling this option.
356
+ *
357
+ * @default false
358
+ */
359
+ useHermesV1?: boolean;
356
360
  }
357
361
  /**
358
362
  * Interface representing extra CocoaPods dependency.
@@ -27,7 +27,6 @@ const schema = {
27
27
  android: {
28
28
  type: 'object',
29
29
  properties: {
30
- newArchEnabled: { type: 'boolean', nullable: true },
31
30
  minSdkVersion: { type: 'integer', nullable: true },
32
31
  compileSdkVersion: { type: 'integer', nullable: true },
33
32
  targetSdkVersion: { type: 'integer', nullable: true },
@@ -146,13 +145,13 @@ const schema = {
146
145
  enum: ['stable', 'canary', 'experimental'],
147
146
  nullable: true,
148
147
  },
148
+ useHermesV1: { type: 'boolean', nullable: true },
149
149
  },
150
150
  nullable: true,
151
151
  },
152
152
  ios: {
153
153
  type: 'object',
154
154
  properties: {
155
- newArchEnabled: { type: 'boolean', nullable: true },
156
155
  deploymentTarget: { type: 'string', pattern: '\\d+\\.\\d+', nullable: true },
157
156
  useFrameworks: { type: 'string', enum: ['static', 'dynamic'], nullable: true },
158
157
  forceStaticLinking: { type: 'array', items: { type: 'string' }, nullable: true },
@@ -187,6 +186,7 @@ const schema = {
187
186
  enum: ['stable', 'canary', 'experimental'],
188
187
  nullable: true,
189
188
  },
189
+ useHermesV1: { type: 'boolean', nullable: true },
190
190
  },
191
191
  nullable: true,
192
192
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-build-properties",
3
- "version": "1.0.11-canary-20251216-3f01dbf",
3
+ "version": "2.0.0-canary-20251230-fc48ddc",
4
4
  "description": "Config plugin to customize native build properties on prebuild",
5
5
  "main": "build/withBuildProperties.js",
6
6
  "types": "build/withBuildProperties.d.ts",
@@ -35,9 +35,9 @@
35
35
  "semver": "^7.6.0"
36
36
  },
37
37
  "devDependencies": {
38
- "expo-module-scripts": "5.1.0-canary-20251216-3f01dbf"
38
+ "expo-module-scripts": "5.1.0-canary-20251230-fc48ddc"
39
39
  },
40
40
  "peerDependencies": {
41
- "expo": "55.0.0-canary-20251216-3f01dbf"
41
+ "expo": "55.0.0-canary-20251230-fc48ddc"
42
42
  }
43
43
  }
package/src/android.ts CHANGED
@@ -19,20 +19,6 @@ const { createBuildGradlePropsConfigPlugin } = AndroidConfig.BuildProperties;
19
19
 
20
20
  export const withAndroidBuildProperties = createBuildGradlePropsConfigPlugin<PluginConfigType>(
21
21
  [
22
- {
23
- propName: 'newArchEnabled',
24
- propValueGetter: (config) => {
25
- if (config.android?.newArchEnabled !== undefined) {
26
- WarningAggregator.addWarningAndroid(
27
- 'withAndroidBuildProperties',
28
- 'android.newArchEnabled is deprecated, use app config `newArchEnabled` instead.',
29
- 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled'
30
- );
31
- }
32
-
33
- return config.android?.newArchEnabled?.toString();
34
- },
35
- },
36
22
  {
37
23
  propName: 'android.minSdkVersion',
38
24
  propValueGetter: (config) => config.android?.minSdkVersion?.toString(),
@@ -121,6 +107,19 @@ export const withAndroidBuildProperties = createBuildGradlePropsConfigPlugin<Plu
121
107
  propName: 'exclusiveEnterpriseRepository',
122
108
  propValueGetter: (config) => config.android?.exclusiveMavenMirror,
123
109
  },
110
+ {
111
+ propName: 'hermesV1Enabled',
112
+ propValueGetter: (config) => {
113
+ if (config.android?.useHermesV1 && config.android?.buildReactNativeFromSource !== true) {
114
+ WarningAggregator.addWarningAndroid(
115
+ 'withAndroidBuildProperties',
116
+ 'Hermes V1 requires building React Native from source. Set `buildReactNativeFromSource` to `true` to enable it.'
117
+ );
118
+ }
119
+
120
+ return config.android?.useHermesV1?.toString();
121
+ },
122
+ },
124
123
  ],
125
124
  'withAndroidBuildProperties'
126
125
  );
package/src/ios.ts CHANGED
@@ -13,19 +13,6 @@ const { createBuildPodfilePropsConfigPlugin } = IOSConfig.BuildProperties;
13
13
 
14
14
  export const withIosBuildProperties = createBuildPodfilePropsConfigPlugin<PluginConfigType>(
15
15
  [
16
- {
17
- propName: 'newArchEnabled',
18
- propValueGetter: (config) => {
19
- if (config.ios?.newArchEnabled !== undefined) {
20
- WarningAggregator.addWarningIOS(
21
- 'withIosBuildProperties',
22
- 'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead.\n' +
23
- 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled'
24
- );
25
- }
26
- return config.ios?.newArchEnabled?.toString();
27
- },
28
- },
29
16
  {
30
17
  propName: 'ios.useFrameworks',
31
18
  propValueGetter: (config) => config.ios?.useFrameworks,
@@ -58,6 +45,18 @@ export const withIosBuildProperties = createBuildPodfilePropsConfigPlugin<Plugin
58
45
  propName: 'ios.buildReactNativeFromSource',
59
46
  propValueGetter: (config) => config.ios?.buildReactNativeFromSource?.toString(),
60
47
  },
48
+ {
49
+ propName: 'expo.useHermesV1',
50
+ propValueGetter: (config) => {
51
+ if (config.ios?.useHermesV1 && config.ios?.buildReactNativeFromSource !== true) {
52
+ WarningAggregator.addWarningIOS(
53
+ 'withIosBuildProperties',
54
+ 'Hermes V1 requires building React Native from source. Set `buildReactNativeFromSource` to `true` to enable it.'
55
+ );
56
+ }
57
+ return config.ios?.useHermesV1?.toString();
58
+ },
59
+ },
61
60
  ],
62
61
  'withIosBuildProperties'
63
62
  );
@@ -38,13 +38,6 @@ export interface PluginConfigType {
38
38
  * @platform android
39
39
  */
40
40
  export interface PluginConfigTypeAndroid {
41
- /**
42
- * Enable React Native New Architecture for Android platform.
43
- *
44
- * @deprecated Use [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) in
45
- * app config file instead.
46
- */
47
- newArchEnabled?: boolean;
48
41
  /**
49
42
  * Override the default `minSdkVersion` version number in **build.gradle**.
50
43
  * */
@@ -216,6 +209,16 @@ export interface PluginConfigTypeAndroid {
216
209
  * @default 'stable'
217
210
  */
218
211
  reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
212
+
213
+ /**
214
+ * Enable the experimental Hermes V1 engine.
215
+ *
216
+ * In React Native 0.83, using Hermes V1 requires building React Native from source.
217
+ * You must set `buildReactNativeFromSource` to `true` when enabling this option.
218
+ *
219
+ * @default false
220
+ */
221
+ useHermesV1?: boolean;
219
222
  }
220
223
 
221
224
  // @docsMissing
@@ -307,13 +310,6 @@ export type AndroidMavenRepositoryCredentials =
307
310
  * @platform ios
308
311
  */
309
312
  export interface PluginConfigTypeIos {
310
- /**
311
- * Enable React Native New Architecture for iOS platform.
312
- *
313
- * @deprecated Use [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) in
314
- * app config file instead.
315
- */
316
- newArchEnabled?: boolean;
317
313
  /**
318
314
  * Override the default iOS "Deployment Target" version in the following projects:
319
315
  * - in CocoaPods projects,
@@ -410,6 +406,16 @@ export interface PluginConfigTypeIos {
410
406
  * @default 'stable'
411
407
  */
412
408
  reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
409
+
410
+ /**
411
+ * Enable the experimental Hermes V1 engine.
412
+ *
413
+ * In React Native 0.83, using Hermes V1 requires building React Native from source.
414
+ * You must set `buildReactNativeFromSource` to `true` when enabling this option.
415
+ *
416
+ * @default false
417
+ */
418
+ useHermesV1?: boolean;
413
419
  }
414
420
 
415
421
  /**
@@ -600,7 +606,6 @@ const schema: JSONSchemaType<PluginConfigType> = {
600
606
  android: {
601
607
  type: 'object',
602
608
  properties: {
603
- newArchEnabled: { type: 'boolean', nullable: true },
604
609
  minSdkVersion: { type: 'integer', nullable: true },
605
610
  compileSdkVersion: { type: 'integer', nullable: true },
606
611
  targetSdkVersion: { type: 'integer', nullable: true },
@@ -727,13 +732,13 @@ const schema: JSONSchemaType<PluginConfigType> = {
727
732
  enum: ['stable', 'canary', 'experimental'],
728
733
  nullable: true,
729
734
  },
735
+ useHermesV1: { type: 'boolean', nullable: true },
730
736
  },
731
737
  nullable: true,
732
738
  },
733
739
  ios: {
734
740
  type: 'object',
735
741
  properties: {
736
- newArchEnabled: { type: 'boolean', nullable: true },
737
742
  deploymentTarget: { type: 'string', pattern: '\\d+\\.\\d+', nullable: true },
738
743
  useFrameworks: { type: 'string', enum: ['static', 'dynamic'], nullable: true },
739
744
  forceStaticLinking: { type: 'array', items: { type: 'string' }, nullable: true },
@@ -770,6 +775,7 @@ const schema: JSONSchemaType<PluginConfigType> = {
770
775
  enum: ['stable', 'canary', 'experimental'],
771
776
  nullable: true,
772
777
  },
778
+ useHermesV1: { type: 'boolean', nullable: true },
773
779
  },
774
780
  nullable: true,
775
781
  },