To check the simulators currently installed in your system:
$ xcrun simctl list
$ du -h -d0 ~/Library/Developer/CoreSimulator/Devices
To erase all unavailable simulators (not compatible with your current Simulator version)
$ xcrun simctl delete unavailable
To erase all unavailable simulators (not compatible with your current Simulator version)
$ xcrun simctl list
If the simulators listed are too many and you want to keep just some of them, you may use this useful command I found here.
This command will only delete simulators that are shutdown. You can load xcode and open simulators you want to keep then run the command:
xcrun simctl list | grep -w "Shutdown" | grep -o "([-A-Z0-9]*)" | sed 's/[\(\)]//g' | xargs -I uuid xcrun simctl delete uuid
# Check space taken by dyld cache
du -h ~/Library/Developer/CoreSimulator/Caches/dyld
You may delete them manually if you want, or run the following command to swiftly erase them:
sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/dyld/*
The logs folder may be really big if you do a lot of testings:
# Check space taken by Simulator Logs
du -h -d0 ~/Library/Logs/CoreSimulator
You may delete them manually if you want, or run the following command to swiftly erase them:
sudo rm -rf ~/Library/Logs/CoreSimulator/*
If you want to squeeze every last byte that can be recovered, check this article that goes deeper on all temporary files: