0

Apple’s upcoming requirement (as per Apple’s announcement) states that apps submitted to the App Store after April 24, 2025, must be built with Xcode 16 or later using the iOS 18 SDK. I understand that Xcode 16 only supports a minimum deployment target of iOS 15 or later, meaning I cannot directly build new updates for iOS 14 or earlier with Xcode 16.

I have a significant user base on iOS 14 and earlier (e.g., iOS 13, 12), and I want to ensure these users can continue using my app while also shipping new features. I’m aware of Apple’s last compatible version feature, which allows users on older iOS versions to download a previously approved version of the app compatible with their OS. However, I’m unsure how to balance this with delivering new features to these users.

Here are my specific questions:

  1. Since Xcode 16 doesn’t support deployment targets below iOS 15, is there any way to ship new features to users on iOS 14 or earlier without maintaining a separate codebase built with an older Xcode version (e.g., Xcode 15)?
  2. How does Apple’s last compatible version feature work for users on iOS 14 or earlier? If I upload a new app version built with Xcode 16 (minimum iOS 15), will users on iOS 14 automatically get the last compatible version previously built for their OS? Are there any limitations or risks to this approach?
  3. Can I maintain a legacy version of my app (e.g., built with Xcode 15 for iOS 14 support) in the App Store alongside the new version built with Xcode 16? If so, how can I submit critical bug fixes or minor updates for the legacy version?
2
  • "Xcode 16 only supports a minimum deployment target of iOS 15 or later" is not true. Where did you get that from? You can totally set the deployment version to iOS 14.
    – Sweeper
    CommentedApr 22 at 4:15
  • Your 2nd paragraph states "I’m aware of Apple’s last compatible version feature, which allows users on older iOS versions to download a previously approved version of the app compatible with their OS." but you then posted your number 2 question. You clearly seem to understand how it works. What else are you looking for on that specific topic?CommentedApr 22 at 4:39

2 Answers 2

1

Xcode 16 only supports a minimum deployment target of iOS 15 or later

This is false. It is totally possible to type "14" into the minimum deployments text field in the project settings.

enter image description here

The dropdown might not show "iOS 14" as an option, but that's just the dropdown. The dropdown also doesn't show minor versions like iOS 18.1, but that doesn't mean you cannot set the minimum deployment version to iOS 18.1.

You can also find it in the build settings tab:

enter image description here

The dropdown here is clearer, with an "Other" option letting you know that this is not an exhaustive list.

Xcode 16 no longer supports on-device debugging for devices running iOS 14 and earlier. Do not confuse this with the minimum deployment version. Apps can still be installed on devices running earlier versions - it's just that you cannot attach a debugger.

See also the release notes.

    0

    Xcode 16 supports a deployment target of iOS 12.0 or later. You just need to manually type in "12.0" into the Minimum Deployments field instead of selecting one of provided values in the dropdown.

    Since it seems that you wish to support back to iOS 12, your whole question becomes moot for now since you can use Xcode 16 to support iOS 18 back to iOS 12. But let's assume that when Xcode 17 comes out in a few months, it raises the minimum to iOS 13 when adding support for iOS 19. Let's also assume you will want to keep supporting iOS 12 while also supporting new features of iOS 19 with Xcode 17. Now your questions become valid again. Based on that, here's some answers:

    1. In order to take advantage of the latest iOS features you need to build with the latest Xcode. This means you can't have a single app that supports iOS 12 - 19 (given the previously made assumptions). At some point you need to drop support for the really old iOS versions. You would use Xcode 17 to release an app that supports iOS 13 - 19. Users of iOS 12 can keep using the last version that you released that worked with iOS 12 but they can never get any more updated with any new features. And you can't get any new customers that are on iOS 12.

    2. You answered this yourself in your second paragraph. As you release updates with newer and higher deployment targets, existing users on older versions of iOS can at best get the last version you ever released that still supported the old version of iOS. New users will not be able to access such old versions. Only existing users who downloaded the app back when the old iOS was supported by the app.

    3. In order for you to have two versions of the app, one that uses the latest Xcode and supports the latest iOS, and a "legacy" version that uses an older Xcode in order to support older versions of iOS, you need two separate apps with two different app ids. This is a serious problem. One id will be your existing one. The other will be a new app. Assuming you keep the current app id as the latest version of the app, users on old versions of iOS will not be offered any updates. How will they learn that there is now a "new" app they need to install instead? How long would you keep this up? What happens when Apple mandates that at least Xcode 16 be used for app builds? This doesn't even address whether Apple will even allow you to have two nearly identical apps on the App Store. No one here can tell you whether they will allow it or not. One day they might, another day they might not.

    In short, Apple likes to move forward. They are not big on long-term backward compatibility. If you want to use the latest Xcode to support the latest iOS features, you need to drop support for 6 or 7 year old versions of iOS. This means some tiny percentage of your users are "stuck" with their perfectly working app. They just don't get any new features without using a slightly newer device.

      Start asking to get answers

      Find the answer to your question by asking.

      Ask question

      Explore related questions

      See similar questions with these tags.