GitHub Actions iOS simulator job hangs

An iOS test job on a macOS runner hangs at simulator boot or destination resolution and eventually hits the job timeout.

Partial fit Likely class: runner simulator boot/resolution stall · Updated

Symptom

An iOS test job on a hosted macOS runner hangs. It does not error quickly — it sits at simulator boot or destination resolution and runs until the job’s overall timeout kills it.

What it usually looks like

This is the same underlying failure class as xcodebuild timed out waiting for the simulator and unable to boot the simulator, seen inside a runner.

Why it happens / likely failure classes

Hosted runners are clean, headless, and resource-bounded, which stresses simulator bring-up:

Quick checks

Add diagnostic steps to the job before the test step:

# What does the runner actually have?
xcode-select -p
xcrun simctl list runtimes
xcrun simctl list devices available

# Boot explicitly and wait, so a stall is visible and bounded
xcrun simctl boot "<UDID-or-name>"
xcrun simctl bootstatus "<UDID-or-name>" -b

If the explicit boot is what hangs, the problem is simulator readiness on the runner — not your test target.

Manual mitigations

When XCSteward may help

XCSteward runs on a Mac — including a CI Mac runner — and targets the operational bring-up that tends to stall here:

Worth testing against this class of failure on self-hosted or provision-controlled Mac runners where you can install it.

When XCSteward probably will not help

Common questions

What does "GitHub Actions iOS simulator job hangs" usually mean?
It usually points to runner simulator boot/resolution stall. An iOS test job on a macOS runner hangs at simulator boot or destination resolution and eventually hits the job timeout. Start by checking simulator readiness, destination selection, CoreSimulator/simctl responsiveness, and whether another xcodebuild, simctl, or Simulator process is already active before treating it as a test-code failure.
Can XCSteward help with "GitHub Actions iOS simulator job hangs"?
This is a partial fit. XCSteward may help when the failure comes from execution readiness, destination selection, timeouts, cleanup, or contention. It probably will not help when the root cause is missing configuration, a broken runtime, a test-code bug, or a vendor image defect.
What should I check first?
Check whether xcrun simctl commands return promptly, whether xcodebuild can resolve a concrete simulator destination, whether the device is truly ready rather than merely Booted, and whether concurrent agents, scripts, or manual runs are touching the same simulator subsystem.