Update Expo SDK 56 dependencies and fix Xcode 27 scene lifecycle plugin#658
Open
wyne wants to merge 6 commits into
Open
Update Expo SDK 56 dependencies and fix Xcode 27 scene lifecycle plugin#658wyne wants to merge 6 commits into
wyne wants to merge 6 commits into
Conversation
Expo SDK 56 prebuild templates crash on iOS 27 / Xcode 27 beta because Apple now requires the UIKit scene-based lifecycle. This temporary plugin patches Info.plist and AppDelegate.swift during prebuild until Expo adds native support. Ref: expo/expo#46664 https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
The plugin regex assumed #endif was unindented, but Expo SDK 56's generated AppDelegate.swift indents it with 4 spaces, causing the pattern match to fail. Changed \n#endif to \n[ \t]*#endif to allow leading whitespace. https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
The EAS local build runs npm install without scripts, so patch-package never applies. Moving the plugin inline to plugins/withIosSceneLifecycle.js ensures the regex fix (allowing indented #endif) is always in effect. https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
…nd startReactNative The previous approach matched the UIWindow creation and factory.startReactNative as a single adjacent block, but other plugins (Firebase, TouchVisualizer) inject code between them in this project's AppDelegate.swift. Now each line is targeted and wrapped independently with if #unavailable(iOS 13.0), preserving all injected code while correctly gating the scene-incompatible calls. https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
Contributor
Xcode 27 beta requires all pod targets to have IPHONEOS_DEPLOYMENT_TARGET >= 15.0, but many third-party pods (AsyncStorage, RNSVG, Firebase/Google libs) still ship with older minimums (9.0 - 13.4). Injects a post_install Ruby hook into the Podfile to raise any sub-15.0 target at pod install time. https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
Swift 6.2 (bundled with Xcode 27 beta) no longer accepts `weak let` since weak references are implicitly mutable. expo-modules-jsi@56.0.7 uses this pattern in 15 Swift files, causing the ExpoModulesJSI xcframework build to fail silently with exit code 1. Adds a Podfile post_install hook to rewrite `weak let` → `nonisolated(unsafe) weak var` across all ExpoModulesJSI Swift sources after pod install but before xcodebuild runs the xcframework build script. Ref: expo/expo#46242 https://claude.ai/code/session_01WYWCN8jNbVMaUXFTp3GREU
c6ebf84 to
ffde889
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
expo install --check)expo-ios-scene-lifecycle-pluginworkaround for Xcode 27 beta, replacing the npm package with a local fixed copy that handles indented#endifand code injected betweenUIWindowandstartReactNativeTest plan
🤖 Generated with Claude Code