As we inch closer to Apple's much-anticipated event on September 12th, we're gearing up for the subsequent introduction of Xcode 15 General Availability (GA). We're passionate about providing you with the best and latest, and with this new Xcode release, it's no exception. However, we also want to give you a heads up about what this means for our platform and for our users.
The stack transition: From Edge to Stable
As previously communicated, the imminent release of Xcode 15 GA means we'll be transitioning from our current Edge stack to a Stable stack. This could present breaking changes for some workflows.
Why does this matter?
Our commitment has always been to ensure that our developers enjoy a seamless experience on Bitrise. However, with every major tool or version update, there is always a potential for disruptions, especially for workflows that have grown reliant on the specifics of an older stack.
It is important to clarify that the breaking changes are not necessarily caused by the new version of a tool itself, like Xcode 15, although it might cause some problems for certain projects. What actually happens is that we sometimes need to make breaking changes to the preinstalled tools because we can't keep unmaintained versions on the stacks forever, as explained in our stack update policy. To minimize disruption, we created a policy to make these changes at the time of a major Xcode release because it has a stable and expected cadence.
For instance, your current builds and workflows might be perfectly tailored for Xcode 14.3 or an earlier version. But with the advent of Xcode 15, some underlying components, dependencies, or tools might undergo changes which, if not anticipated, can lead to unexpected outcomes. These changes are essential to maintain the platform's efficiency and security, but we understand it might cause some adjustments on your end.
Preparation is key: Test with Edge Stacks
While we're working on a comprehensive migration guide to assist with this transition, we cannot emphasize enough the importance of proactive testing using our Edge stacks.
We have two Edge stacks, one for the latest stable Xcode ("Xcode 14.3 with Edge updates") and one for the Xcode 15 Beta. The first is good for testing "our" breaking changes (ones that might occur with changes on the Bitrise side of things) without the new Xcode version's changes, while the second has both the new Xcode beta and our tooling changes. Testing on these Edge stacks will provide insights into how your workflows might be affected once the Stable version with Xcode 15 rolls out. This proactive approach will not only allow you to identify and resolve issues beforehand but will also give you peace of mind and more time to adapt to the forthcoming changes.
Summary of changes and migration guide
To assist you in this transition, we've prepared a detailed migration guide. This guide will walk you through the changes, provide best practices, and offer tips to ensure a smooth migration from older stacks to the new Xcode 15 integrated stack.
Ruby
The default version effectively doesn't change (still 3.2.2), but it's set as 3.2. It's a special alias version that always points to the latest available patch version of Ruby 3.2.x. We recommend declaring one of these major.minor alias versions in workflows, so it remains working even if we replace one patch version with another.
Other changes:
- 3.1.0 and 3.1.3 replaced by 3.1.4
- 3.2.1 replaced by 3.2.2
Overview of Ruby versions across all Bitrise stacks is available here. We also offer a guide for defining tool versions for reliable builds.
Node.js
The default version changes from 16.19.1 to 18. This is a special alias version that always points to the latest installed version of Node 18 (learn more about the why here).
Other changes:
- Added: 20.x
- Removed: 12.22.9 (no longer maintained, security support ended)
- Removed: 16.19.1 (no longer maintained, security support ended)
- Removed: 19.8.1 (superseded by Node 20, security support ended)
Go
The default version changes from 1.18.10 to 1.21. This is a special alias version that always points to the latest installed patch version of 1.21.x (learn more about the why here).
Other changes:
- Added: 1.20
- Added: 1.21
- Removed: 1.18.10 (no longer supported)
Apple simulator runtimes
Every Xcode stack contains a few additional (older) simulator runtimes preinstalled. For Xcode 15, these simulator runtimes are preinstalled:
- iOS 17.0
- iOS 16.4
- iOS 15.5
- watchOS 10.0
- watchOS 9.4
- tvOS 17.0
- visionOS 1.0
If you are using the Xcode Test step, it targets the latest iOS version by default. You can change its “Destination” input to one of the above.
Note: the list of pre-installed runtimes is not changing for Xcode 14 stacks.
Helping your transition: Dedicated support
Changes, especially major ones, can be daunting. But remember, our primary goal is to offer you an enhanced experience, and sometimes that means evolving alongside industry updates. If you find yourself facing any issues or uncertainties, our dedicated customer support team is always there to help.
In summary, as we embrace the new and exciting features of Xcode 15, we urge you to anticipate, prepare, and test to ensure your workflows continue to run seamlessly. Together, we'll navigate this change and continue to build amazing mobile apps.