← Blog

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:

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:

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.