DevCleaner
Menu
Skip to content
Browse guides

Not Enough Space to Update macOS? What Developers Can Safely Clear

A macOS update needs more free space than its download, and only while it installs. On a developer Mac the missing gigabytes are usually in Xcode, Docker, node_modules and AI tool caches, and most of that can be rebuilt.

On this page

Why an update needs more than its download

The size shown in Software Update is what macOS downloads. It is not the amount of free space the installation needs. Apple does not publish one figure that covers every update. Its storage article describes installing a macOS update as a task that needs extra space only while it is underway. That is why an update can fail on a Mac that seems to have room for the download.

A few other things from Apple’s documentation help explain the gap:

  • Software Update can use less storage to download and install updates than other methods. A full installer downloaded with Terminal or from the App Store is a separate app in your Applications folder, and it takes up space of its own.
  • Files in the Trash keep using space until you empty it.
  • Time Machine saves a local snapshot before it installs a macOS update. Apple says local snapshots do not use the space needed for installing new software, so you do not need to delete them for the update.

If the error message says how much space is needed, use that as your target. Apple’s installation troubleshooting article gives one instruction for this case: free up storage space.

See what is using the space

Open the Apple menu, choose System Settings, click General, then click Storage. On older macOS versions, the same view is under About This Mac, then Storage. Some categories have a More Info button with their own options.

On a developer Mac, the biggest number is often System Data. That is the category for Apple and third-party files that do not fit anywhere more specific, so build caches, simulator data and tool caches usually end up there. Why Is System Data So Large on Mac? explains why the number rarely matches what Finder shows.

To see the developer folders directly, measure them in Terminal. These commands only read sizes. They delete nothing.

du -sh ~/Library/Developer/Xcode/DerivedData
du -sh ~/Library/Developer/Xcode/*DeviceSupport
du -sh ~/Library/Developer/CoreSimulator
docker system df

docker system df only works while Docker Desktop, OrbStack or Colima is running. To find large node_modules folders, point find at the folder that holds your projects. ~/Projects below is an example:

find ~/Projects -name node_modules -type d -prune -exec du -sh {} + 2>/dev/null | sort -h | tail -20

AI coding tools keep caches, logs and sometimes downloaded models in several places. The AI coding tools disk space guide lists where each one stores data.

Free space by hand, safest first

Start with items that are rebuilt automatically or downloaded again on demand. Close the related app before you delete its caches.

  1. Empty the Trash. Nothing you moved there frees space until you do.
  2. Xcode DerivedData. Quit Xcode, then delete the folder. It holds build products, indexes and logs, not your source. The next build of each project is a full rebuild. Details are in the DerivedData guide.
    rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Unavailable simulators. Simulators whose runtime is no longer installed cannot boot again. Let simctl remove them instead of deleting folders under CoreSimulator yourself. See how to remove old iOS simulators.
    xcrun simctl delete unavailable
  4. Old Device Support folders. Each folder holds debug symbols for one OS version of a device you connected. Remove versions you no longer debug, one folder at a time. If you need one again, Xcode downloads the symbols when you connect a device running that version and run your app from Xcode.
  5. Docker build cache and dangling images. With Docker running, these two commands remove data Docker can rebuild. Leave volumes alone unless you know what is in them. If the Docker disk image stays large afterwards, read Docker.raw still huge after prune.
    docker builder prune
    docker image prune
  6. node_modules in projects you are not working on. They come back with one install from the lockfile. Keep local patches and anything you cannot download again. Can I delete node_modules? covers the exceptions. Package manager caches for npm, Yarn and pnpm can usually go too.
  7. AI tool caches. Clear caches and logs, not conversations, settings or sign-in data. Each tool keeps those in a different place: see the guides for Claude, Cursor and Codex. Local models are often the largest item, and deleting one means downloading it again.

Apple’s own list still applies as well: old files in Downloads, iPhone or iPad backups you no longer need, and apps you do not use. If you can keep large files on an external drive, moving them there frees the space without deleting anything.

If you are still short

  • Use Software Update. Apple says it can use less storage than other installation methods. If an old full installer app is sitting in Applications and you do not need it, you can delete it like any other app.
  • Install from safe mode. Safe mode clears some system caches, which macOS creates again later. Apple suggests it for exactly this case, a task that needs extra space only while it runs. On a Mac with Apple silicon, shut down, then press and hold the power button until you see “Loading startup options”. Select your startup disk, hold Shift, and click Continue in Safe Mode. On an Intel Mac, hold Shift as the Mac starts up and release it at the login window. Install the update, then restart normally to leave safe mode.

Avoid deleting folders you do not recognize under ~/Library or in system locations. If you are not sure something will come back on its own, leave it.

The faster option: DevCleaner

DevCleaner is a Mac app that scans the developer folders above in one pass and shows each size before anything is deleted. It lists DerivedData by project and shared cache, Device Support by OS version, unavailable simulators, Docker build cache, images, containers and volumes, package manager caches, node_modules and other build folders in your projects, and caches from AI tools such as Claude, Cursor and Codex.

Every row has a risk level. Safe rows, such as the DerivedData caches, unavailable simulators and the Docker build cache, are selected by default. Riskier rows, such as unused Docker images and volumes, are not. Device Support keeps the two newest versions for each platform by default. Simulators are removed through simctl, Docker data through Docker’s own commands, and credential folders are never deleted. x

In the current release, cleanup deletes files permanently by default. Moving them to the Trash is optional: turn on Move to Trash instead of deleting permanently in Settings, General, Cleaning. The first time you clean manually, DevCleaner asks which you prefer. If you use Trash mode before an update, empty the Trash afterwards, because files in the Trash still use space.

After a clean, DevCleaner notes that free space can take a moment to show up because of the Trash, Time Machine local snapshots and purgeable space. Check Storage again, then retry the update.

FAQ

Why does a macOS update need more space than the download size?
The download is only part of it. Apple describes installing a macOS update as a task that needs extra storage only while it is underway, and it does not publish one figure for every update. If the error message names an amount, free at least that much.
Should I delete Time Machine local snapshots to make room for the update?
No. Apple says local snapshots do not use the space needed for installing new software, and Time Machine deletes them as space is needed. Time Machine also saves a snapshot before it installs a macOS update.
Is it safe to delete Xcode DerivedData before updating?
Yes, with Xcode closed. DerivedData holds build products, indexes and logs that Xcode recreates. The cost is a full rebuild and re-indexing the next time you open each project.
Does DevCleaner move cleaned files to the Trash?
Not by default. In the current release, cleanup deletes files permanently unless you turn on Move to Trash instead of deleting permanently in Settings, General, Cleaning. If you turn it on, empty the Trash before you retry the update.

References and scope

Reviewed on October 19, 2026 against the current DevCleaner release and the Apple support articles below. Settings names and menu paths change between macOS versions. Sizes depend on your tools and projects, and nothing here promises a specific amount of recovered space.

See the sizes before you delete

DevCleaner scans Xcode, Docker, package managers, project folders and AI tool caches, and shows every size and risk level before it removes anything.

Download DevCleaner ↓
Developer ID signed · notarized by Apple