← Guides

Delete old simulator runtimes in Xcode

Every simulator runtime is a disk image: about 8.5 GB for iOS 26, about 4 GB for watchOS. Xcode keeps the old ones when it updates, so a few Xcode versions in, tens of gigabytes go to runtimes nobody boots.

See what's installed

xcrun simctl runtime list
== Disk Images ==
-- iOS --
iOS 18.6 (22G86) - 7D0E5B21-… (Ready)
iOS 26.5 (23F77) - 23E75CAC-… (Ready)
-- watchOS --
watchOS 26.5 (23T570) - CA340FAA-… (Ready)

Total Disk Images: 3 (19.0G)

Keep the runtime that matches your current Xcode. xcrun simctl runtime match list shows which one that is for each platform.

Delete them in Terminal

# what would go: runtimes not used in 90 days
xcrun simctl runtime delete --notUsedSinceDays 90 --dry-run

# delete them
xcrun simctl runtime delete --notUsedSinceDays 90

# or one runtime, by the ID from the list
xcrun simctl runtime delete 7D0E5B21-…

Booted simulators on that runtime are shut down first. Their devices stay in the list as unavailable until you delete them (see below). If you need a runtime again, Xcode downloads it.

You can do the same in Xcode under Settings › Components (called Platforms before Xcode 16), where each installed runtime is listed with its size.

The rest of Xcode's leftovers

# simulators whose runtime is gone
xcrun simctl delete unavailable

# SwiftUI Previews devices (quit Xcode first)
xcrun simctl --set previews delete all

# build products; Xcode rebuilds what it needs
rm -rf ~/Library/Developer/Xcode/DerivedData

# see what's left
du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator/*

Also worth a look: ~/Library/Developer/Xcode/iOS DeviceSupport keeps a folder of symbols for every iOS version a physical device of yours has run, and ~/Library/Developer/Xcode/Archives keeps every archive you made. Delete the old folders in Finder.