Which GitHub Actions runner should you use for Xcode 27?

The workflow still says xcode-27, but this week's build used a different compiler and SDK than last week's. What does that label actually pin?

Which GitHub Actions runner should you use for Xcode 27?
TLDR
  • Use xcode-27, or xcode-27-xlarge for the larger runner option.
  • The label chooses a major toolchain family; installed versions still change.
  • Check the active developer directory and any host-specific build tools before migrating.

Choose Xcode 27 explicitly

Set the job's runs-on value to xcode-27. GitHub made this macOS 27 image generally available on October 15. Both supported labels use Apple Silicon; there is no Intel variant. Existing workflows using the preview labels need no label change for GA.

A moving OS label answers a different question. In the runner image matrix checked on October 26, macos-latest maps to macOS 26 arm64. Choosing the toolchain explicitly avoids assuming that “latest” means the Xcode release your project requires.

A major-version label does not freeze the image

The 20261023.0307.1 image inventory lists Xcode 27.1 as the default, alongside 27.0 and a 27.2 release candidate. Its SDK table pairs Xcode 27.0 with iOS 27.0 and Xcode 27.1 with iOS 27.1. Selecting the 27 family therefore does not guarantee the same compiler and SDK on every run.

GitHub's support policy replaces an older patch when a new patch arrives. An explicit application path selects an installed version, but does not make that version permanent on hosted runners.

ControlWhat to verify
Runner labelThe image used for this job
Active Xcode directoryThe installed toolchain selected by command-line tools
SDK and simulator inventoryThe platforms and test devices your project needs

Print the selected tools before building

A small diagnostic workflow makes the selected toolchain visible without building an application:

name: Check Apple toolchain
on: workflow_dispatch
jobs:
  toolchain:
    runs-on: xcode-27
    steps:
      - name: Show selected developer tools
        run: |
          xcode-select --print-path
          xcodebuild -version

Apple documents the developer-directory selection mechanism. If the default is unsuitable, use xcode-select --switch with an Xcode path that exists in the chosen image. Then match its SDKs and installed simulators to the test destinations in your project.

The runner architecture is the build host

runs-on selects the machine executing the job; it does not rewrite your app's deployment targets. Host tools still need to run on that machine, however. Check downloaded executables and architecture-specific paths before moving an Intel workflow.

If a job specifically needs an Intel host, GitHub lists alternatives such as macos-26-intel. That does not supply an Intel Xcode 27 image. Separate the requirement for a new Apple toolchain from the requirement to preserve an Intel execution environment, then validate each job against the requirement it actually has.