Why Is My Disk Full? A Developer’s Guide to Development Caches
You’re building fast with AI tools, shipping projects in hours instead of weeks. Then one day your laptop hits you with “Storage Almost Full” and you have no idea where the space went. Sound familiar?
If you use tools like Cursor, Bolt, v0, or Lovable to build software, you’re creating projects at a pace that would have been unimaginable a few years ago. But every project you scaffold leaves behind hidden files that quietly eat your disk space. After a few dozen experiments, you can lose 10, 20, even 50 GB without realising it.
This guide explains what those files are, why they exist, and how to safely reclaim your disk space — even if you’ve never opened a terminal before.
What’s Actually Taking Up Your Disk Space
Most of the space isn’t your code. It’s files that your development tools downloaded, generated, or cached behind the scenes. Here are the main culprits.
node_modules — The Gigabyte Multiplier
If you’ve built anything with JavaScript or TypeScript — a React app, a Next.js site, a Vite project — your project has a folder called node_modules. This folder contains every library your project depends on, plus every library those libraries depend on.
A single React project can have a node_modules folder of 300–500 MB. That might not sound like much, but multiply it by every project you’ve ever scaffolded — every experiment, every tutorial, every half-finished idea — and it adds up fast. Twenty projects means 6–10 GB, just in dependency folders.
The good news: node_modules can be safely deleted from any project. Running npm install (or yarn or pnpm install) will regenerate it from your package.json file whenever you need it.
Build Artifacts and Compiled Code
When you run a build command or start a development server, your tools generate output files. These go into folders like dist/, build/, .next/, out/, or __pycache__/.
These are temporary outputs — compiled versions of your source code, optimised images, bundled JavaScript. They’re regenerated every time you build, so old ones are just wasting space. A Next.js .next/ cache folder alone can be 500 MB–1 GB.
Tool-Specific Caches
Beyond individual project folders, your development tools maintain global caches — shared storage that speeds up package installs across all your projects. These live in hidden directories and grow silently over time.
- npm / yarn / pnpm cache — downloaded packages stored for reuse (5–10 GB is common)
- pip cache — Python packages (1–3 GB)
- Cargo cache — Rust crates and compiled dependencies
- Docker images — container images pile up quickly (10–20 GB)
- Xcode DerivedData — build caches for iOS/macOS development (often 5–15 GB)
- IDE caches — VS Code extensions, IntelliJ indices, editor state
| Cache Type | Typical Size | Safe to Delete? |
|---|---|---|
| node_modules (per project) | 300–500 MB | Yes — regenerated by npm install |
| npm / yarn global cache | 5–10 GB | Yes — redownloaded as needed |
| Build output (dist, .next, build) | 100 MB–1 GB each | Yes — rebuilt on next build |
| Docker images | 10–20 GB | Yes — repulled when needed |
| Xcode DerivedData | 5–15 GB | Yes — rebuilt on next compile |
| pip cache | 1–3 GB | Yes — redownloaded on install |
The Compounding Problem
The issue isn’t any single project — it’s the accumulation. When you use AI coding tools, you iterate fast. You scaffold a React app to test an idea, spin up a Next.js project for a landing page, try Svelte because someone recommended it. Each one is a quick experiment that takes minutes to create and months to forget about.
Meanwhile, global caches only grow. Your npm cache doesn’t shrink when you delete a project. Docker images from tutorials you followed six months ago are still sitting on your drive. Your disk fills up gradually, then all at once — usually right when you need to install something important.
This is the “catastrophic event” pattern: everything works fine until the day you try to run npm install and get ENOSPC: no space left on device. Or your IDE starts crashing. Or macOS refuses to update.
Finding and Cleaning Caches Manually
You can clean up development caches by hand, but it requires using the terminal and knowing what to look for.
Using Terminal Commands
To find all node_modules folders on your machine:
find ~ -name "node_modules" -type d -prune
To see how much space they’re using:
find ~ -name "node_modules" -type d -prune -exec du -sh {} +
To delete a specific one:
rm -rf /path/to/project/node_modules
To clear the npm global cache:
npm cache clean --force
The Problems With Manual Cleanup
These commands work, but they have real downsides:
- You need to know what to look for. node_modules is one of dozens of cache types. What about .next, target/, __pycache__, .gradle, DerivedData, and the rest?
- No safety net.
rm -rfdoesn’t ask questions. Delete the wrong folder and you could lose work. - No visibility. You can’t easily see what’s safe to remove versus what might break something.
- Tedious repetition. You’ll need to do this again next month when the caches build back up.
How Reclaimr Solves This
Reclaimr is a desktop app built specifically for this problem. Instead of memorising terminal commands and hoping you don’t delete the wrong thing, you get a visual interface that finds, categorises, and safely removes development caches.
It works in three steps:
- Scan. Point Reclaimr at your project directories. It discovers caches from over 100 development tools — npm, Cargo, pip, Gradle, Docker, Xcode, IDE caches, and more — automatically.
- Review. Browse everything it found in a tree view, grouped by category or risk level. Each item shows its size, what it is, and whether it’s safe to delete. Risk badges — LOW, MEDIUM, HIGH — make it clear what needs caution.
- Clean. Select what to remove and reclaim the space. Risky items require explicit confirmation. You see exactly what was deleted and how much space you got back.
Reclaimr is built with Rust for fast parallel scanning, runs entirely on your machine with no cloud or accounts, and works on macOS, Linux, and Windows. It’s free during the beta.
Best Practices for Managing Development Caches
Whether you use Reclaimr or clean up manually, these habits will keep your disk from filling up again.
Regular Cleanup
- Clean up monthly, or whenever free disk space drops below 20%
- Delete
node_modulesfrom projects you’re not actively working on - Clear global caches periodically — they’ll redownload what they need
Organise Your Projects
- Keep experiments in a dedicated folder (e.g.,
~/experiments) so they’re easy to find and clean up - Archive or delete abandoned projects instead of letting them sit
- Use your OS storage manager to monitor what’s using space (macOS: Apple menu > About This Mac > Storage)
Tool-Specific Commands
If you prefer the terminal, these commands clean specific tool caches:
# npm — clear global package cache
npm cache clean --force
# Docker — remove unused images, containers, and build cache
docker system prune -a
# Python pip — clear downloaded package cache
pip cache purge
# Rust Cargo — remove build artifacts from a project
cargo clean
Reclaim Your Disk Space
Development caches accumulate silently. By the time you notice, they’ve taken gigabytes of your disk. You can hunt them down manually, or let Reclaimr find and remove them safely in a few clicks.
Download Reclaimr — free during the beta, available on macOS, Linux, and Windows.