Each year, developers in the Apple ecosystem eagerly wait in anticipation of what will be introduced during Apple’s weeklong Worldwide Developers Conference (WWDC). Depending on their specific role, personal interests, and the kinds of projects they work on, everyone has their own unique subset of potential updates that they’re most excited about. This year, while many of the new OS features seem like incremental upgrades, there were certainly a few standout announcements that caught our attention here at Runway!
The big announcement - Xcode Cloud
Personally, I have been curious to see how the BuddyBuild acquihire from a few years ago would play out, and it seems we may finally have an answer: Apple will soon offer a CI/CD solution custom-built for its ecosystem and completely integrated into Xcode — so much so, in fact, that it is just another tab of the Report Navigator.
Based on what Apple has demoed, it looks like setting up Xcode Cloud will be quite simple and will definitely feel familiar to anybody who has had at least some exposure to CI environments: you’ll set up conditions which kick off pipelines, specify environments (which will easily allow testing across multiple Xcode and OS versions), configure specific actions like testing and building and post-actions like notifying your team. All of this fits into a familiar flow and seems well-realized. I especially liked the possibility of setting up a static analysis action; it’s something that does not fit naturally into most workflows, so automating it is something I welcome.
Customization options seem pretty good, with the possibility of creating multiple workflows with:
- Environment variables
- Custom scripts
- The integration of additional repositories (including the new Swift Package Collections), both private and public
Both webhooks and scripts can be executed post project cloning, pre xcodebuild and post xcodebuild.
With the convergence that’s happening across Apple platforms, it’s only natural that the CI/CD solution they offer will make it especially easy to build and deploy across iOS, iPadOS and macOS.
Overall, the Runway team is super excited by the Xcode Cloud announcement! It represents a neat evolution of the Apple developer ecosystem, and we think it could be especially helpful for smaller teams wanting to more easily and quickly level-up their (Apple) DevOps. We see Xcode Cloud as a potential substitute for any of the other cloud CI/CD providers teams are already using and integrating with Runway (on the Apple side only, of course), and we eagerly await info on APIs Apple will expose.
The Documentation Compiler (DocC) represents a big step forward and is another new feature we’re excited to see. Anybody who has worked on a project at any scale has had to deal with creating documentation so that info and background on the features, utilities and APIs they create is easily accessible to the rest of the team, especially to newly onboarded engineers.
Some highlights: you can reference symbols directly from the documentation while it’s being written (with autocompletion from Xcode), create tutorials for complex features, and user-created documentation can now be browsed in the same fashion as Apple’s.
Also, documentation is now easily shareable via the web and can be bundled into a convenient file ready for sending directly to teammates.
Enhanced Source Control integration
Xcode’s integration with Source Control systems has been greatly improved, especially when it comes to collaborative functionality. Code Review now has an inline mode to visualize code changes, so it’s now possible to create branches and pull requests from right within Xcode, and to apply code changes (perhaps in response to comments from other collaborators) without ever losing context as we stay close to the code. Merging PRs can also be done directly from Xcode, and the status of any resulting build kicked off in Xcode Cloud is right there. Someone at Apple clearly understands the cost of context switching, as do we!
This is this year’s big upgrade for Swift 5.5, with patterns like async/await and actors introduced to the language. It’s a very exciting time to be a Swift developer, although a bit disappointing that these language features seem somewhat tied to the OS and will only be available for the new operating system versions introduced this year (iOS 15 and macOS Monterey).
SwiftUI and UIKit Improvements
Of course SwiftUI is Apple’s main focus, with many welcome improvements like border styles for buttons, materials that easily replicate UIVisualEffectView, and easier conditional view modifiers to write code that adapts to each platform. Also of note is the arrival of asynchronous image loading, which has become a recurring joke in the iOS community since it has probably been the most popular kind of third-party dependency to include in a project until now (much like JSON parsers, until we got Swift.Codable!).
For UIKit, Apple has also introduced improved lists, more efficient cell reuse for table and collection views, Core Location UI elements, and a much-anticipated sheet presentation controller (another component self-implemented again and again in too many apps and libraries to count!).
It’s encouraging to see Apple putting a particular focus on improved collaboration tooling within the dev environment. Between DocC improvements, enhanced Source Control, and the announcement of Xcode Cloud, it’s clear that Apple is placing a bet that directly providing teams with the basics of a modern development toolchain will encourage new and existing developers to spend more time building and innovating within the Apple platform ecosystem. At Runway, we see the news as clear validation of something the developer community already knew — that time spent context-switching between multiple tools is time that could be better spent on building great apps.
What remains to be seen is how teams that need to be on multiple platforms including Android, or frameworks like React Native, will be impacted by some of these changes and new tooling options on the Apple-only side. Whatever the case, Runway continues to be driven by the goal of making app releases as easy as possible for all teams, and of optimizing around the particular set of tools that makes the most sense for them. We’re excited to add Xcode Cloud to our stable of integrations and to empower teams to make the most of it!
What are your thoughts on what we’ve heard this week at WWDC? Get in touch and share your perspective!