Xcode
simulator
uninstall
MacOS
duplicate

How to uninstall downloaded Xcode simulator?

Master System Design with Codemia

Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.

Introduction

Xcode simulator storage grows quickly because each downloaded runtime includes a full device image, caches, and support files. The term "duplicate simulator" usually refers to one of two things: an extra runtime you no longer need, or duplicate device entries created after Xcode or runtime upgrades. The cleanup steps are different, so it helps to identify which one you are removing.

Remove an Unneeded Runtime from Xcode

If you downloaded an iOS, watchOS, or tvOS runtime through Xcode, the safest place to remove it is Xcode itself.

On recent Xcode versions, open Xcode > Settings > Platforms. Older versions used Preferences > Components. In that screen, Xcode lists installed runtimes and usually offers a delete control for the ones you downloaded manually.

This is the best first option because Xcode updates its metadata at the same time. You avoid leaving behind a runtime package that the Simulator app still thinks exists.

Remove Duplicate or Unavailable Devices

Sometimes the runtime is fine, but the Simulator device list contains stale or duplicated devices. In that case, use simctl, which is Apple's supported command-line interface for CoreSimulator.

Start by listing runtimes and devices:

bash
xcrun simctl list runtimes
xcrun simctl list devices

If Xcode upgrades left behind entries marked unavailable, remove them with:

bash
xcrun simctl delete unavailable

That command is low risk and often clears out the clutter that looks like duplicate simulators in the UI.

If you want to delete a specific duplicate device, copy its UDID from simctl list devices and delete only that device:

bash
xcrun simctl delete 7A0F6E2B-7A74-4F08-8F2F-5A2A5A1DDA20

You are deleting a virtual device record here, not an entire runtime. Xcode can recreate standard devices later if needed.

Check Disk Usage Before and After

When storage is the main concern, measure the size before you delete anything. That makes it obvious whether you are removing devices, caches, or full runtimes.

bash
du -sh ~/Library/Developer/CoreSimulator
du -sh /Library/Developer/CoreSimulator/Profiles/Runtimes/* 2>/dev/null

The first path contains per-user simulator data such as devices and app containers. The second path contains shared runtime bundles. If the second path is consuming tens of gigabytes, uninstalling a runtime will save more space than deleting one duplicate device.

Manual Cleanup When Xcode Does Not Show a Delete Button

If a runtime no longer appears correctly in Xcode, you can clean up in a more direct way, but do it carefully:

  1. Quit Xcode and the Simulator app.
  2. Shut down any booted simulators.
  3. Remove only the runtime bundle you no longer need.
  4. Reopen Xcode and let it refresh its simulator list.

Use this command first to make sure nothing is still running:

bash
xcrun simctl shutdown all

For most developers, it is better to stop after that and use the Xcode UI. Manual deletion from /Library/Developer/CoreSimulator/Profiles/Runtimes works, but it is easier to remove the wrong runtime and then discover that an active project still depends on it.

A Practical Cleanup Flow

A reliable cleanup sequence looks like this:

  1. Remove stale device records with xcrun simctl delete unavailable.
  2. Recheck the Simulator app. If the duplicates are gone, stop there.
  3. If storage is still the issue, uninstall old runtimes from Xcode > Settings > Platforms.
  4. Keep only the runtimes required by your supported OS matrix.

That order matters because duplicate device records are common and easy to clean, while runtime removal is more disruptive and may trigger future downloads.

Common Pitfalls

The biggest mistake is deleting a device when the real problem is an obsolete runtime. Deleting a device frees very little disk space compared with removing a whole downloaded runtime.

Another mistake is manually removing files while Xcode or Simulator is still open. CoreSimulator caches state aggressively, so open processes can recreate confusing metadata or leave Xcode showing ghost devices until the next restart.

Developers also sometimes delete every old runtime and then discover their CI or QA process still tests an older iOS version. Before removing a runtime, compare the installed versions with the minimum OS versions you actively support.

Finally, do not confuse ~/Library/Developer/CoreSimulator with the Xcode app bundle itself. Removing simulator data does not uninstall Xcode, and removing Xcode does not automatically clean every simulator artifact.

Summary

  • Use Xcode > Settings > Platforms to uninstall downloaded runtimes safely.
  • Use xcrun simctl delete unavailable to remove stale device entries that look like duplicates.
  • Delete a specific device by UDID only when you know the duplicate is just a device record.
  • Check disk usage so you know whether devices or runtimes are consuming the space.
  • Quit Xcode and Simulator before any manual cleanup to avoid stale CoreSimulator state.

Course illustration
Course illustration

All Rights Reserved.