expo-build-properties 58.0.0 → 58.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/.npmignore CHANGED
@@ -17,3 +17,8 @@ __rsc_tests__
17
17
  /android/src/androidTest/
18
18
  /android/src/test/
19
19
  /ios/Tests
20
+
21
+ # Exclude native build output (pnpm pack ignores nested .gitignore files)
22
+ .cxx/
23
+ .gradle/
24
+ /android/build/
package/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 58.0.2 — 2026-09-15
14
+
15
+ ### 🎉 New features
16
+
17
+ - Add `ios.enableSceneSupport` to adopt the UIKit scene lifecycle in SDK 57 projects. The property is a no-op on SDK 58 and newer. ([#50205](https://github.com/expo/expo/pull/50205) by [@alanjhughes](https://github.com/alanjhughes))
18
+
19
+ ## 58.0.1 — 2026-09-14
20
+
21
+ _This version does not introduce any user-facing changes._
22
+
13
23
  ## 58.0.0 — 2026-09-10
14
24
 
15
25
  ### 🐛 Bug fixes
@@ -0,0 +1,7 @@
1
+ import type { ConfigPlugin } from 'expo/config-plugins';
2
+ import type { PluginConfigType } from './pluginConfig';
3
+ /**
4
+ * Adopts the UIKit scene lifecycle in SDK 57 projects when `ios.enableSceneSupport` is set.
5
+ * SDK 58 and newer include scene support in the template, so the property is a no-op there.
6
+ */
7
+ export declare const withIosSceneSupport: ConfigPlugin<PluginConfigType>;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "withIosSceneSupport", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return withIosSceneSupport;
9
+ }
10
+ });
11
+ function _configplugins() {
12
+ const data = require("expo/config-plugins");
13
+ _configplugins = function() {
14
+ return data;
15
+ };
16
+ return data;
17
+ }
18
+ function _resolvefrom() {
19
+ const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
20
+ _resolvefrom = function() {
21
+ return data;
22
+ };
23
+ return data;
24
+ }
25
+ function _semver() {
26
+ const data = /*#__PURE__*/ _interop_require_default(require("semver"));
27
+ _semver = function() {
28
+ return data;
29
+ };
30
+ return data;
31
+ }
32
+ function _interop_require_default(obj) {
33
+ return obj && obj.__esModule ? obj : {
34
+ default: obj
35
+ };
36
+ }
37
+ const PROPERTY_NAME = 'ios.enableSceneSupport';
38
+ /** The first SDK 57 patch that ships `ExpoAppSceneDelegate` and `ExpoReactNativeFactoryProvider`. */ const MINIMUM_EXPO_VERSION = '57.0.23';
39
+ /** SDK 58 and newer adopt the scene lifecycle in the project template. */ const NATIVE_SUPPORT_SDK_MAJOR = 58;
40
+ const ORIGINAL_APP_DELEGATE = 'class AppDelegate: ExpoAppDelegate {';
41
+ const SCENE_APP_DELEGATE = 'class AppDelegate: ExpoAppDelegate, ExpoReactNativeFactoryProvider {';
42
+ const FACTORY_ASSIGNMENT = ' reactNativeFactory = factory';
43
+ const LEGACY_STARTUP = ` window = UIWindow(frame: UIScreen.main.bounds)
44
+ factory.startReactNative(
45
+ withModuleName: "main",
46
+ in: window,
47
+ launchOptions: launchOptions)
48
+ `;
49
+ /** The published SDK 57 template wraps the startup in an `os()` check. */ const LEGACY_STARTUP_WRAPPED = `#if os(iOS) || os(tvOS)
50
+ ${LEGACY_STARTUP}#endif
51
+ `;
52
+ /** Startup block shapes the plugin can remove, preceded by the blank line that separates them. */ const LEGACY_STARTUP_BLOCKS = [
53
+ `\n${LEGACY_STARTUP_WRAPPED}`,
54
+ `\n${LEGACY_STARTUP}`
55
+ ];
56
+ const SCENE_MANIFEST = {
57
+ UIApplicationSupportsMultipleScenes: false,
58
+ UISceneConfigurations: {
59
+ UIWindowSceneSessionRoleApplication: [
60
+ {
61
+ UISceneConfigurationName: 'Default Configuration',
62
+ UISceneDelegateClassName: 'EXExpoAppSceneDelegate'
63
+ }
64
+ ]
65
+ }
66
+ };
67
+ const withIosSceneSupport = (config, props)=>{
68
+ const enabled = props.ios?.enableSceneSupport;
69
+ if (enabled === undefined) {
70
+ return config;
71
+ }
72
+ const expoVersion = getExpoVersion(config);
73
+ if (expoVersion && _semver().default.major(expoVersion) >= NATIVE_SUPPORT_SDK_MAJOR) {
74
+ _configplugins().WarningAggregator.addWarningIOS(PROPERTY_NAME, `Expo SDK 58 and newer include UIKit scene lifecycle support. \`${PROPERTY_NAME}\` is no longer required and can be removed from the expo-build-properties config.`);
75
+ return config;
76
+ }
77
+ if (!expoVersion || _semver().default.lt(expoVersion, MINIMUM_EXPO_VERSION)) {
78
+ throw new Error(`\`${PROPERTY_NAME}\` requires Expo SDK ${MINIMUM_EXPO_VERSION} or a newer SDK 57 patch (received ${JSON.stringify(expoVersion ?? 'unknown')}).`);
79
+ }
80
+ config = (0, _configplugins().withAppDelegate)(config, (config)=>{
81
+ if (config.modResults.language !== 'swift') {
82
+ throw new Error(`\`${PROPERTY_NAME}\` requires the standard Expo SDK 57 Swift AppDelegate.`);
83
+ }
84
+ config.modResults.contents = updateAppDelegate(config.modResults.contents, enabled);
85
+ return config;
86
+ });
87
+ return (0, _configplugins().withInfoPlist)(config, (config)=>{
88
+ const manifest = config.modResults.UIApplicationSceneManifest;
89
+ if (enabled) {
90
+ if (manifest !== undefined && !isOwnedManifest(manifest)) {
91
+ throw new Error(`\`${PROPERTY_NAME}\` cannot enable scene support because UIApplicationSceneManifest is already declared by the app.`);
92
+ }
93
+ config.modResults.UIApplicationSceneManifest = SCENE_MANIFEST;
94
+ } else if (isOwnedManifest(manifest)) {
95
+ delete config.modResults.UIApplicationSceneManifest;
96
+ }
97
+ return config;
98
+ });
99
+ };
100
+ /**
101
+ * Resolve the installed `expo` version. `config.sdkVersion` only carries the SDK major
102
+ * (for example `57.0.0`), so the installed package is needed for the patch-level check.
103
+ */ function getExpoVersion(config) {
104
+ const projectRoot = config._internal?.projectRoot;
105
+ const expoPackageJsonPath = projectRoot && _resolvefrom().default.silent(projectRoot, 'expo/package.json');
106
+ const installedVersion = expoPackageJsonPath && require(expoPackageJsonPath).version;
107
+ const version = typeof installedVersion === 'string' ? installedVersion : config.sdkVersion;
108
+ return version && _semver().default.valid(version) ? version : undefined;
109
+ }
110
+ function isOwnedManifest(manifest) {
111
+ return JSON.stringify(manifest) === JSON.stringify(SCENE_MANIFEST);
112
+ }
113
+ function updateAppDelegate(contents, enabled) {
114
+ const isEnabled = contents.includes(SCENE_APP_DELEGATE);
115
+ if (enabled === isEnabled) {
116
+ return contents;
117
+ }
118
+ if (enabled) {
119
+ const startup = LEGACY_STARTUP_BLOCKS.find((block)=>contents.includes(block));
120
+ if (!contents.includes(ORIGINAL_APP_DELEGATE) || !startup) {
121
+ throw new Error(`\`${PROPERTY_NAME}\` requires the standard Expo SDK 57 Swift AppDelegate.`);
122
+ }
123
+ return contents.replace(ORIGINAL_APP_DELEGATE, SCENE_APP_DELEGATE).replace(startup, '');
124
+ }
125
+ return contents.replace(SCENE_APP_DELEGATE, ORIGINAL_APP_DELEGATE).replace(`${FACTORY_ASSIGNMENT}\n\n`, `${FACTORY_ASSIGNMENT}\n\n${LEGACY_STARTUP_WRAPPED}\n`);
126
+ }
127
+
128
+ //# sourceMappingURL=iosSceneSupport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["iosSceneSupport.ts"],"sourcesContent":[null],"names":["withIosSceneSupport","PROPERTY_NAME","MINIMUM_EXPO_VERSION","NATIVE_SUPPORT_SDK_MAJOR","ORIGINAL_APP_DELEGATE","SCENE_APP_DELEGATE","FACTORY_ASSIGNMENT","LEGACY_STARTUP","LEGACY_STARTUP_WRAPPED","LEGACY_STARTUP_BLOCKS","SCENE_MANIFEST","UIApplicationSupportsMultipleScenes","UISceneConfigurations","UIWindowSceneSessionRoleApplication","UISceneConfigurationName","UISceneDelegateClassName","config","props","enabled","ios","enableSceneSupport","undefined","expoVersion","getExpoVersion","semver","major","WarningAggregator","addWarningIOS","lt","Error","JSON","stringify","withAppDelegate","modResults","language","contents","updateAppDelegate","withInfoPlist","manifest","UIApplicationSceneManifest","isOwnedManifest","projectRoot","_internal","expoPackageJsonPath","resolveFrom","silent","installedVersion","require","version","sdkVersion","valid","isEnabled","includes","startup","find","block","replace"],"mappings":"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"}
@@ -409,6 +409,16 @@ export interface PluginConfigTypeIos extends SharedBuildConfigFields {
409
409
  * @default true
410
410
  */
411
411
  usePrecompiledModules?: boolean;
412
+ /**
413
+ * Adopt the UIKit scene lifecycle in an Expo SDK 57 iOS project, as required by the iOS 27 SDK (Xcode 27).
414
+ * When `true`, the AppDelegate exposes its `ExpoReactNativeFactory`, React Native startup moves to Expo's
415
+ * scene delegate, and the scene manifest is added to **Info.plist**. When `false`, these changes are reverted.
416
+ *
417
+ * Only the standard SDK 57 Swift AppDelegate template is supported. Requires Expo SDK 57.0.23 or newer.
418
+ *
419
+ * Expo SDK 58 and newer include scene lifecycle support, so this property is no longer required and can be removed.
420
+ */
421
+ enableSceneSupport?: boolean;
412
422
  }
