iOS DeviceSupport: What It Is and What to Delete

Every time you connect an iPhone or iPad running an iOS version Xcode has not seen before, Xcode copies several gigabytes of symbols from it into iOS DeviceSupport. It never removes old versions, so the folder grows with every update.

Updated:

What the DeviceSupport folders are

To debug an app on a real device, Xcode needs symbols for the system libraries on that device: the frameworks of that exact iOS build. Without them, the debugger cannot name the system frames in a backtrace and stepping into system code is slow or broken. So the first time you connect a device for development, Xcode copies those symbols from the device to your Mac and keeps them for next time.

They are stored under ~/Library/Developer/Xcode, in one folder per platform:

  • iOS DeviceSupport – iPhone and iPad.
  • watchOS DeviceSupport – Apple Watch.
  • tvOS DeviceSupport – Apple TV.

You only have the folders for platforms you have actually debugged on. Inside, there is one subfolder per OS build. With current Xcode versions the name starts with the device model identifier, followed by the version and build number, for example iPhone11,6 18.7.9 (22H355). Folders created by older Xcode versions may leave out the model identifier and show only the version and build. Each subfolder contains a Symbols folder with the copied system libraries.

These folders have nothing to do with the iOS Simulator. Simulators run on system images called simulator runtimes, which Xcode stores and manages separately (xcrun simctl runtime list shows them). Deleting DeviceSupport does not touch any simulator, and deleting a simulator does not make DeviceSupport smaller.

Why they pile up

A new subfolder appears for every OS build you connect, and nothing deletes the old one. Update your phone four times a year, test on a second device that is a version behind and borrow a colleague's iPad once, and you have half a dozen folders. Each one is several gigabytes; on one developer's Mac a single iOS 18 folder measured 4.5 GB. The folders also survive Xcode updates and come along when you move to a new Mac with Migration Assistant, so on a Mac used for a few years they can reach back several major iOS versions. Since the folder for an iOS version you no longer run is never used again, this is mostly dead weight.

See what you have

cd ~/Library/Developer/Xcode
# Which platform folders exist
ls -d *DeviceSupport
# Size of each OS build, largest last
du -sh "iOS DeviceSupport"/* | sort -h

Then check which versions your devices are running now. In Xcode open Window › Devices and Simulators and select a connected device; the OS version is shown next to it. On the device itself it is under Settings › General › About.

Which ones to keep

  • Keep the folder that matches the current OS version of every device you develop on. That is usually the newest folder, but not always: a test device that stays on an older iOS needs its own folder too.
  • Delete folders for OS versions none of your devices run any more. They are not used for building and will not be used for debugging again.
  • Keep a folder if you still need to symbolicate crash logs from that exact OS build on this Mac and have no other device on that version. If you are unsure, keep only that one and delete the rest.

Your app's own symbols are not in these folders. Those live in the dSYMs of your builds and archives, so deleting DeviceSupport does not affect your ability to read your own code in a crash report.

How to delete them

Quit Xcode and disconnect your devices first, so Xcode is not copying into a folder while you delete it. Then remove the folders you picked, either in Finder (open ~/Library/Developer/Xcode, drag to Trash, empty the Trash) or from Terminal:

# One OS build (use the exact folder name from the listing above)
rm -rf ~/Library/Developer/Xcode/"iOS DeviceSupport"/"iPhone11,6 18.7.9 (22H355)"

# Same for the other platforms
rm -rf ~/Library/Developer/Xcode/"watchOS DeviceSupport"/"<folder name>"

What happens on the next connect

Nothing is lost permanently. If you delete a folder that you still need, Xcode copies the symbols again the next time you connect a device on that OS version and select it for development. While it copies, Xcode shows a progress message for the device and debugging is not ready until it finishes. Expect several minutes, depending on the device and the connection; a cable is usually faster than a wireless connection.

The only real cost is that wait, and only for versions you still use. That is why the newest folder per platform is the one worth keeping: it is the one you are most likely to need tomorrow.

DeviceSupport is only one of the large folders Xcode leaves behind. For build caches see how to delete Xcode DerivedData safely, and for simulator data see freeing space used by iOS simulators.

Doing it with CleanDev

The full edition of CleanDev (direct download, launching soon) lists every DeviceSupport folder for iOS, watchOS and other platforms with its size. Scanning is free; cleaning needs a subscription. CleanDev Lite on the Mac App Store does not handle Xcode folders.

  • Folders for older OS builds can be selected for cleanup.
  • The newest folder for each platform is marked for review instead of being selected, because it is most likely the one your device uses.
  • Every cleanup is written to a local log so you can see what was removed.

Questions

Can I delete the iOS DeviceSupport folder?

Yes. It only holds system symbols copied from your devices. Xcode copies them again when you connect a device on that iOS version, so the cost of deleting one you still need is a wait of a few minutes.

Why is iOS DeviceSupport so big?

Each iOS build you connect gets its own folder of several gigabytes, and Xcode never removes old ones. After a few iOS updates the folder holds versions no device of yours runs any more.

Will deleting DeviceSupport break my apps or my Xcode install?

No. Building, signing and running apps do not depend on it, and Xcode itself is not affected. Only debugging on a device needs the matching folder, and Xcode recreates it.

Why does Xcode copy symbols every time I update my iPhone?

Each iOS update is a new OS build, and Xcode has no symbols for it yet, so it copies them once into a new folder. The next connects on that version are fast; the folder of the previous version is the one you can delete.

More guides