Space Consumers — Developer Tools

Xcode

Xcode accumulates data in several places that are completely independent of the installed app size. On an active developer machine, these can collectively reach 100–200 GB.

PathWhat it holdsSafe to deleteCheck size
~/Library/Developer/Xcode/DerivedData/Build artifacts, index dataYes — rebuilds on next builddu -sh ~/Library/Developer/Xcode/DerivedData/
~/Library/Developer/CoreSimulator/Devices/Simulator device imagesPartially — use xcrun simctl delete unavailabledu -sh ~/Library/Developer/CoreSimulator/
~/Library/Developer/CoreSimulator/Volumes/Simulator runtime disk images (Xcode 14+)Partially — remove via xcrun simctl runtime deletedu -sh ~/Library/Developer/CoreSimulator/Volumes/
~/Library/Developer/Xcode/iOS DeviceSupport/Per-device-version debug symbolsYes for old versionsdu -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/
~/Library/Developer/Xcode/watchOS DeviceSupport/Same for watchOSYes for old versionsdu -sh ~/Library/Developer/Xcode/watchOS\ DeviceSupport/
~/Library/Developer/Xcode/DocumentationCache/Downloaded docsYes — re-downloadsdu -sh ~/Library/Developer/Xcode/DocumentationCache/

Simulator runtimes moved in Xcode 14. Pre-14, they lived in CoreSimulator/Devices/. Post-14, runtime disk images are in CoreSimulator/Volumes/. If you’ve upgraded Xcode, you may have both.

Safe way to reclaim simulator space:

# Remove device images for simulator versions no longer installed
xcrun simctl delete unavailable
 
# List installed runtimes (Xcode 14+)
xcrun simctl runtime list
 
# Delete a specific runtime
xcrun simctl runtime delete "iOS 15.5"

iOS device backups

du -sh ~/Library/Application\ Support/MobileSync/Backup/
ls ~/Library/Application\ Support/MobileSync/Backup/

Each subdirectory is a backup for one device, named by UUID. Multiple old devices, multiple backups per device. 200+ GB is common on a machine that has backed up multiple generations of iPhone/iPad.

These are safe to delete but use Finder → Manage Backups to do it properly (it updates the manifest). If you rm -rf a backup directory directly, it works but leaves stale entries.

See also