You open System Settings → General → Storage and there it is: a gray bar labelled "System Data" eating 180 GB of your 512 GB MacBook. Apple shows you nothing. No paths, no sizes, no hints. Just the bar.
On a developer Mac, that bar is almost always a stack of caches, build artifacts, and AI tool leftovers — none of which macOS knows how to categorise. Here's exactly what's usually inside, in rough order of size on a working iOS / web / AI-dev machine.
What's actually counted as "System Data"?
System Data is everything macOS can't fit into its named categories — Apps, Documents, Photos, Mail, Music, Messages, Podcasts, iCloud Drive, TV. If a file lives in ~/Library/, /System/, a hidden ~/.something/ folder, or a third-party app's cache directory, it usually lands in System Data.
That makes it the natural home for everything a developer machine accumulates: package manager caches, IDE indexes, simulator images, container layers, agent sessions, and model weights.
The big six categories on a developer Mac
1. Xcode (typically 15–30 GB)
~/Library/Developer/Xcode/DerivedData/— per-project build artifacts. Rebuilds on next compile.~/Library/Developer/Xcode/Archives/— every signed build you've ever made. Keep the ones you've shipped, delete the rest.~/Library/Developer/Xcode/iOS DeviceSupport/— symbol caches for every iOS version of every device you've ever plugged in. Old ones never get cleaned.~/Library/Developer/Xcode/UserData/IB Support/— Interface Builder snapshots.
Xcode does not clean any of this on uninstall, on upgrade, or ever. It accumulates indefinitely.
2. iOS Simulators (typically 10–25 GB)
~/Library/Developer/CoreSimulator/Devices/— every simulator device you've ever created. Old ones from deleted Xcode versions stay forever.~/Library/Developer/CoreSimulator/Caches/— per-runtime caches.~/Library/Developer/XCTestDevices/— UI test runner devices.- Unavailable runtimes — when you upgrade Xcode, the old iOS / iPadOS / visionOS runtime files often stay on disk even though Xcode can't use them.
xcrun simctl delete unavailable clears some of this. The rest needs manual review.
3. AI coding tools (typically 3–8 GB and growing fast)
This category didn't exist 24 months ago. Now it's one of the loudest.
~/.claude/— Claude Code's per-project sessions, plugins cache, file-history. The file-history bug caused a documented 300 GB explosion in one case.~/.codex/— Codex CLI sessions, rollouts, worktrees. Tens of GB are not unusual.~/.cursor/,~/Library/Application Support/Cursor/— Cursor's CachedData, WebStorage, GPUCache. Single.packfiles routinely exceed 1 GB.~/.cline/,~/.factory/,~/.gemini/— agent checkpoints and logs.
These tools write aggressively and clean almost nothing. None ship with a built-in disk audit.
4. Local LLM model weights (5–80+ GB)
~/.ollama/models/— every model you've ever pulled. Llama 3.1 70B alone is 40 GB.~/.cache/huggingface/hub/— Hugging Face's hub cache.~/.cache/huggingface/datasets/— datasets you pulled once for a notebook.~/.cache/huggingface/transformers/— older transformers cache.~/Library/Application Support/LM Studio/— LM Studio's model store.
These are expensive downloads. Don't blanket delete — inspect, archive, then decide.
5. JavaScript / TypeScript ecosystem (2–10 GB)
~/.npm/_cacache/— npm's content-addressable cache.~/Library/pnpm/store/or~/.pnpm-store/— pnpm's global store.~/.bun/install/cache/— bun's cache.~/Library/Caches/ms-playwright/— Playwright browser binaries (one set per project version).~/.cache/yarn/— yarn (classic and berry).
And of course every node_modules/ per project — usually counted under Documents, but the per-project ones outside your standard work folder hide in System Data.
6. Containers and the rest (5–30 GB)
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw— Docker Desktop's qcow2-style VM image. Often 20+ GB.~/.colima/,~/.orbstack/— alternative container runtimes.~/Library/Caches/JetBrains/— IntelliJ family caches.~/Library/Caches/CocoaPods/— Pods cache.~/Library/Caches/Homebrew/—brew cleanupclears this; most people never run it.
How to find this yourself, the slow way
If you want to audit by hand:
sudo du -sh ~/Library/Developer/Xcode/* 2>/dev/null
sudo du -sh ~/Library/Developer/CoreSimulator/* 2>/dev/null
du -sh ~/.claude ~/.codex ~/.cursor ~/.cline 2>/dev/null
du -sh ~/.ollama 2>/dev/null
du -sh ~/.cache/huggingface/* 2>/dev/null
du -sh ~/Library/Containers/com.docker.docker 2>/dev/null
It will take a while. Most paths need elevated permissions or specific knowledge to interpret. You'll find things, but you'll also miss things — the list above is the known set, not the long tail of project-specific caches.
How to find this the fast way
This is the gap CleanMyDev fills. It knows about 110+ developer-specific paths across 16 categories, sizes them in parallel, color-codes the safety risk, and shows you the receipts before anything moves to Trash. Default action is Move to Trash, not rm -rf — restorable from Finder until you empty.
Why this matters now
A 512 GB MacBook used to be plenty. Xcode + simulators were the only big offenders. Then came AI coding tools that write multi-GB session histories, local LLMs that come in 4–70 GB chunks, and dev workflows that pull more binaries per project than the previous decade put together.
Apple's storage panel was built for an era when "Photos" was the answer to "what's using my disk." It hasn't caught up.
Related reading
- Safely delete Xcode DerivedData on macOS (coming soon)
- Cleaning Claude Code disk usage (coming soon)
- Ollama model management without losing your downloads (coming soon)