- SimCleaner
- Guides
- Xcode disk space
Why Xcode takes so much disk space, and how to get it back
Xcode.app is only about 4 GB. What grows is outside it: iOS simulator runtimes at 7–9 GB each, simulators, DerivedData and device support symbols. All of it can be rebuilt or downloaded again, except the archives of builds you shipped.
xcrun simctl delete unavailable. Then delete DerivedData for projects you aren't working on, device support folders for iOS versions you no longer debug, and runtimes you don't test on. Keep the Archives of builds you shipped, and everything in Xcode/UserData except Previews.Where the space goes
Xcode 27 itself takes about 4 GB in Applications. Simulator runtimes aren't bundled with it any more. They're separate downloads, and the biggest single items. Everything else accumulates as you build, test and plug in devices.
| What | Where | How big | Safe to delete? |
|---|---|---|---|
| Simulator runtimes | /System/Library/AssetsV2/com_apple_MobileAsset_iOSSimulatorRuntime | 7.5 GB for iOS 27.0 | Yes, for OS versions you don't test on. Only through Xcode or simctl. |
| Simulators | ~/Library/Developer/CoreSimulator/Devices | From about 20 MB to several GB each | Yes, if you don't need the apps and data inside. |
| DerivedData | ~/Library/Developer/Xcode/DerivedData | A few GB to 50 GB and more | Yes. The next build starts from scratch. |
| Device support | ~/Library/Developer/Xcode/iOS DeviceSupport | 3 to 7 GB per OS version | Yes, for versions you no longer debug. |
| SwiftUI Preview devices | ~/Library/Developer/Xcode/UserData/Previews | Up to tens of GB | Yes. Xcode makes new ones. |
| Test clones | ~/Library/Developer/XCTestDevices | Looks huge, mostly shared blocks | Yes, when no tests are running. |
| Agent workspaces | ~/Library/Developer/XcodeBuildMCP/workspaces | Reported up to 126 GB | Yes, when no agent is working. |
| Simulator caches | /Library/Developer/CoreSimulator/Caches/dyld | About 3 GB per runtime, when present | Yes, with simctl. Rebuilt on demand. |
| Archives | ~/Library/Developer/Xcode/Archives | Depends on the app | Not for builds you shipped. |
| Your settings | ~/Library/Developer/Xcode/UserData, apart from Previews | Small | No. Snippets, themes and key bindings live here. |
Two folders look like caches but aren't. Xcode/UserData holds your code snippets, color themes and key bindings. Xcode/CodingAssistant belongs to the coding agents built into Xcode 26.3 and later. Leave both.
Measure it first
This lists the folders that grow, largest last, and the runtimes with their sizes:
du -sh ~/Library/Developer/CoreSimulator/Devices \
~/Library/Developer/Xcode/DerivedData \
"$HOME/Library/Developer/Xcode/iOS DeviceSupport" \
~/Library/Developer/Xcode/UserData/Previews \
~/Library/Developer/XCTestDevices \
~/Library/Developer/Xcode/Archives 2>/dev/null | sort -h
xcrun simctl runtime listdu counts APFS clones in full, so the total can be larger than what deleting would give back. Simulators and test clones share a lot of blocks. More on that.
Clean up in this order
Cheapest first: each step costs less than the next one if you turn out to need it again.
- Unavailable simulators.
xcrun simctl delete unavailableremoves simulators whose runtime is gone. Apple's developer support suggests it after every Xcode update (forum reply). Don't addsudo; it doesn't help. - DerivedData for projects you aren't working on, or all of it. You pay with one full build per project.
- Device support for iOS versions your devices no longer run. Xcode copies symbols again the next time a device on that version connects.
- Runtimes you don't test on, in Xcode › Settings › Components. Getting one back means a download of several gigabytes.
- Simulators you don't open. Erase one to keep it but empty it; delete it to remove it everywhere.
- Preview devices and test clones. Xcode recreates them when it needs them.
Why macOS calls some of it System Data
Recent versions of macOS have a Developer category in System Settings › General › Storage for build data, caches and device support. What doesn't fit a category, including runtime images in system storage and local Time Machine snapshots, lands in System Data, which Apple describes as files that "don't fit into the other categories" (Apple Support). If space you freed doesn't show up, this guide walks through the usual reasons.
With SimCleaner
SimCleaner measures everything in the table except Archives and your settings, plus simulator folders CoreSimulator has forgotten, and shows it all as one bar next to your free space. Click a colour to open the page that cleans it. A "Freed about" total estimates what your cleanups gave back.

Questions
Can I delete the whole ~/Library/Developer folder?
Don't. It holds your Xcode settings and code snippets as well as caches, and pulling simulator folders out from under CoreSimulator leaves Xcode listing devices that no longer exist. Remove the parts in the table instead.
Should I quit Xcode first?
For DerivedData, yes, or at least close the projects whose folders you remove. Deleting simulators and runtimes goes through CoreSimulator, which shuts running simulators down first. Erasing is the exception: shut the simulator down before you erase it.
Why does the space come back?
Because Xcode keeps working: builds refill DerivedData, Previews create simulators and agents create workspaces. Runtimes that reappeared after a restart were a bug in Xcode 27.0, fixed in Xcode 27.2 beta 2 (release notes).