## TL;DR
Give snapshot a simulator it can actually boot: pick an available device type and OS runtime installed on the machine, delete corrupt simulator devices, and boot it once manually before the lane. Snapshot failures at boot are environment problems: the configured device was removed by an Xcode update, the runtime is missing, or CoreSimulator is wedged with too many stale devices. Align the Snapfile device list with simctl output and retry.

```text
simulator failed to boot - fastlane snapshot on release scheme
```

## Use this when
- fastlane snapshot fails early with simulator failed to boot.
- Xcode was updated and old runtimes disappeared.
- The Snapfile names devices from a previous project.

## Not for this skill when
- Screenshots themselves look wrong after a successful boot. That is a UI or content problem later in the lane.
- The app crashes in the simulator during snapshot. Boot succeeded; debug the app crash instead.

## Steps
1. List available simulators with the simctl list devices command and note which named devices and runtimes actually exist. Verify: the available device and runtime list is captured
2. Compare it with the devices array in the Snapfile and remove or replace every entry that is not available. Verify: Snapfile devices all appear in the simctl available list
3. Boot one target simulator manually from the command line and wait until it reports booted. Verify: simctl reports the device state as Booted
4. If boot hangs, shutdown all simulators and delete unavailable or corrupt devices, then recreate a fresh device for the needed runtime. Verify: a freshly created device boots successfully
5. Run snapshot for a single device and language first to validate the environment cheaply. Verify: one device completes its screenshot set
6. Run the full snapshot lane for the release. Verify: all configured devices finish and the screenshots folder is populated
7. Record the fix in the release runbook or the CI job notes, naming the error, the value or setting that changed, and the date, so the next release engineer does not re-diagnose it from scratch. Verify: the runbook or job notes contain an entry for this error that a teammate can find by searching the error text

## Why it happens
snapshot drives real simulators through CoreSimulator, which depends on installed runtimes and device records that Xcode updates routinely invalidate. A device name that existed last release may be gone now, and the failure surfaces as a boot error rather than a clear missing-device message. Verifying with simctl separates environment health from lane configuration.

In practice this failure is rarely a one-off. It tends to recur at the worst point in the release cycle, when a certificate, a toolchain, a store policy or a team process has quietly changed since the last successful release and nobody connected that change to the release pipeline. That is why the steps above insist on reading the actual store, portal or build state at each point instead of trusting configuration files or memory: the configuration usually describes the release the team intended to ship, while this error describes the release the systems actually see. Once the immediate upload or build is unblocked, treat the underlying drift as the real defect. Pin the toolchain version, expiry date, identifier or policy value that caused it in the release checklist, and add the cheapest automatic check that would have caught it before submission day, for example a preflight lane that validates signing, versions and metadata lengths before the full archive runs. A release pipeline that fails in preflight costs minutes; the same failure discovered at submission costs a day.

## Variants and edge cases
### fastlane snapshot simulator failed to boot fix
Lane phrasing; align Snapfile with simctl. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
### CoreSimulator failed to boot device snapshot CI
CI phrasing; pre-boot a device in the job before snapshot. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
### Edge case: too many simulators on CI
Accumulated devices slow CoreSimulator drastically. Prune devices in the CI setup step. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_oM3efeoJqvUzwyNNQTmJHQ
