expo-build-properties 1.0.0 → 1.0.2
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 +10 -0
- package/build/ios.d.ts +1 -0
- package/build/ios.js +17 -2
- package/build/pluginConfig.d.ts +7 -0
- package/build/pluginConfig.js +5 -0
- package/build/withBuildProperties.js +1 -0
- package/package.json +3 -3
- package/src/ios.ts +24 -5
- package/src/pluginConfig.ts +13 -0
- package/src/withBuildProperties.ts +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,16 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 1.0.2 — 2025-08-16
|
|
14
|
+
|
|
15
|
+
_This version does not introduce any user-facing changes._
|
|
16
|
+
|
|
17
|
+
## 1.0.1 — 2025-08-15
|
|
18
|
+
|
|
19
|
+
### 🎉 New features
|
|
20
|
+
|
|
21
|
+
- Add `ios.reactNativeReleaseLevel` option ([#38840](https://github.com/expo/expo/pull/38840) by [@gabrieldonadel](https://github.com/gabrieldonadel))
|
|
22
|
+
|
|
13
23
|
## 1.0.0 — 2025-08-13
|
|
14
24
|
|
|
15
25
|
### 🎉 New features
|
package/build/ios.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ import { ConfigPlugin } from 'expo/config-plugins';
|
|
|
2
2
|
import type { PluginConfigType } from './pluginConfig';
|
|
3
3
|
export declare const withIosBuildProperties: ConfigPlugin<PluginConfigType>;
|
|
4
4
|
export declare const withIosDeploymentTarget: ConfigPlugin<PluginConfigType>;
|
|
5
|
+
export declare const withIosInfoPlist: ConfigPlugin<PluginConfigType>;
|
package/build/ios.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withIosDeploymentTarget = exports.withIosBuildProperties = void 0;
|
|
3
|
+
exports.withIosInfoPlist = exports.withIosDeploymentTarget = exports.withIosBuildProperties = void 0;
|
|
4
4
|
const config_plugins_1 = require("expo/config-plugins");
|
|
5
5
|
const { createBuildPodfilePropsConfigPlugin } = config_plugins_1.IOSConfig.BuildProperties;
|
|
6
6
|
exports.withIosBuildProperties = createBuildPodfilePropsConfigPlugin([
|
|
@@ -8,7 +8,8 @@ exports.withIosBuildProperties = createBuildPodfilePropsConfigPlugin([
|
|
|
8
8
|
propName: 'newArchEnabled',
|
|
9
9
|
propValueGetter: (config) => {
|
|
10
10
|
if (config.ios?.newArchEnabled !== undefined) {
|
|
11
|
-
config_plugins_1.WarningAggregator.addWarningIOS('withIosBuildProperties', 'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead
|
|
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');
|
|
12
13
|
}
|
|
13
14
|
return config.ios?.newArchEnabled?.toString();
|
|
14
15
|
},
|
|
@@ -53,6 +54,20 @@ const withIosDeploymentTarget = (config, props) => {
|
|
|
53
54
|
return config;
|
|
54
55
|
};
|
|
55
56
|
exports.withIosDeploymentTarget = withIosDeploymentTarget;
|
|
57
|
+
const withIosInfoPlist = (config, props) => {
|
|
58
|
+
const reactNativeReleaseLevel = props.ios?.reactNativeReleaseLevel;
|
|
59
|
+
if (reactNativeReleaseLevel) {
|
|
60
|
+
config = withIosReactNativeReleaseLevel(config, { reactNativeReleaseLevel });
|
|
61
|
+
}
|
|
62
|
+
return config;
|
|
63
|
+
};
|
|
64
|
+
exports.withIosInfoPlist = withIosInfoPlist;
|
|
65
|
+
const withIosReactNativeReleaseLevel = (config, { reactNativeReleaseLevel }) => {
|
|
66
|
+
return (0, config_plugins_1.withInfoPlist)(config, (config) => {
|
|
67
|
+
config.modResults['ReactNativeReleaseLevel'] = reactNativeReleaseLevel;
|
|
68
|
+
return config;
|
|
69
|
+
});
|
|
70
|
+
};
|
|
56
71
|
const withIosDeploymentTargetXcodeProject = (config, props) => {
|
|
57
72
|
return (0, config_plugins_1.withXcodeProject)(config, (config) => {
|
|
58
73
|
config.modResults = updateDeploymentTargetXcodeProject(config.modResults, props.deploymentTarget);
|
package/build/pluginConfig.d.ts
CHANGED
|
@@ -339,6 +339,13 @@ export interface PluginConfigTypeIos {
|
|
|
339
339
|
* @deprecated Use `buildReactNativeFromSource` instead.
|
|
340
340
|
*/
|
|
341
341
|
buildFromSource?: boolean;
|
|
342
|
+
/**
|
|
343
|
+
* The React Native release level to use for the project.
|
|
344
|
+
* This can be used to enable different sets of internal React Native feature flags.
|
|
345
|
+
*
|
|
346
|
+
* @default 'stable'
|
|
347
|
+
*/
|
|
348
|
+
reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
|
|
342
349
|
}
|
|
343
350
|
/**
|
|
344
351
|
* Interface representing extra CocoaPods dependency.
|
package/build/pluginConfig.js
CHANGED
|
@@ -182,6 +182,11 @@ const schema = {
|
|
|
182
182
|
},
|
|
183
183
|
buildReactNativeFromSource: { type: 'boolean', nullable: true },
|
|
184
184
|
buildFromSource: { type: 'boolean', nullable: true },
|
|
185
|
+
reactNativeReleaseLevel: {
|
|
186
|
+
type: 'string',
|
|
187
|
+
enum: ['stable', 'canary', 'experimental'],
|
|
188
|
+
nullable: true,
|
|
189
|
+
},
|
|
185
190
|
},
|
|
186
191
|
nullable: true,
|
|
187
192
|
},
|
|
@@ -26,6 +26,7 @@ const withBuildProperties = (config, props) => {
|
|
|
26
26
|
config = (0, android_1.withAndroidDayNightTheme)(config, pluginConfig);
|
|
27
27
|
config = (0, ios_1.withIosBuildProperties)(config, pluginConfig);
|
|
28
28
|
config = (0, ios_1.withIosDeploymentTarget)(config, pluginConfig);
|
|
29
|
+
config = (0, ios_1.withIosInfoPlist)(config, pluginConfig);
|
|
29
30
|
return config;
|
|
30
31
|
};
|
|
31
32
|
exports.withBuildProperties = withBuildProperties;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-build-properties",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
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,10 +35,10 @@
|
|
|
35
35
|
"semver": "^7.6.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"expo-module-scripts": "^5.0.
|
|
38
|
+
"expo-module-scripts": "^5.0.2"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"expo": "*"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "eaa9b645058cf2233fbb27bb21a19bc605c90a88"
|
|
44
44
|
}
|
package/src/ios.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
IOSConfig,
|
|
3
2
|
ConfigPlugin,
|
|
4
|
-
|
|
5
|
-
XcodeProject,
|
|
3
|
+
IOSConfig,
|
|
6
4
|
WarningAggregator,
|
|
5
|
+
XcodeProject,
|
|
6
|
+
withInfoPlist,
|
|
7
|
+
withXcodeProject,
|
|
7
8
|
} from 'expo/config-plugins';
|
|
8
9
|
|
|
9
10
|
import type { PluginConfigType } from './pluginConfig';
|
|
@@ -18,8 +19,8 @@ export const withIosBuildProperties = createBuildPodfilePropsConfigPlugin<Plugin
|
|
|
18
19
|
if (config.ios?.newArchEnabled !== undefined) {
|
|
19
20
|
WarningAggregator.addWarningIOS(
|
|
20
21
|
'withIosBuildProperties',
|
|
21
|
-
'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead
|
|
22
|
-
|
|
22
|
+
'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead.\n' +
|
|
23
|
+
'https://docs.expo.dev/versions/latest/config/app/#newarchenabled'
|
|
23
24
|
);
|
|
24
25
|
}
|
|
25
26
|
return config.ios?.newArchEnabled?.toString();
|
|
@@ -72,6 +73,24 @@ export const withIosDeploymentTarget: ConfigPlugin<PluginConfigType> = (config,
|
|
|
72
73
|
return config;
|
|
73
74
|
};
|
|
74
75
|
|
|
76
|
+
export const withIosInfoPlist: ConfigPlugin<PluginConfigType> = (config, props) => {
|
|
77
|
+
const reactNativeReleaseLevel = props.ios?.reactNativeReleaseLevel;
|
|
78
|
+
if (reactNativeReleaseLevel) {
|
|
79
|
+
config = withIosReactNativeReleaseLevel(config, { reactNativeReleaseLevel });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return config;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const withIosReactNativeReleaseLevel: ConfigPlugin<{
|
|
86
|
+
reactNativeReleaseLevel: 'stable' | 'canary' | 'experimental';
|
|
87
|
+
}> = (config, { reactNativeReleaseLevel }) => {
|
|
88
|
+
return withInfoPlist(config, (config) => {
|
|
89
|
+
config.modResults['ReactNativeReleaseLevel'] = reactNativeReleaseLevel;
|
|
90
|
+
return config;
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
75
94
|
const withIosDeploymentTargetXcodeProject: ConfigPlugin<{ deploymentTarget: string }> = (
|
|
76
95
|
config,
|
|
77
96
|
props
|
package/src/pluginConfig.ts
CHANGED
|
@@ -395,6 +395,14 @@ export interface PluginConfigTypeIos {
|
|
|
395
395
|
* @deprecated Use `buildReactNativeFromSource` instead.
|
|
396
396
|
*/
|
|
397
397
|
buildFromSource?: boolean;
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* The React Native release level to use for the project.
|
|
401
|
+
* This can be used to enable different sets of internal React Native feature flags.
|
|
402
|
+
*
|
|
403
|
+
* @default 'stable'
|
|
404
|
+
*/
|
|
405
|
+
reactNativeReleaseLevel?: 'stable' | 'canary' | 'experimental';
|
|
398
406
|
}
|
|
399
407
|
|
|
400
408
|
/**
|
|
@@ -750,6 +758,11 @@ const schema: JSONSchemaType<PluginConfigType> = {
|
|
|
750
758
|
},
|
|
751
759
|
buildReactNativeFromSource: { type: 'boolean', nullable: true },
|
|
752
760
|
buildFromSource: { type: 'boolean', nullable: true },
|
|
761
|
+
reactNativeReleaseLevel: {
|
|
762
|
+
type: 'string',
|
|
763
|
+
enum: ['stable', 'canary', 'experimental'],
|
|
764
|
+
nullable: true,
|
|
765
|
+
},
|
|
753
766
|
},
|
|
754
767
|
nullable: true,
|
|
755
768
|
},
|
|
@@ -2,14 +2,14 @@ import { ConfigPlugin } from 'expo/config-plugins';
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
withAndroidBuildProperties,
|
|
5
|
+
withAndroidCleartextTraffic,
|
|
6
|
+
withAndroidDayNightTheme,
|
|
5
7
|
withAndroidProguardRules,
|
|
6
8
|
withAndroidPurgeProguardRulesOnce,
|
|
7
|
-
withAndroidCleartextTraffic,
|
|
8
9
|
withAndroidQueries,
|
|
9
|
-
withAndroidDayNightTheme,
|
|
10
10
|
withAndroidSettingsGradle,
|
|
11
11
|
} from './android';
|
|
12
|
-
import { withIosBuildProperties, withIosDeploymentTarget } from './ios';
|
|
12
|
+
import { withIosBuildProperties, withIosDeploymentTarget, withIosInfoPlist } from './ios';
|
|
13
13
|
import { PluginConfigType, validateConfig } from './pluginConfig';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -37,6 +37,7 @@ export const withBuildProperties: ConfigPlugin<PluginConfigType> = (config, prop
|
|
|
37
37
|
|
|
38
38
|
config = withIosBuildProperties(config, pluginConfig);
|
|
39
39
|
config = withIosDeploymentTarget(config, pluginConfig);
|
|
40
|
+
config = withIosInfoPlist(config, pluginConfig);
|
|
40
41
|
|
|
41
42
|
return config;
|
|
42
43
|
};
|