Xcode 27.1 Now Available on the Tahoe RC Image

A week ago we added the Xcode 27.1 Release Candidate to the getmac-tahoe-rc image. Apple has now released Xcode 27.1, and the getmac-tahoe-rc label (macOS Tahoe 26.6.2) now carries the final Xcode 27.1 instead of the RC.
Xcode 27.0 stays the default. Jobs that don't select an Xcode keep building with 27.0, exactly as before.
What's New
- Xcode 27.1, final release. It's build 27A9275, at
/Applications/Xcode_27.1.app. Apple shipped Xcode 27.1 with the same build number as the release candidate, so if you already tested with the RC, you tested the build that shipped. - No longer a pre-release. You can use Xcode 27.1 for builds you release, under Apple's usual App Store requirements.
Nothing else on the image has changed. It still has Xcode 27.0 (27A266a) as the default, macOS 26.6.2 (25G83), the iOS 18.6 through 27.1 simulator runtimes, the tvOS, watchOS, and visionOS 27.0 runtimes, Rust 1.98.1, Go 1.27.1, TypeScript 7.0.2, pnpm 12.4.2, Fastlane 2.240.1, CocoaPods 1.17.0, and Google Chrome 153 with a matching chromedriver. See the installed tools page for the full list.
Using Xcode 27.1
The path hasn't changed. If you already set DEVELOPER_DIR for the RC, your jobs now build with the final release, and you don't need to change anything. To opt in, set DEVELOPER_DIR for the job, or for only the steps that should use 27.1:
jobs:
build:
runs-on: getmac-tahoe-rc
env:
DEVELOPER_DIR: /Applications/Xcode_27.1.app/Contents/Developer
steps:
- uses: actions/checkout@v4
- run: xcodebuild -version # Xcode 27.1, Build version 27A9275
To build the same commit with both Xcode versions, use a matrix:
jobs:
build:
runs-on: getmac-tahoe-rc
strategy:
matrix:
xcode: ["27.0", "27.1"]
env:
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
Check Before You Switch
- The iOS 27.1 simulator only supports the iPhone Duo. In the iOS 27.1 runtime (24A94425), the iPhone Duo is the only iPhone you can create. If you create any other iPhone model on iOS 27.1, it fails with
Incompatible device. Pin the OS together with the device. For example, use-destination 'platform=iOS Simulator,OS=27.0,name=iPhone 16'for existing iPhone models, andOS=27.1,name=iPhone Duoto test on the iPhone Duo. - Don't take the newest simulator runtime by default. On this image, a script that creates a simulator on the newest installed iOS runtime gets iOS 27.1, even under Xcode 27.0. Choose the runtime that matches your Xcode and supports your device.
xcrun simctl list runtimes -jlists thesupportedDeviceTypesof every runtime. - Keep the Xcode version in your cache keys. A DerivedData or module cache saved under Xcode 27.0 will still restore under 27.1, but most of it gets rebuilt anyway.
What Hasn't Changed
Without DEVELOPER_DIR or xcode-select, getmac-tahoe-rc builds with Xcode 27.0. Our stable labels haven't moved either. getmac, getmac-latest, and getmac-tahoe still run macOS Tahoe 26.5.2 with Xcode 26.6, and getmac-tahoe-legacy still runs macOS Tahoe 26.3.2 with Xcode 26.4.
GitHub Actions Integration
Use the following labels in your runs-on field:
getmac,getmac-latest, orgetmac-tahoe: macOS Tahoe 26.5.2 with Xcode 26.6 (current stable)getmac-tahoe-rc: macOS Tahoe 26.6.2 with Xcode 27.0 (default) and Xcode 27.1 (Release Candidate image)getmac-tahoe-legacy: macOS Tahoe 26.3.2 with Xcode 26.4
For the full list of available labels, see our Workflow Labels documentation.
Get Started
The updated RC image is live now. Point your workflow at getmac-tahoe-rc and set DEVELOPER_DIR to build and test with Xcode 27.1.
As always, we'd love to hear your feedback. Join our Discord community to share your thoughts or request new tools.
— The GetMac Team