# iOS DeviceSupport is 30 GB of iPhones you no longer own

> Xcode keeps a full symbol cache for every iOS version of every device ever plugged in, and never removes any of them. What the folder is for, when you need it, and how to clear it without breaking debugging.

Canonical: https://bytesweep.app/blog/ios-device-support-cleanup.html
Last updated: 2026-10-16

## iOS DeviceSupport, the folder that only ever grows

The first time you plug an iPhone into a Mac running Xcode, you wait several minutes while Xcode prepares the device for debugging. It is copying that device’s system symbols onto your Mac, so it can turn stack traces from that exact build of iOS into function names. It keeps the copy. It keeps one for every device and every iOS build you ever connect, and it never removes any of them.

- By [Shajeen Ahamed](https://bytesweep.app/about.html#author)
- Published 1 October 2026
- Last updated 16 October 2026
- 3 min read
- Part of [Xcode storage cleanup](https://bytesweep.app/xcode-storage-cleanup.html)
- [How we write](https://bytesweep.app/about.html#how-we-write)

### How it adds up

```
du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/* | sort -h
```

Each subdirectory is named for an iOS version and build number, sometimes with the device model or an architecture added, and each is typically 1.5 to 7 GB. The part people miss is that updating a phone doesn’t replace its folder. Every point release you install on a device you debug adds a new one alongside the old.

*Every update on every connected device adds a folder, and none of them are removed when the device moves on.*

A developer with a couple of test devices ends up with a dozen or more folders within a few years, and 40 GB is not unusual. It also explains the folder named after a device you’re sure you never plugged in: often it’s your own phone under an older build number, or a colleague’s device on a shared machine.

watchOS and tvOS do the same thing in sibling directories. They’re usually smaller only because fewer of those devices get connected:

```
du -sh ~/Library/Developer/Xcode/*DeviceSupport 2>/dev/null
```

### Which folders you’d ever need again

A folder holds the dyld shared cache and symbol tables for one iOS build. You need it only to attach a debugger to, or symbolicate a crash from, a device running that exact build. Go through the list with that in mind:

- A device you no longer own: never needed again.
- An iOS version below your deployment target: never needed again.
- A beta build you’ve since updated past: dead weight once the release is out.
- The build currently on your test device: needed, but Xcode recreates it by itself if you delete it.
- Builds your users are still on, if you symbolicate their crash reports locally: the one case worth keeping. If a crash reporting service does the symbolication, you don’t need these either.

There’s no setting that stops Xcode creating these, and you wouldn’t want one, since without them on-device debugging shows addresses instead of symbols. Pruning now and then is the only control you get.

### Clearing it

Delete whole version directories; there’s nothing inside one worth picking out. The Finder is fine for this:

```
open ~/Library/Developer/Xcode/iOS\ DeviceSupport
```

Or remove every folder not modified in six months:

```
find ~/Library/Developer/Xcode/iOS\ DeviceSupport -maxdepth 1 -mindepth 1 \
  -type d -mtime +180 -print -exec rm -rf {} +
```

Quit Xcode first. If you delete the folder for a build that’s still on a device you use, nothing breaks: reconnect it and Xcode prepares it again, which costs a few minutes once.

A DeviceSupport folder you needed costs five minutes to get back. The `Archives` folder one level up can’t be rebuilt at all, so check you’re in `iOS DeviceSupport` before running any `rm`.

### The rest of ~/Library/Developer/Xcode

This folder is one of a handful of very large neighbours, and one cleanup session should cover all of them. Typical sizes:

| Folder | Typical size | Safe to delete |
| --- | --- | --- |
| `DerivedData` | 20–60 GB | Yes, entirely ( [what it is](https://bytesweep.app/blog/deriveddata-explained.html)) |
| `iOS DeviceSupport` | 5–40 GB | Yes, by version |
| `Archives` | 2–30 GB | **No** ( [the one to keep](https://bytesweep.app/blog/xcode-archives-dsym.html)) |
| `UserData/Previews` | 1–20 GB | Yes (Xcode Previews cache) |
| `~/Library/Developer/CoreSimulator` | 10–80 GB | Yes, selectively ( [simulators](https://bytesweep.app/blog/xcode-simulators-cleanup.html)) |
| `~/Library/Developer/Toolchains` | 2–15 GB | Yes, if unused (old toolchains) |

On a Mac that has shipped a few apps these can reach 100 GB together, often more than the rest of the home folder. macOS doesn’t classify any of it, which is why a developer’s Mac shows such a large System Data figure: all of it lands in [that grey bar](https://bytesweep.app/blog/system-data-explained-numbers.html).

### Let Bytesweep clear this for you

Skip the commands. Bytesweep finds this for you, rates every item safe, review first or keep, and clears what you choose. Most of what it removes can be put back for seven days. See what it finds on your own disk, free for 3 days, then pay once with no subscription.

[Try it free for 3 days](https://bytesweep.app/download.html) [Buy · $29.99](https://bytesweep.app/pricing.html)

Related in Bytesweep: [Developer tools](https://bytesweep.app/dev-servers.html)

### Keep reading

- [**DerivedData: what Xcode keeps there and when to delete it** DerivedData is usually the largest folder in a developer's home directory. What Xcode stores in it, why it never shrinks, when deleting it fixes a build, and the one part of it worth keeping.](https://bytesweep.app/blog/deriveddata-explained.html)
- [**Deleting iOS simulators safely, and what simctl really removes** CoreSimulator keeps a runtime per iOS version and a device per configuration, and both accumulate. The commands that remove what is genuinely unused, and the caches simctl does not touch.](https://bytesweep.app/blog/xcode-simulators-cleanup.html)
- [**Xcode Archives and dSYMs: the one folder not to delete** Archives hold the exact binary you shipped and the symbol files that turn a user's crash report into a line number. They cannot be regenerated, and every cleanup guide tells you to delete them.](https://bytesweep.app/blog/xcode-archives-dsym.html)