413
423
  /**
414
424
  * Interface representing extra CocoaPods dependency.
@@ -520,6 +520,10 @@ const schema = {
520
520
  usePrecompiledModules: {
521
521
  type: 'boolean',
522
522
  nullable: true
523
+ },
524
+ enableSceneSupport: {
525
+ type: 'boolean',
526
+ nullable: true
523
527
  }
524
528
  },
525
529
  nullable: true
@@ -1 +1 @@
1
- {"version":3,"sources":["pluginConfig.ts"],"sourcesContent":[null],"names":["resolveConfigValue","validateConfig","EXPO_SDK_MINIMAL_SUPPORTED_VERSIONS","android","minSdkVersion","compileSdkVersion","targetSdkVersion","kotlinVersion","ios","deploymentTarget","LEGACY_HERMES_COMPILER_VERSION","config","platform","key","schema","title","type","properties","buildReactNativeFromSource","nullable","reactNativeReleaseLevel","enum","useHermesV1","buildToolsVersion","cmakeVersion","enableMinifyInReleaseBuilds","enableShrinkResourcesInReleaseBuilds","enablePngCrunchInReleaseBuilds","extraProguardRules","packagingOptions","pickFirst","items","exclude","merge","doNotStrip","networkInspector","extraMavenRepos","anyOf","required","url","credentials","oneOf","username","password","additionalProperties","name","value","accessKey","secretKey","sessionToken","authentication","usesCleartextTraffic","useLegacyPackaging","useDayNightTheme","manifestQueries","package","minItems","intent","action","data","scheme","host","mimeType","category","provider","enableBundleCompression","usePrecompiledHeaders","gifEnabled","webpEnabled","webpAnimated","buildFromSource","buildArchs","exclusiveMavenMirror","pattern","useFrameworks","forceStaticLinking","ccacheEnabled","privacyManifestAggregationEnabled","extraPods","version","configurations","modular_headers","source","path","podspec","testspecs","git","branch","tag","commit","usePrecompiledModules","maybeThrowInvalidVersions","checkItems","configVersion","minimalVersion","Error","semver","lt","coerce","fixupDeprecatedEnableProguardInReleaseBuilds","androidConfig","enableProguardInReleaseBuilds","undefined","getHermesCompilerVersion","projectRoot","reactNativePath","resolveFrom","silent","hermesCompilerPackageJsonPath","packageJson","JSON","parse","fs","readFileSync","validate","androidUseHermesV1","iosUseHermesV1","hermesCompilerVersion","androidBuildFromSource","iosBuildFromSource"],"mappings":"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"}
1
+ {"version":3,"sources":["pluginConfig.ts"],"sourcesContent":[null],"names":["resolveConfigValue","validateConfig","EXPO_SDK_MINIMAL_SUPPORTED_VERSIONS","android","minSdkVersion","compileSdkVersion","targetSdkVersion","kotlinVersion","ios","deploymentTarget","LEGACY_HERMES_COMPILER_VERSION","config","platform","key","schema","title","type","properties","buildReactNativeFromSource","nullable","reactNativeReleaseLevel","enum","useHermesV1","buildToolsVersion","cmakeVersion","enableMinifyInReleaseBuilds","enableShrinkResourcesInReleaseBuilds","enablePngCrunchInReleaseBuilds","extraProguardRules","packagingOptions","pickFirst","items","exclude","merge","doNotStrip","networkInspector","extraMavenRepos","anyOf","required","url","credentials","oneOf","username","password","additionalProperties","name","value","accessKey","secretKey","sessionToken","authentication","usesCleartextTraffic","useLegacyPackaging","useDayNightTheme","manifestQueries","package","minItems","intent","action","data","scheme","host","mimeType","category","provider","enableBundleCompression","usePrecompiledHeaders","gifEnabled","webpEnabled","webpAnimated","buildFromSource","buildArchs","exclusiveMavenMirror","pattern","useFrameworks","forceStaticLinking","ccacheEnabled","privacyManifestAggregationEnabled","extraPods","version","configurations","modular_headers","source","path","podspec","testspecs","git","branch","tag","commit","usePrecompiledModules","enableSceneSupport","maybeThrowInvalidVersions","checkItems","configVersion","minimalVersion","Error","semver","lt","coerce","fixupDeprecatedEnableProguardInReleaseBuilds","androidConfig","enableProguardInReleaseBuilds","undefined","getHermesCompilerVersion","projectRoot","reactNativePath","resolveFrom","silent","hermesCompilerPackageJsonPath","packageJson","JSON","parse","fs","readFileSync","validate","androidUseHermesV1","iosUseHermesV1","hermesCompilerVersion","androidBuildFromSource","iosBuildFromSource"],"mappings":"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"}
@@ -22,6 +22,7 @@ _export(exports, {
22
22
  });
23
23
  const _android = require("./android");
24
24
  const _ios = require("./ios");
25
+ const _iosSceneSupport = require("./iosSceneSupport");
25
26
  const _pluginConfig = require("./pluginConfig");
26
27
  const withBuildProperties = (config, props)=>{
27
28
  const projectRoot = config._internal?.projectRoot;
@@ -43,6 +44,7 @@ const withBuildProperties = (config, props)=>{
43
44
  config = (0, _ios.withIosBuildProperties)(config, pluginConfig);
44
45
  config = (0, _ios.withIosDeploymentTarget)(config, pluginConfig);
45
46
  config = (0, _ios.withIosInfoPlist)(config, pluginConfig);
47
+ config = (0, _iosSceneSupport.withIosSceneSupport)(config, pluginConfig);
46
48
  return config;
47
49
  };
48
50
  const _default = withBuildProperties;
@@ -1 +1 @@
1
- {"version":3,"sources":["withBuildProperties.ts"],"sourcesContent":[null],"names":["withBuildProperties","config","props","projectRoot","_internal","pluginConfig","validateConfig","withAndroidBuildProperties","withAndroidProguardRules","withAndroidCleartextTraffic","withAndroidSettingsGradle","withAndroidQueries","withAndroidPurgeProguardRulesOnce","withAndroidDayNightTheme","withAndroidPrecompiledHeaders","withIosBuildProperties","withIosDeploymentTarget","withIosInfoPlist"],"mappings":";;;;;;;;;;;;;;;QAgDA;eAAA;;QA3BaA;eAAAA;;;yBAVN;qBAC2E;8BAEnD;AAOxB,MAAMA,sBAAsD,CAACC,QAAQC;IAC1E,MAAMC,cAAcF,OAAOG,SAAS,EAAED;IACtC,MAAME,eAAeC,IAAAA,4BAAc,EAACJ,SAAS,CAAC,GAAGC;IAEjDF,SAASM,IAAAA,mCAA0B,EAACN,QAAQI;IAE5CJ,SAASO,IAAAA,iCAAwB,EAACP,QAAQI;IAC1CJ,SAASQ,IAAAA,oCAA2B,EAACR,QAAQI;IAC7CJ,SAASS,IAAAA,kCAAyB,EAACT,QAAQI;IAC3CJ,SAASU,IAAAA,2BAAkB,EAACV,QAAQI;IACpC,+FAA+F;IAC/F,sEAAsE;IACtE,iFAAiF;IACjF,+GAA+G;IAC/G,EAAE;IACF,sDAAsD;IACtDJ,SAASW,IAAAA,0CAAiC,EAACX;IAC3CA,SAASY,IAAAA,iCAAwB,EAACZ,QAAQI;IAC1CJ,SAASa,IAAAA,sCAA6B,EAACb,QAAQI;IAE/CJ,SAASc,IAAAA,2BAAsB,EAACd,QAAQI;IACxCJ,SAASe,IAAAA,4BAAuB,EAACf,QAAQI;IACzCJ,SAASgB,IAAAA,qBAAgB,EAAChB,QAAQI;IAElC,OAAOJ;AACT;MAEA,WAAeD"}
1
+ {"version":3,"sources":["withBuildProperties.ts"],"sourcesContent":[null],"names":["withBuildProperties","config","props","projectRoot","_internal","pluginConfig","validateConfig","withAndroidBuildProperties","withAndroidProguardRules","withAndroidCleartextTraffic","withAndroidSettingsGradle","withAndroidQueries","withAndroidPurgeProguardRulesOnce","withAndroidDayNightTheme","withAndroidPrecompiledHeaders","withIosBuildProperties","withIosDeploymentTarget","withIosInfoPlist","withIosSceneSupport"],"mappings":";;;;;;;;;;;;;;;QAkDA;eAAA;;QA5BaA;eAAAA;;;yBAXN;qBAC2E;iCAC9C;8BAEL;AAOxB,MAAMA,sBAAsD,CAACC,QAAQC;IAC1E,MAAMC,cAAcF,OAAOG,SAAS,EAAED;IACtC,MAAME,eAAeC,IAAAA,4BAAc,EAACJ,SAAS,CAAC,GAAGC;IAEjDF,SAASM,IAAAA,mCAA0B,EAACN,QAAQI;IAE5CJ,SAASO,IAAAA,iCAAwB,EAACP,QAAQI;IAC1CJ,SAASQ,IAAAA,oCAA2B,EAACR,QAAQI;IAC7CJ,SAASS,IAAAA,kCAAyB,EAACT,QAAQI;IAC3CJ,SAASU,IAAAA,2BAAkB,EAACV,QAAQI;IACpC,+FAA+F;IAC/F,sEAAsE;IACtE,iFAAiF;IACjF,+GAA+G;IAC/G,EAAE;IACF,sDAAsD;IACtDJ,SAASW,IAAAA,0CAAiC,EAACX;IAC3CA,SAASY,IAAAA,iCAAwB,EAACZ,QAAQI;IAC1CJ,SAASa,IAAAA,sCAA6B,EAACb,QAAQI;IAE/CJ,SAASc,IAAAA,2BAAsB,EAACd,QAAQI;IACxCJ,SAASe,IAAAA,4BAAuB,EAACf,QAAQI;IACzCJ,SAASgB,IAAAA,qBAAgB,EAAChB,QAAQI;IAClCJ,SAASiB,IAAAA,oCAAmB,EAACjB,QAAQI;IAErC,OAAOJ;AACT;MAEA,WAAeD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-build-properties",
3
- "version": "58.0.0",
3
+ "version": "58.0.2",
4
4
  "description": "Config plugin to customize native build properties on prebuild",
5
5
  "keywords": [
6
6
  "build",
@@ -41,13 +41,13 @@
41
41
  "devDependencies": {
42
42
  "@types/node": "^22.14.0",
43
43
  "@types/semver": "^7.0.0",
44
- "expo": "58.0.0-preview.0",
44
+ "expo": "58.0.0-preview.2",
45
45
  "expo-module-scripts": "56.0.3"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "expo": "*"
49
49
  },
50
- "gitHead": "c543a7181fc32e14f42d89550087b80ac5c490f2",
50
+ "gitHead": "313e67f5c9dfb16f9deca74a271cd1d4f33a6f82",
51
51
  "scripts": {
52
52
  "build": "expo-build cjs:src",
53
53
  "clean": "expo-module clean",
@@ -0,0 +1,124 @@
1
+ import type { ExpoConfig } from 'expo/config';
2
+ import type { ConfigPlugin } from 'expo/config-plugins';
3
+ import { WarningAggregator, withAppDelegate, withInfoPlist } from 'expo/config-plugins';
4
+ import resolveFrom from 'resolve-from';
5
+ import semver from 'semver';
6
+
7
+ import type { PluginConfigType } from './pluginConfig';
8
+
9
+ const PROPERTY_NAME = 'ios.enableSceneSupport';
10
+ /** The first SDK 57 patch that ships `ExpoAppSceneDelegate` and `ExpoReactNativeFactoryProvider`. */
11
+ const MINIMUM_EXPO_VERSION = '57.0.23';
12
+ /** SDK 58 and newer adopt the scene lifecycle in the project template. */
13
+ const NATIVE_SUPPORT_SDK_MAJOR = 58;
14
+
15
+ const ORIGINAL_APP_DELEGATE = 'class AppDelegate: ExpoAppDelegate {';
16
+ const SCENE_APP_DELEGATE = 'class AppDelegate: ExpoAppDelegate, ExpoReactNativeFactoryProvider {';
17
+ const FACTORY_ASSIGNMENT = ' reactNativeFactory = factory';
18
+ const LEGACY_STARTUP = ` window = UIWindow(frame: UIScreen.main.bounds)
19
+ factory.startReactNative(
20
+ withModuleName: "main",
21
+ in: window,
22
+ launchOptions: launchOptions)
23
+ `;
24
+ /** The published SDK 57 template wraps the startup in an `os()` check. */
25
+ const LEGACY_STARTUP_WRAPPED = `#if os(iOS) || os(tvOS)
26
+ ${LEGACY_STARTUP}#endif
27
+ `;
28
+ /** Startup block shapes the plugin can remove, preceded by the blank line that separates them. */
29
+ const LEGACY_STARTUP_BLOCKS = [`\n${LEGACY_STARTUP_WRAPPED}`, `\n${LEGACY_STARTUP}`];
30
+
31
+ const SCENE_MANIFEST = {
32
+ UIApplicationSupportsMultipleScenes: false,
33
+ UISceneConfigurations: {
34
+ UIWindowSceneSessionRoleApplication: [
35
+ {
36
+ UISceneConfigurationName: 'Default Configuration',
37
+ UISceneDelegateClassName: 'EXExpoAppSceneDelegate',
38
+ },
39
+ ],
40
+ },
41
+ };
42
+
43
+ /**
44
+ * Adopts the UIKit scene lifecycle in SDK 57 projects when `ios.enableSceneSupport` is set.
45
+ * SDK 58 and newer include scene support in the template, so the property is a no-op there.
46
+ */
47
+ export const withIosSceneSupport: ConfigPlugin<PluginConfigType> = (config, props) => {
48
+ const enabled = props.ios?.enableSceneSupport;
49
+ if (enabled === undefined) {
50
+ return config;
51
+ }
52
+
53
+ const expoVersion = getExpoVersion(config);
54
+ if (expoVersion && semver.major(expoVersion) >= NATIVE_SUPPORT_SDK_MAJOR) {
55
+ WarningAggregator.addWarningIOS(
56
+ PROPERTY_NAME,
57
+ `Expo SDK 58 and newer include UIKit scene lifecycle support. \`${PROPERTY_NAME}\` is no longer required and can be removed from the expo-build-properties config.`
58
+ );
59
+ return config;
60
+ }
61
+ if (!expoVersion || semver.lt(expoVersion, MINIMUM_EXPO_VERSION)) {
62
+ throw new Error(
63
+ `\`${PROPERTY_NAME}\` requires Expo SDK ${MINIMUM_EXPO_VERSION} or a newer SDK 57 patch (received ${JSON.stringify(expoVersion ?? 'unknown')}).`
64
+ );
65
+ }
66
+
67
+ config = withAppDelegate(config, (config) => {
68
+ if (config.modResults.language !== 'swift') {
69
+ throw new Error(`\`${PROPERTY_NAME}\` requires the standard Expo SDK 57 Swift AppDelegate.`);
70
+ }
71
+ config.modResults.contents = updateAppDelegate(config.modResults.contents, enabled);
72
+ return config;
73
+ });
74
+
75
+ return withInfoPlist(config, (config) => {
76
+ const manifest = config.modResults.UIApplicationSceneManifest;
77
+ if (enabled) {
78
+ if (manifest !== undefined && !isOwnedManifest(manifest)) {
79
+ throw new Error(
80
+ `\`${PROPERTY_NAME}\` cannot enable scene support because UIApplicationSceneManifest is already declared by the app.`
81
+ );
82
+ }
83
+ config.modResults.UIApplicationSceneManifest = SCENE_MANIFEST;
84
+ } else if (isOwnedManifest(manifest)) {
85
+ delete config.modResults.UIApplicationSceneManifest;
86
+ }
87
+ return config;
88
+ });
89
+ };
90
+
91
+ /**
92
+ * Resolve the installed `expo` version. `config.sdkVersion` only carries the SDK major
93
+ * (for example `57.0.0`), so the installed package is needed for the patch-level check.
94
+ */
95
+ function getExpoVersion(config: Pick<ExpoConfig, 'sdkVersion' | '_internal'>): string | undefined {
96
+ const projectRoot = config._internal?.projectRoot;
97
+ const expoPackageJsonPath = projectRoot && resolveFrom.silent(projectRoot, 'expo/package.json');
98
+ const installedVersion: unknown = expoPackageJsonPath && require(expoPackageJsonPath).version;
99
+ const version = typeof installedVersion === 'string' ? installedVersion : config.sdkVersion;
100
+ return version && semver.valid(version) ? version : undefined;
101
+ }
102
+
103
+ function isOwnedManifest(manifest: unknown): boolean {
104
+ return JSON.stringify(manifest) === JSON.stringify(SCENE_MANIFEST);
105
+ }
106
+
107
+ function updateAppDelegate(contents: string, enabled: boolean): string {
108
+ const isEnabled = contents.includes(SCENE_APP_DELEGATE);
109
+ if (enabled === isEnabled) {
110
+ return contents;
111
+ }
112
+
113
+ if (enabled) {
114
+ const startup = LEGACY_STARTUP_BLOCKS.find((block) => contents.includes(block));
115
+ if (!contents.includes(ORIGINAL_APP_DELEGATE) || !startup) {
116
+ throw new Error(`\`${PROPERTY_NAME}\` requires the standard Expo SDK 57 Swift AppDelegate.`);
117
+ }
118
+ return contents.replace(ORIGINAL_APP_DELEGATE, SCENE_APP_DELEGATE).replace(startup, '');
119
+ }
120
+
121
+ return contents
122
+ .replace(SCENE_APP_DELEGATE, ORIGINAL_APP_DELEGATE)
123
+ .replace(`${FACTORY_ASSIGNMENT}\n\n`, `${FACTORY_ASSIGNMENT}\n\n${LEGACY_STARTUP_WRAPPED}\n`);
124
+ }
@@ -482,6 +482,17 @@ export interface PluginConfigTypeIos extends SharedBuildConfigFields {
482
482
  * @default true
483
483
  */
484
484
  usePrecompiledModules?: boolean;
485
+
486
+ /**
487
+ * Adopt the UIKit scene lifecycle in an Expo SDK 57 iOS project, as required by the iOS 27 SDK (Xcode 27).
488
+ * When `true`, the AppDelegate exposes its `ExpoReactNativeFactory`, React Native startup moves to Expo's
489
+ * scene delegate, and the scene manifest is added to **Info.plist**. When `false`, these changes are reverted.
490
+ *
491
+ * Only the standard SDK 57 Swift AppDelegate template is supported. Requires Expo SDK 57.0.23 or newer.
492
+ *
493
+ * Expo SDK 58 and newer include scene lifecycle support, so this property is no longer required and can be removed.
494
+ */
495
+ enableSceneSupport?: boolean;
485
496
  }
