CircleCI Xcode image release, update, and deprecation policy

Cloud

Overview

This document outlines the CircleCI Xcode image release, update, and deprecation policy. A defined Xcode image policy allows us to continue releasing new images, including beta images.

You can find the most up to date information on these images on the CircleCI Developer Hub Xcode machine image page.

Xcode image retention and deprecation

We support the three latest Xcode versions released. We also support the latest minor release of the last four major Xcode versions.

For example, if Xcode 26 is the latest major version:

Xcode retention policy example
Xcode Version Action

Xcode 26

We retain the three latest major.minor versions at the latest patch version

Xcode 16

We retain the last major.minor version

Xcode 15

We retain the last major.minor version

Xcode 14

We retain the last major.minor version

In the future when Xcode 27 releases:

Xcode retention policy future example
Xcode Version Action

Xcode 27

We support Xcode 27.0

Xcode 26

No change. We continue to support the latest 3 major.minor versions. We flag older images for deprecation and remove them as we release Xcode 27.1 and subsequent versions.

Xcode 16

No change. We continue to support the latest minor version release.

Xcode 15

No change. We continue to support the latest minor version release.

Xcode 14

We flag this version for deprecation and remove it entirely when Xcode 27 reaches GA

Apple ships betas of new major versions of Xcode during WWDC, which occurs in June each year.

When we select an image for deprecation and removal, we create an announcement on our changelog, along with additional outreach where possible. We aim to provide four weeks' notice where possible.

We never automatically redirect requests for specific Xcode images to a different major or minor version. When we remove an image, jobs using that image fail if you have not updated the .circleci/config.yml.

Xcode patches

We retain the latest patch version of each Xcode major.minor version we support. Once Apple releases a new patch version, we deprecate the previous patch version and automatically redirect all requests to the new patch of the same major.minor version.

Patches are generally backwards compatible, so we put redirects in place within 24 hours of a new patch release. If we discover any major issues, we retain the ability to issue a rollback and make both versions temporarily available.

Example:

When Apple released Xcode 13.2.1, we removed the previous patch version, 13.2.0, and automatically redirected all requests for 13.2.0 to 13.2.1.

Beta image support

We aim to make beta Xcode versions available on the macOS executor as soon as we can. This allows developers to test their apps ahead of the next stable Xcode release.

Unlike our stable images (which we freeze once released), when we release a new beta image it overwrites the previous beta image until we release an RC/Stable image. At that point we freeze the image and no longer update it. If you request an image using an Xcode version currently in beta, it changes when Apple releases a new Xcode beta with minimal notice. This can include breaking changes in Xcode and associated tooling which are beyond our control. We do not recommend beta images for production pipelines.

To read about our customer support policy for beta images, check out this support center article.

Xcode image releases

We track and monitor Apple’s Xcode releases and aim to release new images as soon as possible. We typically aim to support a new Xcode image within a couple of days, but note that this is not an SLA. We do not provide an official SLA turnaround time for new Xcode images.

We always announce new images on our changelog along with release notes. We also add them to the table of Xcode Versions in the Documentation.

macOS versions

We build each Xcode image on top of a clean macOS install. We aim to keep the macOS version reasonably up to date with the latest version available. Generally our images can be up to 2 minor/patch versions behind the latest stable version.

We aim to keep the macOS version aligned across our different macOS executors. Note that this may not always be the case. Check the Software Manifest file for the image for the most accurate information.

When Apple releases a new major version of macOS (ex: 27.0), we start to use this version after at least two minor Xcode releases have passed.

Exceptions

At any time, we reserve the right to work outside of the information in this document if the circumstances require. When we need to make an exception to the policy, we aim to provide as much notice and clarity as possible. In these cases, we post an announcement on our Discuss forum, along with additional outreach, such as an email notice, where possible.