Technical Q&A QA1806

What version of Xcode and SDK should I be using when building for the App Store?

Q:  What version of Xcode and SDK should I be using when building my app for the App Store?

A: Plan to build with the latest version of Xcode, and to set the Base SDK build setting to Latest iOS or Latest Mac OS.

For more information, see Setting the Deployment Target in the App Distribution Guide.

Why You Should Use the Latest SDK

Building with the latest SDK gives your app all possible bug fixes and new behavior. For compatibility reasons, frameworks can't always expose improved behavior, unless apps are built with the latest SDK.

For example, when Retina enabled iPads were first introduced, only iPad apps built with the very latest iOS SDK could create Retina images by simply loading an image with an @2x suffix.

Other Retina iOS devices already treated @2x file names specially, but the existing non-Retina iPads did not. Because some apps were relying on this behavior by re-using Retina iPhone images as larger 1x images on iPads, it was not possible for the new Retina iPads to always special case all @2x images. That could have caused problems in existing apps. To support those apps, iOS checked the SDK an app was built with to determine if it got improved handling, or legacy behavior, when loading @2x images. This kind of test is called a linked on or after check.

By building with the latest SDK, apps signal that they are ready for all API improvements and bug fixes.

Any Other SDK is Temporary

It is not practical for Xcode to force every project to build with the latest SDK. For example, it may be necessary to ship an immediate hot-fix version of app - without waiting until the app has been fully updated for a newer SDK.

But it's important to understand that using an older SDK is a temporary workaround, not a solution. Issues preventing your app from using the latest SDK should be fixed as soon as possible. It will be much easier to fix these issues while the older build system is still supported.

Testing Legacy Tool Support

For compatibility reasons, the App Store will often accept apps that are built with some older versions of Xcode or Base SDK.

To determine if an older Xcode configuration is currently accepted by the App Store, you can choose "Archive" under the "Product" menu to make an archived build, then use the Validate feature, to test if that build meets minimum requirements for submission to the App Store.

You may find it easier to create a test test bundle ID in the Member Center and application record in iTunes Connect to test your build environment, so you don't need to correctly configure every entitlement your app uses.

Related Documents

SDK Compatibility Guide

Document Revision History


New document that describes why you should be using the latest SDK, and how to check if an older development system is obsolete.