486
497
 
487
498
  /**
@@ -856,6 +867,7 @@ const schema: JSONSchema<PluginConfigType> = {
856
867
  },
857
868
  useHermesV1: { type: 'boolean', nullable: true },
858
869
  usePrecompiledModules: { type: 'boolean', nullable: true },
870
+ enableSceneSupport: { type: 'boolean', nullable: true },
859
871
  },
860
872
  nullable: true,
861
873
  },
@@ -11,6 +11,7 @@ import {
11
11
  withAndroidSettingsGradle,
12
12
  } from './android';
13
13
  import { withIosBuildProperties, withIosDeploymentTarget, withIosInfoPlist } from './ios';
14
+ import { withIosSceneSupport } from './iosSceneSupport';
14
15
  import type { PluginConfigType } from './pluginConfig';
15
16
  import { validateConfig } from './pluginConfig';
16
17
 
@@ -42,6 +43,7 @@ export const withBuildProperties: ConfigPlugin<PluginConfigType> = (config, prop
42
43
  config = withIosBuildProperties(config, pluginConfig);
43
44
  config = withIosDeploymentTarget(config, pluginConfig);
44
45
  config = withIosInfoPlist(config, pluginConfig);
46
+ config = withIosSceneSupport(config, pluginConfig);
45
47
 
46
48
  return config;
47
49
  };