What Is the iOS DeviceSupport Folder?
When you connect a physical iPhone or iPad to your Mac and Xcode "prepares the device for development," what Xcode is actually doing is downloading and caching the debug symbol files (also called "developer disk images" or "debug info") for the specific iOS version running on that device.
These debug symbols serve several critical purposes during development:
- Debugger attachment — They allow Xcode's LLDB debugger to set breakpoints, step through code, and inspect variables on the physical device
- Crash log symbolication — They convert raw memory addresses in crash logs into human-readable function names and line numbers
- System framework symbols — They include symbol information for every Apple framework (UIKit, Foundation, SwiftUI, etc.) at that specific iOS version, enabling meaningful stack traces
Without these symbols, Xcode can still run your app on the device, but debugging and crash symbolication will not work correctly. You would see raw memory addresses instead of function names in crash logs and the debugger.
Where Is It?
The primary location for iOS device support files is:
~/Library/Developer/Xcode/iOS DeviceSupport/
Inside this folder, you will find subfolders named by iOS version and build number. Each one corresponds to a specific iOS release you have connected a device running:
$ ls ~/Library/Developer/Xcode/iOS\ DeviceSupport/
15.5 (19F77)
15.7.9 (19H365)
16.0 (20A362)
16.4.1 (20E252)
16.6 (20G75)
17.0 (21A329)
17.1.2 (21B101)
17.4.1 (21E237)
17.5 (21F79)
18.0 (22A3354)
18.1 (22B83)
18.2 (22C152)
There are also parallel directories for other platforms:
# watchOS debug symbols
~/Library/Developer/Xcode/watchOS DeviceSupport/
# tvOS debug symbols
~/Library/Developer/Xcode/tvOS DeviceSupport/
How Big Is It?
Each iOS version's debug symbols range from 2 to 5GB, and the size has been trending upward with each major iOS release as Apple adds more frameworks and APIs. Here is a breakdown of typical sizes:
| iOS Version | Typical Size |
|---|---|
| iOS 15.x | 2.5 - 3.2 GB |
| iOS 16.x | 3.0 - 3.8 GB |
| iOS 17.x | 3.5 - 4.3 GB |
| iOS 18.x | 4.0 - 4.7 GB |
To check exactly how much space each version is using on your Mac:
# List all iOS DeviceSupport folders with sizes, sorted largest first
du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/* | sort -hr
Here is a real example from a developer who has been doing iOS development for three years:
$ du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/* | sort -hr
4.7G .../iOS DeviceSupport/18.2 (22C152)
4.5G .../iOS DeviceSupport/18.0 (22A3354)
4.3G .../iOS DeviceSupport/17.5 (21F79)
4.1G .../iOS DeviceSupport/17.4.1 (21E237)
3.9G .../iOS DeviceSupport/17.0 (21A329)
3.8G .../iOS DeviceSupport/16.6 (20G75)
3.5G .../iOS DeviceSupport/16.4.1 (20E252)
3.2G .../iOS DeviceSupport/16.0 (20A362)
3.0G .../iOS DeviceSupport/15.7.9 (19H365)
2.8G .../iOS DeviceSupport/15.5 (19F77)
$ du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/
38G .../iOS DeviceSupport/
That is 38GB consumed by debug symbols alone. For a 256GB MacBook, that is nearly 15% of total storage.
Yes, It Is Safe to Delete
It is completely safe to delete the iOS DeviceSupport folder — partially or entirely. Xcode automatically re-downloads and re-caches the debug symbols the next time you connect a physical device running a given iOS version. The process takes 30 seconds to a few minutes depending on the iOS version and your connection speed.
Here is what happens after you delete device support files:
- The next time you connect a physical device, Xcode will display "Preparing device for development..." and re-download the symbols for that device's iOS version. This is the same process that happened when you first connected the device.
- You cannot debug on a physical device running a deleted iOS version until the symbols are re-downloaded. Simulator debugging is unaffected (simulators use their own symbols bundled in the runtime).
- Crash log symbolication for the deleted iOS versions will not work offline until the symbols are re-cached. However, most crash reporting services (Crashlytics, Sentry, Bugsnag) do their own server-side symbolication, so this rarely matters in practice.
- Nothing else is affected. Your projects, build settings, provisioning profiles, and everything else remain untouched.
Which Versions to Keep and Which to Delete
A smart cleanup strategy targets old versions while keeping what you actively need:
Always Keep
- The iOS version running on your primary test device (e.g., your personal iPhone)
- Any iOS version you are actively debugging on physical hardware right now
Safe to Delete
- Any iOS version you no longer have a physical device running. If you have upgraded your iPhone from iOS 17 to iOS 18, the iOS 17 symbols are no longer needed (unless you have a second device still on iOS 17).
- Point release duplicates. If you have both
17.4.1and17.5, you almost certainly do not need the older one. Devices get updated, and the old symbols are never used again. - Everything older than your current devices. If all your test devices are on iOS 18, you can safely delete iOS 15, 16, and 17 symbols.
The Nuclear Option
If you want maximum space savings and do not mind a brief re-preparation step the next time you connect a device, just delete everything:
# Delete ALL iOS DeviceSupport files
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/*
# Also clean watchOS and tvOS if present
rm -rf ~/Library/Developer/Xcode/watchOS\ DeviceSupport/*
rm -rf ~/Library/Developer/Xcode/tvOS\ DeviceSupport/*
This is completely non-destructive. Xcode handles the re-download automatically and transparently.
Targeted Cleanup: Delete Only Old Versions
If you prefer a surgical approach, here are some useful commands:
# Delete all iOS 15.x device support
find ~/Library/Developer/Xcode/iOS\ DeviceSupport/ -maxdepth 1 -type d -name "15.*" -exec rm -rf {} +
# Delete all iOS 16.x device support
find ~/Library/Developer/Xcode/iOS\ DeviceSupport/ -maxdepth 1 -type d -name "16.*" -exec rm -rf {} +
# Delete all iOS 17.x device support
find ~/Library/Developer/Xcode/iOS\ DeviceSupport/ -maxdepth 1 -type d -name "17.*" -exec rm -rf {} +
Or a script that keeps only the latest two major versions:
#!/bin/bash
# Keep iOS 18.x and 17.x, delete everything older
SUPPORT_DIR="$HOME/Library/Developer/Xcode/iOS DeviceSupport"
for dir in "$SUPPORT_DIR"/*/; do
version=$(basename "$dir" | cut -d' ' -f1)
major=$(echo "$version" | cut -d. -f1)
if [ "$major" -lt 17 ] 2>/dev/null; then
size=$(du -sh "$dir" | cut -f1)
echo "Deleting $version ($size)"
rm -rf "$dir"
else
echo "Keeping $version"
fi
done
echo ""
echo "Remaining:"
du -sh "$SUPPORT_DIR"
watchOS and tvOS DeviceSupport
The same principles apply to watchOS and tvOS device support files. If you have ever paired an Apple Watch with a connected iPhone during development, or connected an Apple TV for tvOS development, Xcode cached debug symbols for those devices too.
# Check watchOS device support size
du -sh ~/Library/Developer/Xcode/watchOS\ DeviceSupport/* 2>/dev/null | sort -hr
# Check tvOS device support size
du -sh ~/Library/Developer/Xcode/tvOS\ DeviceSupport/* 2>/dev/null | sort -hr
watchOS symbols are typically 1-2GB per version, and tvOS symbols are 1.5-3GB per version. The cleanup commands are identical — just substitute the path.
How to Prevent DeviceSupport from Growing Back
Unfortunately, there is no Xcode setting to limit how many iOS versions are cached. Every time you connect a device running a new iOS version (including point releases like 18.1, 18.2, 18.3), Xcode adds another 3-5GB folder.
The best prevention strategies are:
- Clean up quarterly. Set a calendar reminder to check DeviceSupport size every three months and delete old versions.
- Clean up after every major iOS update. When you update your physical devices to a new iOS version, go delete the old one's symbols.
- Use a storage monitoring tool. Tools like DiskPort can track DeviceSupport growth and alert you or auto-clean when it exceeds a threshold.
A Quick Comparison: Before and After
Here is a real example of a developer who cleaned up DeviceSupport files accumulated over two years of iOS development:
| Action | Space Freed |
|---|---|
| Deleted iOS 15.x symbols (3 versions) | 8.6 GB |
| Deleted iOS 16.x symbols (4 versions) | 14.1 GB |
| Deleted iOS 17.0-17.4 symbols (kept 17.5) | 15.8 GB |
| Deleted watchOS 9.x-10.x symbols | 4.2 GB |
| Total | 42.7 GB |
Nearly 43GB reclaimed, with zero impact on their day-to-day workflow (all test devices were on iOS 18).
Pro tip: DeviceSupport cleanup pairs well with a full Xcode storage cleanup. Combined with DerivedData and old simulator runtimes, it is common to reclaim 80-100GB on a well-used development Mac.