What's new in Xcode 13
Combing through the release notes for Xcode 13 reveals an impressive list of new features and improvements. Understandably, the ones that tend to get the most attention from many developers are related to Swift UI and Swift — especially the native concurrency support. While the Runway team also 💙 Swift, there are a couple of changes that we think are particularly interesting and exciting, especially in the context of the maturing Apple DevOps ecosystem (hey, Xcode Cloud!).
Here’s a quick look at what you and your team should watch out for in Xcode 13:
Stability monitoring and analysis tools are indispensable when it comes to ensuring that the apps that we ship are stable and reliable. So much so that a whole industry of third party tooling has arisen around it. While developers are able to collect stability and crash reports directly from Xcode (and App Store Connect), specialized third party services have long offered more robust data and insights, and their data also tends to get populated and updated much faster.
The latter point — speed — is something that Apple seems keen to improve upon, as they claim that crash reports are now delivered into Xcode in near real time and with longer data retention (aggregated Crash Point data available for up to a year).
It’s now also possible to filter crash reports very granularly, not only by time period and version, but also by product type, destination and even origin (App Store | TestFlight).
Another neat new feature is the ability to share the URL of a crash report so a teammate with access to the app can view it directly in their Xcode’s Organizer.
TestFlight feedback for a Crash Point is now also accessible from within Xcode and, when viewing feedback in Safari, there’s a new “Open in Xcode” button that will take you straight to the Xcode Organizer view.
Signing and Distribution
Although signing and distribution has slowly improved over the years, it’s still a notorious pain point for all iOS engineers. With Xcode 13, Apple is introducing some important improvements which should make the process more seamless.
With the new Cloud Signing feature, certificates can now be created and managed entirely on Apple servers. And, `xcodebuild` now supports the use of App Store Connect API keys for authentication. Together, these changes allow teams to take advantage of automatic signing in headless environments, and abandon old, cumbersome patterns of either installing certificates directly on developers’ machines or storing them in a secure private repository (possibly behind a VPN) and retrieving them via either a CI script or fastlane.
A nice safeguard introduced in Xcode 13 this year is the ability to detect if a new build number (`CFBundleVersion`) is invalid - for example, if it’s already been used or if it precedes the current/latest build number. In such cases, Xcode will offer to automatically increment the build number to an acceptable value. Build numbers for embedded content such as app extensions, App Clips, watchOS apps and more are also checked to make sure they are in sync with your app’s build number. This is all achieved by updating a staged copy of the app, so neither the source code nor the archive are modified.
Finally, Xcode 13 can now optionally create a new app record the first time an app is uploaded to App Store Connect, and basic configuration of said app record can be performed directly within Xcode’s distribution assistant.
Did any of the announcements about Xcode 13 catch your eye? Anything we might have missed? We’d love to hear from you!