MACOS STORAGE FIELD GUIDE

Why Docker and Xcode make System Data grow.

The label is broad. The cleanup decision should not be. Here is a practical map of what developer tools keep on disk, what can usually be rebuilt, and what deserves an explicit boundary.

Storage Clearer overview separating low-risk cleanup opportunities from protected workspace data
A useful audit explains the storage object and its risk instead of treating “System Data” as one disposable category.

“System Data” is a report, not a cleanup plan.

Developer Macs accumulate data in places that Finder cannot summarize meaningfully: Docker’s virtualized storage, Simulator devices and runtimes, package-manager caches, build outputs, logs, and application support folders. macOS may group much of that footprint under System Data, but the label does not tell you whether an item is disposable, reproducible, or valuable.

A safer question is: what created these bytes, who still references them, and what happens if they disappear?

DOCKER

Cache and images are not the same as volumes.

Lower risk

Build cache

BuildKit layers speed up future builds. Unowned cache can usually be regenerated from Dockerfiles and source inputs.

Lower risk

Unused images

An image with no container reference can normally be pulled or rebuilt again, although doing so costs time and bandwidth.

Lower risk

Stopped containers

A stopped container may have a disposable writable layer, but its state should still be shown before removal.

High risk

Volumes

Volumes can contain databases and application state even when no container currently references them. “Unused” is not the same as “unimportant.”

Boundary: Storage Clearer keeps Docker volumes outside its reviewed packages. Reclaiming more bytes is not worth guessing about persistent data.

XCODE SIMULATOR

Devices depend on runtimes.

A Simulator device is created against an installed runtime. When that runtime is removed, the remaining device can become unavailable. Those unavailable devices are useful cleanup candidates because the dependency required to boot them is already missing.

Installed runtimes are different: they may be large, but deleting one changes which OS versions you can test. That is a product decision, not background housekeeping. A cleanup interface should distinguish an unavailable device from an installed runtime and show the exact target immediately before execution.

CACHES AND PROJECTS

Rebuildable does not mean consequence-free.

Package and tool caches can usually be downloaded or rebuilt. Generated folders such as dependency trees and build outputs may also be reproducible, but they live close to source work and can be expensive to restore. A trustworthy default keeps source projects out of automatic plans and makes broader workspace cleanup a manual review.

  • Good default candidates: unowned Docker build cache, unreferenced images, stopped containers, known developer caches, and unavailable Simulator devices.
  • Manual review: generated project folders, browser models/site data, AI application caches, and installed Simulator runtimes.
  • Always protected: source projects, Docker volumes, personal data, browser profiles, restore points, and task/session history.

A SAFER EXECUTION MODEL

Audit, approve, revalidate, record.

  1. 01

    Audit

    Collect facts without changing the machine.

  2. 02

    Approve

    Show the refreshed scope and require its exact approval phrase.

  3. 03

    Revalidate

    Check changing Docker and Simulator targets again immediately before execution.

  4. 04

    Record

    Write every cleanup command to a local timestamped log.

Storage Clearer exact approval dialog after refreshing the cleanup plan
The final phrase is tied to the refreshed package, not a generic confirmation.

OPEN-SOURCE PREVIEW

Inspect the plan before you trust the cleanup.

Storage Clearer is an Apple silicon preview for macOS 13 or later. The current build is unsigned, so first launch requires Control-click → Open.