Skip to main content

Command Palette

Search for a command to run...

iOS 27 SDK: 3 Major Requirements That Migh Break Your App

Mandates, not just deprecations.

Updated
4 min read
iOS 27 SDK: 3 Major Requirements That Migh Break Your App
M
Senior iOS Engineer @ Tailored Applications

Apple introduced a number of SDK-enforced mandates with the iOS 27 SDK (Xcode 27). Apps built with the new SDK that don’t comply will either fail to launch or get rejected during App Store submission.

Here are the three most important ones you should address this summer.

1. UIScene Is No Longer Optional

Remember last year when you built with iOS 26 SDK and saw this in the debugger?

UIScene lifecycle will soon be required. Failure to adopt will result in an assert in the future.

Yeah… that future is here. Now, if you build with Xcode 27 and haven’t migrated to scenes, your app just crashes on launch.

According to Apple’s TN3187, starting with iOS 27:

Apps built with the latest SDK must adopt the scene-based lifecycle — otherwise they won’t launch.

To address this requirement, your Info.plist must contain the UIApplicationSceneManifest property and a proper SceneDelegate.swift implementation with the scene(_:willConnectTo:options:) method to initiate your app in instead of in AppDelegate.

They already provided a fantastic in-depth technical article for migrating it.

Apple also mentioned this during the Modernize Your UIKit App session at WWDC 26. I would fix this one first because it's quite a major blocker.


2. Launch Screen Requirement (ITMS-90870)

iOS 27 comes with the new ITMS-90870 App Store Connect rejection code which enforces developers to define their apps' launch screen in the Info.plist manifest.

ITMS-90870: Missing launch screen. Starting with the iOS 27 release this fall, apps built with the iOS 27 SDK or later must provide a launch screen using an Xcode storyboard or UILaunchScreen.

App Store Connect now checks for at least one of these keys in your Info.plist:

The good news? Most projects created in the last few years already have them. Older or migrated projects are the ones that usually get hit.

It's always a good idea to validate it in order to avoid facing any release blockers later this fall.


3. Liquid Glass

Last year Apple introduced Liquid Glass — their new system-wide design language. During the iOS 26 cycle, you could temporarily opt out by adding the following property to your Info.plist:

<key>UIDesignRequiresCompatibility</key>
<true/>

That grace period is now over. In iOS 27 and Xcode 27, the UIDesignRequiresCompatibility flag is completely ignored. Liquid Glass will be applied to your app automatically you want it or not.

If your app uses a lot of custom UIKit styling (especially navigation bars, tab bars, backgrounds, or heavy appearance customizations), things may look quite different on iOS 27. Some layouts might even break slightly due to the new safe area behavior and floating UI elements.

Start testing your app on the iOS 27 simulator this summer and pay special attention to navigation and tab bars, scroll views with translucent headers, and custom views.


Conclusion

These three changes — UIScene, the new launch screen requirement, and Liquid Glass — are the biggest SDK-level mandates Apple has pushed in a while. They’re not optional if you’re building with Xcode 27.

The good news is that none of them are especially complicated once you sit down with them. It's a good idea to spend some time this summer tackling these:

  1. Get UIScene working first (it’s the one that crashes your app)

  2. Clean up your launch screen

  3. Test how Liquid Glass looks on your UI

Do it early and you’ll avoid stressful crunch time when Apple starts enforcing the deadlines this fall.

If you’re maintaining an older app or just starting a new one, now is the perfect time to modernize. Good luck and happy shipping!