fix(ios-runner): adopt the scene lifecycle so the host app launches on the iOS 27 SDK - #2867
Conversation
…n the iOS 27 SDK Built with the Xcode 27 SDK, UIKit traps a legacy app-delegate app at launch in UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption, so every XCTest that launched the runner host app failed on iOS 27 runtimes. The host app now uses one scene delegate that owns the window on iOS, tvOS and visionOS. A single-scene UIApplicationSceneManifest naming that delegate is merged into the generated Info.plist for the UIKit SDKs; the macOS AppKit host is unchanged. The legacy UIScreen-sized app-delegate window and the visionOS-only configurationForConnectingSceneSession path are removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nd 27.1 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Size Report
Startup median (7 runs, lower is better):
|
|
Reviewed at ad352d3. The scene-lifecycle change looks correct and well-scoped. One check must pass before this is ready. The Smoke Tests job in ios.yml launches the host app and runs its XCTests on the current (non-27) SDK. That is the app-delegate, scene-delegate and Info.plist path this PR changes. The job was still queued, so there is no proof yet that the host app still launches on the SDK that all other routes use. If it fails, treat it as a regression from this diff, because the route overlaps directly. Not blocking: tvOS and visionOS were compiled but not launched, so their window, focus and keyboard behavior relies on symmetry with iOS. Please note that in the validation section. Also, the commit named there as "differing only by a moved comment" could not be resolved. Could you check that reference? |
|
Addressed at
🤖 Generated with Claude Code |
|
Thanks. I checked the Smoke Tests job you linked: it ran on |
|
Summary
Built with the Xcode 27 SDK, the runner host app trapped at launch in
___UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption_block_invoke, because it used a legacy app-delegate window with no scene manifest. As a result, every XCTest that launches the host app failed on iOS 27 with "Application … is not running".UIScreenwindow and the visionOS-only path are gone.Info.plistadds a single-sceneUIApplicationSceneManifestfor the UIKit SDKs. The macOS plist is unchanged.Validation
Tested
ad352d39c. The local iOS XCTests ran onbb6a61db8, an unpushed pre-amend commit that differs fromcbc713f01only by where one comment line sits.simctl launchtrapped on iOS 27.0 and 27.1. After, the app runs with no new crash reports.open,snapshot -i,press,type,backandclosepass.check:xctest-selection,check:packaged-runner-swiftandcheck:affected --runpass.Review: an adversarial review found no defect; its nits are fixed.
🤖 Generated with Claude Code