# Is it safe to delete Xcode DerivedData, old simulators and iOS DeviceSupport?

> What each Xcode folder in ~/Library/Developer holds, which ones Xcode rebuilds, why Archives need care, and the simctl commands that remove simulators.

- URL: https://moreroom.app/learn/xcode-deriveddata-simulators-devicesupport
- Published: 2026-10-17
- Updated: 2026-10-17
- Publisher: MoreRoom (Yando Pte. Ltd.) — https://moreroom.app

## TL;DR

- DerivedData is safe to delete: Xcode rebuilds it on the next build, at the cost of one slower build and a fresh index.
- iOS DeviceSupport folders are safe to delete; Xcode copies the symbols again the next time you connect a device running that version.
- Do not delete Xcode Archives blindly. They hold the dSYM files Xcode needs to symbolicate crash reports from builds you shipped.
- Remove simulators with xcrun simctl delete unavailable and runtimes with xcrun simctl runtime delete, not by deleting folders by hand.
- Simulator runtimes are typically 7–10 GB each, so removing the iOS versions you no longer test on is often the biggest single win.

Mostly, yes. **DerivedData, iOS DeviceSupport, test device clones, preview simulators and Xcode caches are safe to delete**: Xcode recreates them when it needs them. **Simulators and simulator runtimes** are safe to remove too, but use Apple’s `simctl` tool rather than the Finder. The one folder to treat with care is **Archives**, because it holds the debug symbols for apps you have shipped.

Together these folders commonly reach tens of gigabytes on a Mac used for iOS development. Here is what each one is, and the cleanest way to remove it.

## Where Xcode keeps its data

Almost everything lives under `~/Library/Developer` in your home folder. Simulator runtimes are the exception: they are system disk images managed by macOS.

| Folder | Path | Safe to delete? | Comes back? |
|---|---|---|---|
| DerivedData | `~/Library/Developer/Xcode/DerivedData` | Yes | Yes, on the next build |
| Archives | `~/Library/Developer/Xcode/Archives` | Review first | No |
| iOS DeviceSupport | `~/Library/Developer/Xcode/iOS DeviceSupport` | Yes | Yes, when the device is connected |
| Simulator devices | `~/Library/Developer/CoreSimulator/Devices` | Use `simctl` | Recreate in Xcode |
| Simulator runtimes | `/Library/Developer/CoreSimulator/Volumes` | Use `simctl` | Download again |
| Test device clones | `~/Library/Developer/XCTestDevices` | Yes | Yes, during parallel tests |
| SwiftUI previews | `~/Library/Developer/Xcode/UserData/Previews` | Yes | Yes, when previews run |
| Simulator caches | `~/Library/Developer/CoreSimulator/Caches` | Yes | Yes |
| Xcode caches | `~/Library/Caches/com.apple.dt.Xcode` | Yes | Yes |

The same DeviceSupport logic applies to the `watchOS DeviceSupport`, `tvOS DeviceSupport`, `visionOS DeviceSupport` and `macOS DeviceSupport` folders next to it.

