Free up disk space on a Mac for developers
A developer's Mac fills up with things nobody chose to keep: Xcode build data, simulators for old iOS versions, node_modules in projects you stopped touching, package caches, and git worktrees your coding agents left behind. macOS Storage settings file most of it under "Developer" or "System Data" and can't tell you what is safe to delete. Switchy's Disk card measures each of these, says which ones rebuild themselves, and clears them in one click after a confirm. Free for 7 days, then $4.99 once, on macOS 14 or later.
Free for 7 days, then $4.99 once. macOS 14 Sonoma or later.
Free space, one glance from the clock
The Disk card sits first in the Controls strip, next to Network and Dev, and shows how much space is free on your startup disk. Its dot is green with 50 GB or more free, amber under 50 GB and red under 20 GB. Switchy also sends a notification when free space drops under 20 GB, and once more under 10 GB.
Open the card and a bar splits the disk into Dev (everything Switchy measured below), Apps, Other and Free, with the size of each.
What is safe to clear
Only folders that rebuild themselves get a Clear button. Each row shows its size, and rows under 100 MB are hidden.
| Row | What it covers | How it comes back |
|---|---|---|
| Xcode build data | DerivedData, including a custom location set in Xcode's settings | Xcode rebuilds it the next time you build |
| Xcode device support | iOS, watchOS, tvOS and visionOS DeviceSupport folders | Xcode copies it again when you connect a device |
| Old simulators | Simulators for runtimes that are no longer installed, plus simulator caches | Nothing you still use is removed |
| Idle node_modules | node_modules next to a package.json, in projects untouched for 30 days | Run your package manager's install |
| Idle build output | .next, .turbo, Swift .build and Rust target folders in projects untouched for 30 days | The next build makes them again |
| Package caches | npm, pnpm, Yarn, Bun, Homebrew, pip, SwiftPM, CocoaPods and Gradle caches | Package managers download what they need again |
| Trash | Everything in the Trash | It doesn't. Emptying the Trash is for good |
Switchy looks for projects in ~/Projects, ~/Developer, ~/Code, ~/src, ~/dev, ~/Sites and ~/conductor, plus the folders your worktrees live in. Docker's disk image is listed with its size and a Reveal button, but no Clear: pruning it can destroy container data, so that's left to Docker.
Merged git worktrees
Coding agents like Claude Code, Codex and Conductor make a git worktree per task, and each one carries its own node_modules and build output. Switchy finds every worktree of the repos in your project folders, wherever it lives, including on other disks, and lists it as repo / branch with its size and one status:
- Merged: no uncommitted changes, its own commits are on the default branch (or its upstream branch was deleted after a squash merge), and nothing in it changed in the last 24 hours.
- Clean: no changes, but not merged yet. A brand-new worktree always counts as clean.
- Changes: it has uncommitted or untracked files.
- Missing: the folder is gone. Prune cleans up git's record of it.
Only merged worktrees get a Remove button. It runs git worktree remove without force, so git refuses if anything changed, and your branch is kept. To clear them all, open the "…" menu next to Worktrees and choose Remove All Merged. One confirm covers every merged worktree; they're removed one at a time, and each is checked again right before it goes.
Your biggest files
The last section lists the five largest single files over 1 GB in your home folder and project folders, each with a Reveal button that opens it in Finder. Switchy never deletes these. Desktop, Documents and Downloads are skipped at first so macOS doesn't ask for folder access out of nowhere; click "Also check Downloads, Desktop, and Documents" to include them.
How to clear space
- Open Switchy from the menu bar and click the Disk card in Controls.
- Wait for the sizes to fill in. The first scan takes a moment; after that the card opens with the last numbers and a "Scanned" time.
- Click Clear on a row under Safe to clear, or Remove on a merged worktree.
- Read the confirm. It names what will go and how much space comes back. Confirm, and the row is measured again.
To hide the card, turn off Show Disk card in Settings → Customize. The low-space warnings keep working.
Limits worth knowing
- Deleting is for good. Nothing goes to the Trash, which is why every Clear and Remove asks first.
- Sizes are measured on disk. APFS clones share space that can't be measured cheaply, so totals are close, not exact.
- The full scan runs when you open the card and the last one is over an hour old, or when you click refresh. It runs in the background, never while the panel is closed except once shortly after launch.
- Other disks are scanned only after you open the card or click refresh, so a macOS prompt for removable volumes only ever follows your own click.
- Switchy doesn't clean mail attachments, iOS backups, Photos or general app caches. It sticks to developer files it knows rebuild.
More from Switchy
Every switch your Mac hides, one click from the clock.