Introduction
Lately, I've seeing some posts in the Apple Development community, with an alarmist tone, about an Apple update that will happen in April 2025.
If you access the Submit your iOS apps to the App Store page, you can find the following instruction:
Starting April 2025, all iOS and iPadOS apps uploaded to App Store Connect must be built with the iOS 18 SDK.
I've seeing people mistakenly claim that starting April 2025, your iOS app needs to support iOS 18 as the minimum supported version, which is totally incorrect. You can still support older versions of iOS, and this post will explain why.
Understanding the Difference
iOS SDK
SDK stands for Software Development Kit, and the iOS one is a collection of tools, frameworks, and APIs provided by Apple that developers use to build iOS apps. It includes everything necessary to create, compile, and debug an app for iPhones and iPads, example:
Frameworks and APIs
- UIKit
- SwiftUI
- URLSession
Compilers and Build Tools
- LVVM Compiler, that translates Swift/Obj-C code into machine code
Debugging Tools
- LLDB
- Instruments
- Xcode's debugger (the functionality of adding breakpoints)
iOS Deployment Target
The minimum iOS version that the app supports. It's a configuration that is set in Xcode, under the Target settings. In Xcode 16 for example, you can set the minimum supported iOS version to 15.
What changes then?
If your app supports at minimum iOS 17, for example, you'll see some differences between building it with the iOS SDK 17 and the iOS SDK 18:
Access to New APIs
You can access APIs that were release in iOS 18 when building with iOS SDK 18, but only if using the availability check:
if #available(iOS 18, *) {
// Call some API method available in iOS 18 only
} else {
// Fallback implementation
}
Deprecations
Apple may deprecate some APIs in newer SDKs. Deprecated APIs will continue to work for some time, but Apple could remove them in future iOS versions, requiring developers to migrate.
Performance Improvements
New SDK versions may include improvements in the compiler, building your app faster and/or creating smaller bundles. Also, security improvements and bug fixes can be present too.
How To Set It Up
If you want to update your project to conform to the Apple Store requirements, but you want to still support users in older OS versions, you just need to build your app in Xcode 16, and guarantee that the iOS Deployment Target is properly set:
Setting the iOS Deployment Target
On Xcode, click in your project on Project Navigator, select the target that you want to configure, then in the General tab, under Minimum Deployments select the desired iOS version.
Archiving and Submitting to Apple Store Connect manually
If you manually send your app to App Store Connect, after April you must do it through Xcode 16. By doing it, you are already guaranteeing that your app is built with iOS SDK 18.
Automated CI/CD Pipelines
If you have an automated pipeline, you'll need to upgrade your build environment. The steps for doing it will depend on which CI/CD provider you're using (e.g., GitHub Actions, GitaLab CI, Jenkins, Fastlane, or Xcode Cloud).
Here are some documentation that can help:
What Happens in April 2025?
Starting April 2025, if you try to submit an app built with iOS SDK 17 or older to App Store Connect, it will fail. To submit new releases after April 2025, you must build your app using Xcode 16 (or later) and the iOS 18 SDK.
If your last release was built in an older SDK, nothing will happen. Your app will still available in the store to be downloaded, and your current users will still be able to access it normally. You'll only need to update to submit new releases.
Why Does Apple Enforce SDK Upgrades?
Security
As already mentioned, new SDKs usually have security improvements compared to the previous ones. Enforcing the apps to update it is a way that Apple finds to keep a safer environment for the apps in their devices.
New APIs Adoption
It's also a good "motivation" to the engineers to start using new APIs included in new SDKs. And with a good adoption of new APIs, Apple can also deprecate older ones, creating a more modern development environment each time.
Conclusion
The requirement to use the iOS 18 SDK starting in April 2025 does not mean that apps must drop support for older iOS versions. Instead, it simply means that developers must build their apps using Xcode 16 or later. By understanding the difference between the iOS SDK and the iOS Deployment Target, you can ensure your app remains compatible with older iOS versions while meeting Apple's submission requirements.
If you're maintaining an app, now is a good time to prepare your development environment and CI/CD pipelines for the transition. Ensuring your project builds with Xcode 16 and the iOS 18 SDK will keep your app eligible for future submissions without affecting users on older devices.
Apple enforces these updates to improve security, encourage adoption of new APIs, and streamline the iOS development ecosystem. By staying informed and planning ahead, you can make the transition smoothly without unnecessary concerns.
Top comments (0)