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.

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:
ShutdownBootedCreatingUnavailable
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:
- Check disk space.
- Run
xcrun simctl list devices. - Confirm the runtime exists.
- Boot the simulator by UUID.
- Erase only the broken simulator.
- Restart CoreSimulator services.
- Delete unavailable devices.
- Recreate the simulator if needed.
Related Posts
- Xcode Target Membership Error: How to Fix It Step by Step
- Flutter vs Swift for Beginners: Which Should You Learn First as a Mobile Dev?
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.
