Xcode Simulator Storage: Runtimes, Devices, and Safe Cleanup
AskClean Team · Updated 2026-07-28
Reviewed by AskClean engineering · Read our testing and editorial standard
Xcode simulator storage has two different layers: shared platform runtimes and per-device data. Delete unavailable devices with xcrun simctl delete unavailable, remove unused runtimes in Xcode Settings > Components, and delete individual test devices from Devices and Simulators. Do not erase ~/Library/Developer/CoreSimulator wholesale.
Audit first: runtimes and device data are not the same
A runtime is the OS image used by many simulator devices. A device is a model-and-OS pairing with its own apps, documents, caches, and test state. Removing one stale device is low impact; removing a runtime makes every device that depends on it unavailable.
Start with a read-only inventory. Ask Xcode which runtimes and devices exist, then measure the related directories. The downloadable script linked below runs du and simctl list only. It neither deletes files nor asks for administrator access.
Delete unavailable and unused simulator devices
Run xcrun simctl delete unavailable to remove device records whose runtime is no longer installed. This uses simctl's own availability state instead of guessing from folder names. It is a good first pass after an Xcode upgrade.
For devices that are still available but no longer useful, open Xcode > Window > Devices and Simulators > Simulators. Delete only models or OS combinations you no longer test. Device deletion removes that simulator's installed apps and test data, so export anything you deliberately stored there first.
Reset Content and Settings is different from Delete: reset keeps the simulator device but removes its apps and data; delete removes the device record itself.
Remove old platform runtimes in Xcode
Open Xcode Settings > Components (Platforms in some earlier releases). Installed simulator runtimes are listed with their versions and sizes. Keep versions required by your test matrix and remove versions you no longer support.
Use Xcode's own component manager for runtimes. It understands installed packages and dependencies; manually deleting opaque runtime bundles can leave Xcode reporting a component that is missing on disk.
Measure reclaimed space correctly
Record the directory sizes before cleanup, perform one category of cleanup, then run the same audit again. This isolates the result. The Finder storage chart may take time to recalculate, so compare byte-based directory measurements first.
Do not publish a universal 'you will save 40 GB' promise. A new Mac with one runtime may reclaim almost nothing, while a long-lived CI or development machine can have many old devices. Your before-and-after output is the evidence that matters.
What not to delete
Do not recursively erase ~/Library/Developer/CoreSimulator just because it is large. That directory includes current devices, application containers, logs, caches, and metadata that CoreSimulator expects to remain internally consistent.
Also treat Archives separately from simulator storage. Archives contain shipped app builds and dSYM files needed to symbolicate crashes. Remove them through Xcode Organizer only after confirming that production symbols are preserved elsewhere.
Rebuildability map
This table records the operational boundary for each category. Measure your own size with the audit script; the outcome column states what deletion changes.
| Item | Where to inspect | What deletion costs |
|---|---|---|
| Unavailable devices | xcrun simctl list devices | Removes orphaned device data; no installed runtime can boot those devices. |
| Available devices | Xcode > Devices and Simulators | Removes installed apps and test state for the selected virtual device. |
| Platform runtimes | Xcode Settings > Components | Removes the OS image; reinstall before testing that OS version again. |
| CoreSimulator caches | ~/Library/Developer/CoreSimulator/Caches | Rebuilt on demand after Xcode and Simulator restart. |
Verification on 2026-07-28: a controlled 16.00 MB DerivedData fixture reported 16.00 MB before removal and 0 KB after removal. This validates the script's unit conversion and before/after behavior; it is not a claim about how much space a real Mac will recover. Paths and labels can vary by Xcode release.
FAQ
Is xcrun simctl delete unavailable safe?
It targets devices that simctl already marks unavailable because their supporting runtime is absent. It does not remove available devices or current runtimes. As with any cleanup, run simctl list first if you want to review the state.
Can I delete every simulator device and recreate them?
Yes, if you do not need the apps and data stored inside them. Xcode can create devices again, but local test accounts, downloaded fixtures, keychain state, and app containers on those simulators will be gone.
Why is CoreSimulator still large after deleting unavailable devices?
The remaining space may belong to installed runtimes or available devices. Unavailable cleanup only removes orphans; inspect Settings > Components and the Devices and Simulators window next.
Does deleting DerivedData remove simulator runtimes?
No. DerivedData contains project build products and indexes. Simulator runtimes and device data live under separate CoreSimulator locations and must be managed separately.
Sources