How to delete old iOS simulators and runtimes on a Mac
· 2 min read
Every Xcode update ships a new iOS runtime and leaves the previous one where it was. After two years that is four or five iOS versions, plus watchOS, tvOS and visionOS, at 6 to 10 GB each. It is the single largest thing a developer can remove from a Mac without losing anything.
Where they are
Since Xcode 15 runtimes are installed as disk images, not folders:
/Library/Developer/CoreSimulator/Imagesholds the downloaded images./Library/Developer/CoreSimulator/Volumesis where they are mounted.
Older Xcode versions kept them under
/Library/Developer/CoreSimulator/Profiles/Runtimes as .simruntime
bundles. A Mac that has been upgraded through several Xcode versions can have
both.
The simulator devices are separate and live in your home folder:
~/Library/Developer/CoreSimulator/Devices, one folder per device, each with a disk image that grows as you install builds into it.~/Library/Developer/CoreSimulator/Caches, which rebuilds itself.
See what you have
xcrun simctl runtime list
xcrun simctl list devices
The first command shows every installed runtime with its size and state. The
second shows every device, with (unavailable) next to the ones whose runtime
is gone.
Delete a runtime
xcrun simctl runtime delete <identifier>
The identifier is the long string in the first column of the runtime list.
xcrun simctl runtime delete all removes every runtime, which is fine if you
are about to reinstall the one you need.
The same list is in Xcode → Settings → Components, with a delete button next to each platform version.
Delete the devices
# Devices whose runtime no longer exists.
xcrun simctl delete unavailable
# Reset every remaining device to a fresh install, keeping the device.
xcrun simctl erase all
erase all is the one to run if your simulators are bloated with installed
builds of your own app. Each device keeps its name and runtime; the disk image
shrinks back to the fresh size.
Devices are often the bigger half. The devices folder, measured, and the four runtime delete flags.
What to keep
Keep the runtime for the oldest iOS version your app supports and the newest one you ship against. Everything between those rarely needs testing, and comes back with one download if it does.
Where Decruft fits
Decruft lists your simulator devices and their caches with measured sizes, and
moves the ones you pick to the Trash. Runtimes live outside your home folder
and are removed through Xcode or simctl as above; Decruft shows them and
their sizes so you know how much is waiting there.
Questions
Where are iOS simulators stored on a Mac?
Runtimes install under /Library/Developer/CoreSimulator/Volumes and Images since Xcode 15. Simulator devices, with their own disk images, are in ~/Library/Developer/CoreSimulator/Devices.
Does deleting a simulator runtime break Xcode?
No. Xcode keeps working with whichever runtimes remain. If a project targets a deleted runtime, Xcode offers to download it again.
How do I delete unavailable simulators?
Run xcrun simctl delete unavailable. It removes devices whose runtime is gone and leaves the rest untouched.