Blog · Developers
What fills up a developer's Mac, and what is safe to clear?
Mostly build output, package caches and simulator data, all of which regenerates — Xcode DerivedData, simulator runtimes, node_modules, Homebrew and npm caches, and the leftovers of AI coding tools. The things to be careful with are Xcode archives and anything holding history rather than cache.
A developer’s Mac fills up differently from anyone else’s. Photos and downloads are rarely the problem; build systems are. Every tool you use keeps its own cache, every project keeps its own dependencies, and almost none of them ever clean up after themselves.
The good news is that nearly all of it regenerates. The useful question is not “what can I delete” but “what does deleting it cost me” — a slower next build, a re-download, or something that does not come back.
Xcode and the simulators
Usually the largest single block of space on an Apple developer’s Mac.
| What it is | Clearing it costs | |
|---|---|---|
| DerivedData | Build output and indexes, one folder per project | A full rebuild and re-index — how to clear it |
| iOS Device Support | Symbol files copied from each device you have plugged in | A few minutes the next time that device connects |
| SwiftUI Previews | Simulators created for Xcode’s canvas | Previews rebuild themselves |
| Simulator runtimes | One per iOS or watchOS version you have downloaded | Several gigabytes to download again — removing old runtimes |
| Simulators | Each simulated device, with its apps and data | The apps and data inside it |
| Archives | Every build you distributed | Not regenerable — they hold the symbols you need to read crash reports |
Archives are the one item here that is yours rather than a cache. Move old ones to another drive rather than deleting them.
Package managers
Every package manager keeps a download cache, separate from the projects that use it. All of these are re-downloaded on the next install:
- npm —
~/.npm/_cacache.npm cache clean --force. - Yarn and pnpm — their own caches and stores.
- CocoaPods —
~/Library/Caches/CocoaPods. - Gradle —
~/.gradle/caches, plus downloaded Gradle versions. - Homebrew — old bottles and downloads. How to clean the Homebrew cache.
Inside your projects
Each project carries dependencies and build output of its own: node_modules, Pods, Flutter’s
.dart_tool, .next, dist, Rust’s target, Swift’s .build. All rebuildable, but the project
will not build until you reinstall — so clear the projects you are not working on this week.
Deleting node_modules on a Mac covers
finding them all.
Android
The emulators’ disk images and the SDK’s extras — the NDK, system images and the emulator itself — are only needed to build Android apps on this Mac. Each can be reinstalled from Android Studio, at the cost of a large download.
AI coding tools
Coding agents and desktop AI apps leave build trees, runtimes, update downloads and session history behind. Most of it is cache. Session history is not: it is a record of your conversations, and deleting it cannot be undone. Where AI tools keep their data has the folders.
Things that are running, not stored
Not every developer problem is disk space. A simulator left booted, or a log watcher a tool started and forgot, keeps costing CPU and memory long after you have finished with it — which shows up as a hot Mac and a fan that will not stop, and as swap written to disk.
How RefreshYourMac handles this
RefreshYourMac was built on a developer’s Mac, and these are the places it looks hardest. It measures each of the above — see RefreshYourMac for developers — as its own category among its 45, sized separately and rated for what clearing it costs:
- Safe to Remove — caches that regenerate: DerivedData, iOS Device Support, SwiftUI Previews and the npm, Yarn, pnpm, CocoaPods, Gradle and Homebrew caches.
- Review — rebuildable but not free: simulator runtimes and simulators, Android emulators and SDK extras, and your projects’ build folders, each with a note on how to restore it.
- Move to Backup — Xcode archives and AI tool session history, which hold things that do not come back. There is no bulk clean here; you pick items one at a time, or move them to another drive.
Its Running Now list shows booted simulators and old log watchers, with what each is costing in CPU and memory, and stops the ones you choose.
Nothing is deleted without a confirmation, and a scheduled clean only ever takes Safe to Remove categories — skipping Xcode’s while Xcode is open. The reasoning behind each rating is on how it decides what is safe.