Topzee logo
Open menu
Mobile Development

Xcode Simulator Won't Boot: Debugging Failures from Terminal

How to diagnose and fix iOS Simulator boot failures using Terminal commands when Xcode's GUI gives you nothing useful.

Topzee4 min read
Abstract terminal and simulator cover showing command lines over a Topzee blue technical background.

When Xcode Simulator won’t boot, the GUI often gives you almost no useful information. You click a simulator, wait, maybe see a spinner, and then nothing happens. Terminal gives you a better path because simctl can list devices, erase broken simulator data, boot devices directly, and reveal what Xcode is hiding.

This guide focuses on diagnosis first, then reset options. That order matters because deleting simulator data can be useful, but it should not be the only move you know.

Xcode Simulator Won’t Boot: Common Triggers

Simulator boot failures usually happen after one of these:

  • Xcode update
  • macOS update
  • A simulator runtime download or removal
  • Low disk space
  • Corrupted simulator data
  • Stuck CoreSimulator service
  • Multiple Xcode versions installed
  • Flutter or React Native tooling pointing at a stale device

If you recently updated Xcode, the simulator runtime may exist but the device state can still be broken.

A Debugging Story

The most frustrating version of this bug is when the app is ready to test, the simulator refuses to boot, and Xcode’s UI only makes the problem feel bigger. Clicking around rarely explains what CoreSimulator is doing underneath.

That is where simctl becomes useful. Listing devices, checking runtime availability, erasing only the affected simulator, and booting it directly from Terminal gives you a cleaner path back to Xcode without guessing.

List Available Simulators

Start by asking CoreSimulator what it sees:

xcrun simctl list devices

You will see device groups by runtime, such as iOS versions. Look for the simulator you are trying to boot and check its state.

Common states include:

  • Shutdown
  • Booted
  • Creating
  • Unavailable

If a device is unavailable, the runtime may be missing. If it is stuck in a weird state, erasing or deleting it may help.

You can also list runtimes:

xcrun simctl list runtimes

This tells you whether the iOS runtime you expect is installed and usable.

Boot a Simulator Directly

To boot a specific device, copy its UUID from the list and run:

xcrun simctl boot YOUR-DEVICE-UUID

If Terminal returns a specific error, that message is often more useful than Xcode’s UI.

To open the Simulator app after booting:

open -a Simulator

If the device is already booted, you may see an error saying it is unable to boot in the current state. In that case, shut it down:

xcrun simctl shutdown YOUR-DEVICE-UUID

Then boot again.

Erase a Broken Simulator

Erasing resets the selected simulator’s data. It removes installed apps, app data, keychain contents, and settings for that simulator.

xcrun simctl erase YOUR-DEVICE-UUID

For many local development issues, this is safe. Just remember that any test data stored inside that simulator will be removed.

You can also erase all shutdown simulators:

xcrun simctl erase all

I would not start with this command if you only have one broken device. Use the smallest reset that solves the problem.

Read Simulator Logs

If boot still fails, stream logs while trying to boot:

xcrun simctl spawn booted log stream --level debug

If no simulator is booted yet, use the Console app and filter for CoreSimulator, or run:

log stream --predicate 'subsystem contains "com.apple.CoreSimulator"' --level debug

Look for errors about missing runtimes, permissions, disk space, or device service failures. The log text may look noisy, but one clear repeated error can save you from random resets.

Restart CoreSimulator Services

If devices are stuck, quit Simulator and Xcode, then run:

killall Simulator
killall com.apple.CoreSimulator.CoreSimulatorService

Then reopen Xcode and try again.

Nuclear Option: Reset Simulator Data

If a specific simulator is beyond repair, delete it from Xcode’s Devices and Simulators window, then recreate it.

You can also delete unavailable devices:

xcrun simctl delete unavailable

Avoid deleting random folders from ~/Library/Developer/CoreSimulator unless you are intentionally doing a deeper cleanup and understand that you are removing local simulator state.

Quick Checklist

Run this sequence next time:

  1. Check disk space.
  2. Run xcrun simctl list devices.
  3. Confirm the runtime exists.
  4. Boot the simulator by UUID.
  5. Erase only the broken simulator.
  6. Restart CoreSimulator services.
  7. Delete unavailable devices.
  8. Recreate the simulator if needed.

If simulator or release tooling keeps slowing down a mobile project, Beyond Just Digital can help diagnose the native side without losing sight of the actual product deadline.