What is the minimum Deployments version we must set for iOS after April 2023 in Xcode 14.1 when submitting to app store?
Asked Answered
T

1

8

By April 2023, Apple has mandate us to use Xcode 14.1 with iOS 16.1 SDK when building and submitting app.

enter image description here

In Xcode there're 2 fields:

  1. "iOS Deployment Target": iOS 16.1 ("Default" means 16.1? in xcode 14.1?)

  2. "Minimum Deployments": what is the minimum iOS version we can set is it 11.0? or 10.3 or 9.0?

enter image description here enter image description here

Update:

According to this, does this mean we must use iOS 16.1 as our "iOS Deployment Target" and 11.0 for "Minimum Deployments" in Xcode 14.1:

enter image description here

Timisoara answered 8/2, 2023 at 8:51 Comment(2)
There is no "must". You can set it to any version from iOS 11 through to 16.3Repository
@Repository I can still type in 10.3 manually and still able to build the project in Xcode. Will apple reject it?Timisoara
J
3

Deployment Target

This is your first screenshot.

When you have selected the project in the left tab area, then in the main tab panel area you can see Deployment Target for iOS (and also for macOS if you are deploying there also, etc. for the other platforms).

This deployment target is a fallback default value which appears if you delete the Minimum Deployments value when you have selected a target in the left tab area.

Minimum Deployments

This is your second screenshot.

The Minimum Deployments value seen when a target is selected in the left panel controls from which version of iOS (or macOS, etc.) are allowed to install the app.

Base SDK

When Apple say you need to use a particular SDK, they are not talking about the deployment concept. They are talking about which version of the SDK was used to compile the app. This is known as the Base SDK. It comes with the version of Xcode you are using. If Apple cannot get developers using the latest Base SDK, they cannot push people off old deployment targets as each SDK covers only a specific range of deployment targets.

Application Uploader

There is a subtle interaction between Xcode and App Store submission. Xcode comes with scripts and tools to upload your app to the App Store for review. The App Store, as a web service, must match the uploader being used due to the use of private APIs between them. There is a cut-over point where an old Xcode won't be able to upload to the current App Store.

Mandating a certain Xcode version means that Apple can modernise the upload workflow and clean up the bundle format and requirements over time.

Sometimes if you are stuck on a given Xcode version, you might be able to use the uploader for the latest Xcode to submit your app for App Store review.

What you can do

Come the changeover in April 2023, you would compile your project with Xcode 14.1. This sorts out the Base SDK requirement. You get to pick what deployment target you want based on the table you have specified.

The "best practice" is last year's major iOS version. Test on that, the current version, and the latest Beta version.

In the real world, it comes down to your user community.

  • Some apps are more for early adopters where the latest is ok.
  • Most apps can just follow the best practice.
  • Some apps come with some industry regulator that mandates user access to the app (e.g. you are a bank only delivering functionality via a mobile app so would need to maintain wide coverage otherwise the regulator would complain about you not giving fair access).

What if I force the deployment target to be too old for the Xcode?

The problem for Apple is if your app won't run on their new hardware and this may be a consequence of too old deployment target. For example September 2018 guidance mandated that the app would run on iPhone XS Max.

Setting (forcing) the deployment target to be too old usually results in compile time errors.

I haven't heard of the deployment target of itself being a reason for App Store rejection, but I would be interested if someone can share any anecdotes on that.

Specifying a deployment target too new (unreleased beta software versions) is an issue. You get rejected for that even if you don't use any of the unreleased functionality.

Juvenescence answered 27/2, 2023 at 22:42 Comment(5)
what happen if I type 10.3 in the "Minimum Deployments" which is not offered in xcode 14.1 (which offers 16.1 to 14.1 only)?Timisoara
If you choose say a vanilla project using Objective-C and Storyboards, forcing the iOS version to say 10.0 (unsupported), then you get warnings with Xcode 14.1, but it compiles, runs on target (16.x target device say), and validates archiving for App Store. If you choose an old project circa that worked with iOS 10 you'd probably get compile errors. eg. swift version was 3 instead of 4.0,4.2, or 5.0. I haven't done an App Store approval workflow with too old a deployment target. I don't know what happens.Juvenescence
I'm using an old project that with iOS 10.3 as Minimum Deployment. It's able to compile into xarchive. Any one has experience whether it will get approve?Timisoara
Did it pass the archive validation checks? Also worth uploading to App Store for submission as further checks are done there.Juvenescence
I have pods with iOS 9.0 Deployment target and base project with iOS 13.0 Deployment target. It compiles and I have no issues at Appstore reviewOvercareful

© 2022 - 2024 — McMap. All rights reserved.