Delete old iOS simulator runtimes
Each runtime is 5-8 GB, and Xcode keeps them all.
Every iOS/watchOS/tvOS/visionOS version you ever ran a simulator on is
still mounted as a disk image. Deleting old ones is safe – Xcode offers
to re-download a runtime whenever a simulator needs it.
List what's installed
xcrun simctl runtime list
You'll see entries like iOS 17.0 (21A328) – 7.2 GB with a
UUID per runtime image.
Delete one runtime
xcrun simctl runtime delete <UUID>
This is the supported way – it unmounts and removes the runtime image cleanly. Keep only the versions your apps actually target for testing.
The GUI way
- System Settings → General → Storage → Developer – shows runtimes and lets you delete them.
- Xcode → Settings → Platforms – select a platform version and press −.
Related junk worth checking
Unavailable simulators (devices left behind by old Xcode versions) and orphaned XCTest clones also pile up. Terminal:
xcrun simctl delete unavailable
CacheCleaner lists every runtime with its real size next to
unavailable simulators, dyld caches, DerivedData and the rest of the
Xcode junk drawer – and deletes runtimes through the same safe
simctl path.