How to Delete Xcode Simulator Runtimes and Free Mac Storage

Identify unused iOS, watchOS, tvOS, or visionOS Simulator Runtimes, remove one version through Xcode Components, and verify the disk space actually returned.

Short answer: remove the runtime, not AssetsV2

A Simulator Runtime supplies the operating-system environment for simulated iOS, watchOS, tvOS, or visionOS devices. It is different from an individual simulated device and from project build caches. Removing a runtime makes every simulator that depends on that version unavailable until the runtime is downloaded again.

Apple's supported management surface is Xcode → Settings → Components. It lists installed components and the storage that Xcode expects to recover. Do not treat /System/Library/AssetsV2 as a downloads folder: macOS can use it for software updates, voices, fonts, and other managed assets as well as Simulator Runtimes.

Identify the object before estimating the effect of deleting it.
ItemWhat it containsSafe decision
Simulator RuntimeOne platform and OS-version environmentRemove a confirmed unused version in Components
Simulated deviceA device state built on a runtimeDeleting the device does not remove the whole runtime
DerivedDataProject build intermediatesEvaluate separately from runtimes
AssetsV2 top-level folderSeveral classes of macOS-managed assetsDo not delete it as a whole

Inventory the versions your projects still need

Open Apple menu → System Settings → General → Storage and record available space. Then list the deployment targets, customer OS versions, regression-test requirements, and any local automation that depends on this Mac. An old runtime can still be necessary for reproducing a production bug; an unused newer platform can be the better removal candidate.

If you cannot explain why a version is safe to remove, leave it installed until the project owner confirms the test matrix. Also quit active Simulator and debugging sessions before changing runtimes.

  1. Record the Available value from df -h /.
  2. Review project deployment targets and the test plan.
  3. Quit running simulators and debugging sessions.
  4. Record installed runtimes and Xcode's estimated recoverable space in Components.

Delete one runtime in Xcode Components

Choose Xcode → Settings → Components. Under Other Installed Platforms, find the exact platform and OS version. Select its information control and choose Delete after checking the effect. Labels can move between Xcode releases, but the component manager remains the place to identify and remove the registered component.

Remove one confirmed runtime at a time. Do not quit Xcode, terminate CoreSimulator services, or move related folders while installation or deletion is active. If the control is unavailable, let the current component operation finish before doing anything else.

  1. Open Other Installed Platforms.
  2. Match the platform, OS version, and estimated recovered space.
  3. Confirm that no current project needs that runtime.
  4. Choose Delete and wait for Components to refresh.
  5. Verify the result before considering another version.

Use Terminal as an inventory tool first

Run xcrun simctl runtime list -v to see runtimes registered with the selected Xcode. Record each candidate's platform, version, build, UUID, state, and last-used information. If xcrun or simctl is unavailable, do not install all of Xcode only to force-delete a directory; return to the storage view and the application that owns the content.

Only when you have verified one runtime UUID, understand which simulator devices depend on it, and cannot complete the same operation in Components should you consider xcrun simctl runtime delete RUNTIME-UUID. RUNTIME-UUID is a placeholder, not a literal value. Avoid all, wildcards, and direct recursive deletion of runtime paths.

  1. Run xcrun simctl runtime list -v.
  2. Copy and recheck the complete UUID of one candidate.
  3. Close simulators and debug jobs using it.
  4. Target only the confirmed UUID; do not use a batch selector.

Verify that storage was actually reclaimed

A successful command or a disappearing list row proves that the removal workflow ran; it does not prove the expected number of gigabytes returned. Reopen Components, confirm the version is no longer installed, run the runtime inventory again, and compare filesystem free space with the original reading.

The System Data category can recalculate later, so use available filesystem space as the primary result and the category label as a secondary observation. If the runtime is still marked as deleting, wait instead of submitting duplicate deletion commands or killing services.

  1. Run xcrun simctl runtime list -v again.
  2. Run df -h / and compare Available with the baseline.
  3. Launch one retained simulator and verify that a current project still runs.
  4. Record the exact version removed and measured space change.

Restore a runtime and avoid a download-delete loop

If a project needs the removed version later, return to Components and use Add Platforms or the relevant Get control to download it again. Apple also documents xcodebuild download and import workflows, but the graphical component manager is safer for a normal single-Mac setup because it reduces Xcode-version and architecture mistakes.

Keep the current development runtime, the minimum supported test version, and any version needed to reproduce an active issue. Review the rest when a project ends instead of deleting recently used runtimes whenever storage becomes tight. On Apple silicon, do not request the larger universal runtime variant unless you actually need Intel or Rosetta compatibility.

Sources checked

Related Apple guides

Editorial note

This guide uses first-party documentation and a read-only-first workflow. Tool output and operating-system behavior can change; verify the current component name and preserve a backup before removing anything.