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.