![Map of Xcode’s storage folders under ~/Library/Developer with safe-to-remove and review-first labels](https://moreroom.app/learn/img/xcode-deriveddata-simulators-devicesupport-map.svg)

## DerivedData: safe, Xcode rebuilds it

[DerivedData](https://moreroom.app/glossary#derived-data) holds intermediate build products, the source index, build logs and module caches, in one subfolder per project. Deleting it never touches your code. The cost is time: the next build of each project starts from scratch and Xcode re-indexes before code completion is fully back.

Quit Xcode first, then move the contents to the Trash:

```sh
open ~/Library/Developer/Xcode/DerivedData
```

To clean a single project, delete only its subfolder (named after the project plus a random suffix). **Product › Clean Build Folder** in Xcode removes build products but typically leaves the index in place, so it frees less. You can check or change the location in **Xcode › Settings › Locations**.

## Archives: keep what you shipped

Each `.xcarchive` is a signed build you created with **Product › Archive**, and it contains the app’s dSYM files. Xcode uses those to [add symbol names to crash reports](https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report): without the matching dSYM, a crash from that build shows memory addresses instead of function names. Third-party crash reporters need the same files.

So review archives rather than emptying the folder. In **Window › Organizer › Archives**, delete builds that no user runs any more, such as old internal test builds. For versions still on the App Store or in TestFlight, keep the archive, or copy the `.xcarchive` bundles to an external drive before removing them from your Mac.

## iOS DeviceSupport: safe, copied again when needed

When you connect an iPhone, iPad, Apple Watch, Apple TV or Vision Pro for development, Xcode copies that device’s system symbols so it can debug and symbolicate on your Mac. Recent Xcode versions name each folder after the device model, OS version and build, for example `iPhone15,5 27.0.1 (24A446)`, and a single folder is often several gigabytes.

Every iOS update on every device you debug adds a new folder, and Xcode does not remove the old ones. Folders for OS versions you no longer run are safe to move to the Trash. If you delete one you still need, Xcode copies it again the next time you connect that device, which takes a few minutes.

## Simulators: devices and runtimes are different things

A simulator **runtime** is a full system image for one OS version, such as iOS 27.1, typically 7–10 GB. A simulator **device** is a small configuration plus its own data: installed apps, photos and settings. Many devices can share one runtime, so deleting a device frees its data, while deleting a runtime frees the large image.

![Diagram showing one simulator runtime shared by several simulator devices, and which simctl command removes each](https://moreroom.app/learn/img/xcode-deriveddata-simulators-devicesupport-simulators.svg)

### Remove simulator devices

List devices and remove the ones that no longer work with your installed runtimes:

```sh
xcrun simctl list devices
xcrun simctl delete unavailable
```

`delete unavailable` removes devices that the current Xcode no longer supports, typically left over from older runtimes. To remove one specific device, pass its UDID from the list: `xcrun simctl delete <UDID>`. You can also do this in **Window › Devices and Simulators**. Avoid `xcrun simctl delete all` unless you really want to remove every simulator and its data. Deleting a device is permanent; you can create a fresh one in Xcode at any time.

### Remove simulator runtimes

```sh
xcrun simctl runtime list
xcrun simctl runtime delete <identifier>
```

`runtime list` shows each installed image with its version, identifier and status, plus the total size. `runtime delete` takes the identifier (the UUID on each line) and unmounts and removes the image. As of Xcode 27, `delete` also accepts `--dry-run` to preview, `--notUsedSinceDays <days>`, `--unusable` and `--outdated`. Older Xcode versions support fewer options, so run `xcrun simctl runtime` to see what yours accepts.

In Xcode you can do the same in **Xcode › Settings › Components** (called **Platforms** in Xcode 15): select a runtime and delete it. Apple’s guide to [downloading and installing additional Xcode components](https://developer.apple.com/documentation/xcode/downloading-and-installing-additional-xcode-components) explains how to get one back, including `xcodebuild -downloadPlatform iOS` in Terminal.

Do not delete runtime files from `/Library/Developer/CoreSimulator/Volumes` or `/System/Library/AssetsV2` by hand. Recent Xcode versions store runtimes as system-managed assets, and removing files directly can leave a runtime registered but broken.

### Test clones, previews and simulator caches

- **XCTestDevices**: clones Xcode creates for parallel testing. Safe to move to the Trash when no tests are running.
- **SwiftUI previews**: Xcode runs previews in their own set of simulators. `xcrun simctl --set previews delete all` removes them; Xcode recreates them the next time a preview runs.
- **CoreSimulator caches and logs**: `~/Library/Developer/CoreSimulator/Caches` and `~/Library/Logs/CoreSimulator` are safe to clear with the Simulator app closed.

## Old Xcode versions, toolchains and downloads

Each copy of Xcode in `/Applications` is a large app, and beta or older copies kept for a legacy project add up quickly. Before deleting one, check which Xcode the command line tools use:

```sh
xcode-select -p
```

Keep the copy that path points to, and any version a CI job or old project still needs. Also look in `~/Downloads` for `.xip` files: once Xcode is installed, the archive is no longer needed. Extra Swift toolchains from swift.org live in `~/Library/Developer/Toolchains`; keep the ones your projects select.

`~/Library/Caches/com.apple.dt.Xcode` holds Xcode’s own cache and is rebuilt on demand. If you have used Xcode for many years, you may also find offline documentation sets that much older Xcode versions downloaded to `~/Library/Developer/Shared/Documentation/DocSets`; current versions do not use them.

## A sensible order

1. Quit Xcode and Simulator.
2. Delete DerivedData, XCTestDevices and preview simulators. This is risk-free.
3. Run `xcrun simctl delete unavailable`.
4. Remove DeviceSupport folders and simulator runtimes for OS versions you no longer target.
5. Review Archives and old Xcode copies last, deliberately.

Empty the Trash afterwards to get the space back. The folders are the same on macOS 27 Golden Gate, 26 Tahoe, 15 Sequoia and 14 Sonoma; the `simctl` options available depend on your Xcode version.

## How MoreRoom helps

MoreRoom’s free version scans `~/Library/Developer` and recognises each of these folders, with a “Safe to remove” or “Review first” badge and whether it comes back. DerivedData, DeviceSupport, test clones and caches go to the Trash one item at a time, with Undo. For simulator devices and runtimes, MoreRoom runs Apple’s own `xcrun simctl delete` and `xcrun simctl runtime delete`; those commands are permanent and labelled as such. Archives are marked to keep.

MoreRoom Pro adds the Collector, to clean several items in one go, Goal mode, which picks the safest selection for the space you need, and Project hibernation for inactive projects. Offloading archives to an external drive from MoreRoom is coming soon; for now, copy them yourself.

## FAQ

### Will deleting DerivedData break my Xcode project?

No. DerivedData only holds build products, indexes and logs that Xcode generates. Your source code and project settings live in your project folder. The next build and indexing pass take longer while Xcode recreates the data.

### Is it safe to delete Xcode Archives?

Only for builds nobody runs any more. Each archive contains the dSYM files that turn crash report addresses into function names. Keep archives for every version still in users’ hands, or copy them to another drive first.

### Why does iOS DeviceSupport keep coming back?

Xcode copies debug symbols from each device you connect for development, once per device model and OS version. If you delete a folder for a device you still use, Xcode copies it again the next time you connect that device.

### Can I just delete the CoreSimulator folder?

It is better not to. Simulator devices and runtimes are registered with the CoreSimulator service, and runtimes are mounted system disk images. Use xcrun simctl delete and xcrun simctl runtime delete, or Xcode’s settings, so the bookkeeping stays consistent.

### How do I get a deleted simulator runtime back?

Download it again from Xcode › Settings › Components, or run xcodebuild -downloadPlatform iOS in Terminal. Simulator devices can then be recreated in Window › Devices and Simulators.
