Broomkit → Mac cleaner for developers

Mac cleaner for developers

A developer Mac does not fill up the way a normal Mac does. The space is in build products, dependency trees and a Docker image that grows but never shrinks — and almost none of it shows up in Apple's Storage settings.

On a working developer Mac, five directories hold most of the reclaimable space: Xcode's DerivedData, nested node_modules folders, package-manager caches (SwiftPM, Homebrew, npm, Cargo, Gradle, Maven, Go), iOS simulator runtimes, and Docker's disk image. The first three are safe to remove and rebuild themselves. The last two must be reclaimed by their own tooling — a cleaner that deletes those files directly will break your install.

Why Storage settings is useless here

Apple's Storage pane files everything it cannot categorise under System Data. Build caches, dependency trees and container images all land there, in one opaque grey bar with no way to look inside. You can see that 80 GB is gone; you cannot see that 38 GB of it is DerivedData from projects you shipped last year. For the general case, see what System Data actually contains.

The five places the space goes

1. Xcode DerivedData — usually the biggest single win

~/Library/Developer/Xcode/DerivedData holds build products, indexes and module caches. Xcode regenerates all of it. Deleting it costs one slower build and routinely returns tens of gigabytes, because Xcode keeps a folder per project indefinitely — including for projects whose source you deleted years ago.

Safe to remove. Broomkit lists it under Xcode Junk and moves it to the Trash.

2. Nested node_modules

Everything inside node_modules is reinstallable from package.json. The problem is not any single folder — it is that they nest, and Finder will not total them across a home directory. A Mac with a few years of side projects can be carrying dozens, and no macOS tool will add them up for you.

Broomkit walks the home folder rather than a fixed list of known locations, which is why it finds the ones in ~/Desktop/old-thing/ that a path-based cleaner misses.

Safe to remove for projects you are not actively building.

3. Package-manager caches

Downloaded artefacts that every package manager keeps forever by default:

Safe to remove. Every one of these re-downloads on the next build.

4. iOS simulators — advisory only

Simulator runtimes and device data live in ~/Library/Developer/CoreSimulator and can reach tens of gigabytes. Broomkit will not delete these. Removing device directories by hand leaves CoreSimulator's index pointing at devices that no longer exist, and Xcode then behaves unpredictably. Instead it reports the size and gives you the command that does it properly:

xcrun simctl delete unavailable

5. Docker's disk image — advisory only

Docker Desktop keeps everything in one file: ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw. It grows as you build and pull, and it does not shrink when you prune — pruning frees space inside the image, not back to macOS. Deleting the file destroys every image, volume and container you have.

Broomkit reports its size and gives you Docker's own reclaim command:

docker run --privileged --pid=host docker/desktop-reclaim-space

See these five numbers on your own Mac. Broomkit is free for 3 days, with every feature unlocked — then a one-time licence, never a subscription.

Download for Mac

The rule that matters: regenerable vs reclaimable

The distinction the five categories above turn on is the one most cleaners ignore. Regenerable files can be deleted because the tool that made them will make them again — DerivedData, node_modules, package caches. Reclaimable-by-tooling files cannot: the bytes are inside a database or an image whose owner has to compact it. Simulators and Docker are in this group.

A cleaner that treats the second group like the first will happily free 40 GB and leave you reinstalling Docker. That is why Broomkit shows a command for those two instead of a checkbox — detection is not the same as permission to delete.

What Broomkit will not touch

Inferred categories start unchecked. Removals go to the Trash rather than being unlinked, so a mistake is recoverable until you empty it. There is no privileged helper and no daemon.

Is it safe to delete Xcode DerivedData?

Yes. It holds build products, indexes and module caches that Xcode regenerates. The cost is one slower build. It is usually the largest single win on a developer Mac.

Can I delete node_modules folders to free up space on a Mac?

Yes, for projects you are not actively working on — everything in them is reinstallable from package.json. The difficulty is finding them all, because they nest and Finder will not total them.

Why does Docker use so much disk space on a Mac?

Everything lives in one disk image, Docker.raw, which grows as you build and pull and does not shrink when you prune. The space is freed inside the image, not returned to macOS. Reclaiming it needs Docker's own tooling.

Will a Mac cleaner delete my source code or git history?

It must not. Broomkit never proposes .git directories, source files, or anything it cannot identify as regenerable. Inferred categories start unchecked and every path is shown before anything moves.