Why this happens
The Unable to boot the Simulator error occurs when macOS fails to initialize an iOS, iPadOS, or watchOS virtual device runtime. This issue commonly surfaces after a macOS update, an unexpected system reboot, or when running cross-platform tooling like Flutter and React Native alongside Xcode.
At the operating system level, Apple manages simulator instances via com.apple.CoreSimulator.CoreSimulatorService, a background daemon launched by launchd. If the service encounters corrupted state files, stale lockfiles, or orphaned memory mappings from a prior session, it enters an unrecoverable state and refuses to launch new instances.
Another frequent culprit is an accumulation of stale system-level developer caches. When Xcode caches become desynchronized with the active simulator runtime catalog, the boot sequence times out before the simulated SpringBoard environment can initialize.
How to fix it
1. Clear Developer Caches in macOS System Settings
The most reliable fix deletes the corrupted CoreSimulator cache without removing installed iOS runtimes or your primary Xcode installation.
- Open the Apple menu () in the top-left corner of your Mac and select System Settings.
- Navigate to General > Storage.
- Scroll down to the storage breakdown list and find Developer.
- Click the Info (
i) icon next to Developer. - Select Xcode Caches (or Developer Caches) and click Delete….
- Restart your Mac or relaunch Xcode and boot the simulator again.
(On macOS Monterey 12 or earlier, this screen is located under Apple menu > About This Mac > Storage > Manage > Developer).
2. Terminate the CoreSimulator Daemon via Terminal
If the background daemon is locked in a unresponsive state, killing it forces macOS to restart the daemon cleanly with fresh process identifiers:
# Terminate all running Simulator applications
killall Simulator
# Force quit the CoreSimulator service
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
After executing these commands, relaunch Simulator from /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app or run your build again in Xcode or your terminal.
3. Reset and Erase All Simulator Devices
If a specific simulator container image is corrupt, resetting device data back to factory defaults clears out broken sandbox databases:
# Shut down all active simulator processes
xcrun simctl shutdown all
# Erase all device contents and settings
xcrun simctl erase all
Note:
xcrun simctl erase allwipes installed test apps, local app data, and simulated system settings from all virtual devices. It will not delete the device definitions or downloaded runtime images.
4. Delete Broken CoreSimulator Device Records Manually
If simctl commands fail or hang indefinitely, remove the local device configuration directory directly from your user library:
# Shut down Simulator and daemons first
killall Simulator 2>/dev/null
killall -9 com.apple.CoreSimulator.CoreSimulatorService 2>/dev/null
# Remove CoreSimulator device files and caches
rm -rf ~/Library/Developer/CoreSimulator/Caches
rm -rf ~/Library/Saved\ Application\ State/com.apple.iphonesimulator.savedState
If the issue still persists, you can clear all registered device instances:
rm -rf ~/Library/Developer/CoreSimulator/Devices
Once removed, launch Xcode and go to Window > Devices and Simulators > Simulators. Xcode will automatically regenerate the default device list.
5. Check Disk Space Thresholds
CoreSimulator requires adequate APFS snapshot space and free storage to mount runtime disk images. If your Mac has less than 15–20 GB of free space, the boot process often fails silently or surfaces this generic error. Verify your disk space:
df -h /
Free up system storage by removing unused derived data and older platform runtimes before trying to boot the device again.
How to prevent it
- Shut down simulators before rebooting: Run
xcrun simctl shutdown allor quit the Simulator app gracefully prior to restarting macOS to avoid orphaned lockfiles. - Avoid running multiple runner tools simultaneously: Prevent race conditions by ensuring command-line runners (such as
flutter runorxcodebuild) do not attempt to cold-boot the same simulator concurrently. - Periodically prune old runtimes: In Xcode, go to Settings > Platforms and remove unneeded legacy iOS and watchOS runtimes to reduce disk fragmentation and cache size.
- Keep minimum free disk headroom: Ensure your development volume maintains at least 25 GB of available storage for runtime dynamic provisioning.
FAQ
Will deleting Developer Caches erase my project code or provisioning profiles?
No. Developer Caches contain temporary build metadata, index stores, and cached simulator daemon state. Your project files, Git repositories, code signing identities, and provisioning profiles are stored in separate directories and remain completely safe.
Why does this error happen right after a Mac restart?
When macOS shuts down abruptly while a virtual machine or simulator container is running, the CoreSimulator daemon does not release its file locks. Upon reboot, the daemon detects orphaned process locks and refuses to mount the container disk image, triggering the boot failure.
How do I boot a specific simulator from the command line to verify the fix?
Run xcrun simctl list devices to find the device name or UUID of your desired simulator, then boot and open it using:
xcrun simctl boot "iPhone 16"
open -a Simulator
Parts of this guide are adapted from content licensed under CC BY-SA 4.0; this article is shared under the same license.
