<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Sheehy</title>
    <description>The latest articles on DEV Community by John Sheehy (@mactifosi).</description>
    <link>https://dev.to/mactifosi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202516%2F4cf4ec92-c522-4185-bf81-78d56b4212f4.jpg</url>
      <title>DEV Community: John Sheehy</title>
      <link>https://dev.to/mactifosi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mactifosi"/>
    <language>en</language>
    <item>
      <title>What fills up a developer's Mac, and what is safe to clear?</title>
      <dc:creator>John Sheehy</dc:creator>
      <pubDate>Fri, 23 Oct 2026 11:52:16 +0000</pubDate>
      <link>https://dev.to/mactifosi/what-fills-up-a-developers-mac-and-what-is-safe-to-clear-2d39</link>
      <guid>https://dev.to/mactifosi/what-fills-up-a-developers-mac-and-what-is-safe-to-clear-2d39</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xcode and the simulators
&lt;/h2&gt;

&lt;p&gt;Usually the largest single block of space on an Apple developer's Mac.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Clearing it costs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DerivedData&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Build output and indexes, one folder per project&lt;/td&gt;
&lt;td&gt;A full rebuild and re-index — &lt;a href="https://blog.refreshyourmac.com/clear-xcode-derived-data/" rel="noopener noreferrer"&gt;how to clear it&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;iOS Device Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Symbol files copied from each device you have plugged in&lt;/td&gt;
&lt;td&gt;A few minutes the next time that device connects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SwiftUI Previews&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulators created for Xcode's canvas&lt;/td&gt;
&lt;td&gt;Previews rebuild themselves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Simulator runtimes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One per iOS or watchOS version you have downloaded&lt;/td&gt;
&lt;td&gt;Several gigabytes to download again — &lt;a href="https://refreshyourmac.com/ios-simulator-runtimes/" rel="noopener noreferrer"&gt;removing old runtimes&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Simulators&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Each simulated device, with its apps and data&lt;/td&gt;
&lt;td&gt;The apps and data inside it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Archives&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every build you distributed&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Not regenerable&lt;/strong&gt; — they hold the symbols you need to read crash reports&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Archives are the one item here that is yours rather than a cache. Move old ones to another drive rather than deleting them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package managers
&lt;/h2&gt;

&lt;p&gt;Every package manager keeps a download cache, separate from the projects that use it. All of these are re-downloaded on the next install:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt; — &lt;code&gt;~/.npm/_cacache&lt;/code&gt;. &lt;code&gt;npm cache clean --force&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yarn and pnpm&lt;/strong&gt; — their own caches and stores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CocoaPods&lt;/strong&gt; — &lt;code&gt;~/Library/Caches/CocoaPods&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gradle&lt;/strong&gt; — &lt;code&gt;~/.gradle/caches&lt;/code&gt;, plus downloaded Gradle versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homebrew&lt;/strong&gt; — old bottles and downloads. &lt;a href="https://blog.refreshyourmac.com/clean-homebrew-cache/" rel="noopener noreferrer"&gt;How to clean the Homebrew cache&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Inside your projects
&lt;/h2&gt;

&lt;p&gt;Each project carries dependencies and build output of its own: &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;Pods&lt;/code&gt;, Flutter's &lt;code&gt;.dart_tool&lt;/code&gt;, &lt;code&gt;.next&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, Rust's &lt;code&gt;target&lt;/code&gt;, Swift's &lt;code&gt;.build&lt;/code&gt;. All rebuildable, but the project will not build until you reinstall — so clear the projects you are not working on this week. &lt;a href="https://blog.refreshyourmac.com/delete-node-modules-mac/" rel="noopener noreferrer"&gt;Deleting node_modules on a Mac&lt;/a&gt; covers finding them all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI coding tools
&lt;/h2&gt;

&lt;p&gt;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. &lt;a href="https://refreshyourmac.com/ai-tool-data-on-mac/" rel="noopener noreferrer"&gt;Where AI tools keep their data&lt;/a&gt; has the folders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things that are running, not stored
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  How RefreshYourMac handles this
&lt;/h2&gt;

&lt;p&gt;RefreshYourMac was built on a developer's Mac, and these are the places it looks hardest. It measures each of the above — see &lt;a href="https://refreshyourmac.com/mac-cleaner-for-developers/" rel="noopener noreferrer"&gt;RefreshYourMac for developers&lt;/a&gt; — as its own category among its 45, sized separately and rated for what clearing it costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safe to Remove&lt;/strong&gt; — caches that regenerate: DerivedData, iOS Device Support, SwiftUI Previews and the npm, Yarn, pnpm, CocoaPods, Gradle and Homebrew caches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review&lt;/strong&gt; — 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move to Backup&lt;/strong&gt; — 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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Its &lt;strong&gt;Running Now&lt;/strong&gt; list shows booted simulators and old log watchers, with what each is costing in CPU and memory, and stops the ones you choose.&lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://refreshyourmac.com/how-it-decides/" rel="noopener noreferrer"&gt;how it decides what is safe&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>xcode</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
