How to remove unused Xcode simulator runtimes on Mac
An unused simulator runtime can be a useful place to investigate when development storage grows. The key is to distinguish a runtime from an individual simulated device, then remove only the versions you no longer need through Xcode’s supported controls.
Do not start by deleting the entire Developer folder. It contains several kinds of data with different purposes. A storage analyzer can help locate growth, but size alone does not tell you what your projects still depend on.
Runtime or simulated device?
A runtime provides the operating-system environment used by compatible simulated devices. A simulated device is a particular test device configured to use a runtime. Removing one device and removing an operating-system runtime are different operations.
Apple’s Simulator setup documentation describes both. Before cleanup, list the OS versions in your testing plan. Keep a runtime if it is still needed to reproduce a customer issue or test a supported configuration.
Review installed components in Xcode
Open Xcode’s Settings and select Components. Inspect the installed items and their storage use. Current Apple documentation describes an information button for a component, followed by Delete or Turn Off where available. Labels and controls vary by Xcode release; follow the controls shown by your installed version. Apple documents them in Downloading and installing additional Xcode components.
Before confirming an operation, check the exact OS version and what Xcode says it will remove. Finish any active testing and preserve simulator-only data that matters. If the runtime is still part of your test matrix, the space is serving a purpose.
Or use the command line
With Xcode 15 or later, simctl lists runtimes with their sizes and can remove the ones you don't use:
xcrun simctl runtime list
xcrun simctl runtime delete --notUsedSinceDays 30 --dry-run
The second command only shows which runtimes you haven't used in 30 days. Run it again without --dry-run to delete them, or pass one identifier from the list instead. To remove simulated devices whose runtime is no longer installed:
xcrun simctl delete unavailable
Don't delete runtime folders by hand in Finder. Xcode and simctl unmount and unregister them properly, and you can download any runtime again from the same Components settings.
Keep cleanup decisions separate
Use this decision table while reviewing development storage:
| Item | Decision to make |
|---|---|
| Simulator runtime | Do any supported tests still require this OS version? |
| Individual simulated device | Does it contain test state or data I need? |
| Project build output | Can this project recreate it, and is it currently in use? |
| Release archive | Might I need it for distribution or investigation later? |
Do not treat these rows as one deletion category. In particular, a release archive is not equivalent to a temporary build result.
Verify the result
Record available space on the affected volume before cleanup. After Xcode completes the operation, check the same reading again. Confirm the retained simulator configurations still work for your projects before removing another runtime.
A storage-category bar is useful context, but the change in that category is not necessarily the same as the amount of space available for your next build. If the expected space has not returned, use the deleted-files troubleshooting guide before broadening the cleanup.
If Xcode cannot remove an item
Keep the error message and record the Xcode version, macOS version and runtime involved. Use Apple’s support or developer feedback route with those details. Avoid copying commands that remove protected system assets or disable security protections just to make a storage number smaller.
When a project needs an older runtime, moving unrelated personal files or removing an unused app may be the better decision. The goal is enough working space without breaking the environment you need.
Track development storage between cleanups
DiskFox can establish a baseline and compare later scans so you can investigate when developer storage grows. It does not provide a complete record of activity before installation, and an inferred cause remains an inference.
Read how DiskFox tracks storage, or use our broader developer-storage guide to separate Xcode data from Docker and package caches. Use Xcode’s own tools for runtime management.
Try DiskFox for 14 days. Start with a scan, investigate the largest changes, and review each action before removing anything.