Let's start with the honest answer: yes, you can do iOS development on a 256GB MacBook. Thousands of developers do it every day. But you can't just install Xcode and forget about storage management the way someone with a 1TB drive can. You need a plan.
This guide provides that plan. We'll do the storage math, establish a monthly cleanup routine, identify what you can offload to an external drive, and show you how to keep your 256GB machine healthy for serious iOS development.
The Storage Math: Where Your 256GB Actually Goes
First, let's debunk a common misconception: your 256GB drive doesn't actually give you 256GB of usable space. After formatting and macOS overhead, you have roughly 228-235GB of usable storage. Then macOS needs its share:
| Component | Description | Size |
|---|---|---|
| macOS System | The operating system itself | 12-15 GB |
| macOS System Data | Caches, logs, swap, Spotlight index | 8-15 GB |
| Xcode Application | The Xcode app bundle | 12-15 GB |
| iOS Simulator Runtimes | 1 runtime (latest iOS) | 5-7 GB |
| Simulator Devices | 2-3 active simulator devices | 3-6 GB |
| DerivedData | Build cache for 2-3 active projects | 5-15 GB |
| Device Support | Debug symbols for 1-2 iOS versions | 4-8 GB |
| SwiftUI Previews Cache | Grows over time, unchecked | 5-20 GB |
| Command Line Tools | Git, compilers, headers | 2-4 GB |
| Homebrew + Packages | Common developer tools | 2-5 GB |
| Your Projects | Source code, assets, Git repos | 5-20 GB |
| Personal Files | Documents, downloads, music, photos | 10-30 GB |
| Other Apps | Browser, Slack, Figma, etc. | 5-10 GB |
| Conservative Total | 78-170 GB | |
| Remaining (of ~230GB usable) | 60-152 GB | |
The range is wide because it depends entirely on how many projects, simulators, and personal files you have. The critical insight is this: without active management, Xcode-related data alone (DerivedData + simulators + device support + Previews cache + archives) can consume 40-80GB. On a 256GB drive, that's 17-35% of your total storage dedicated to caches and build artifacts.
The key to survival: keep that Xcode overhead at the lower end of the range through regular maintenance.
The Ground Rules: What to Keep, What to Skip
Install Only What You Need
When you install Xcode, it asks about additional components. On a 256GB machine, be selective:
- iOS simulator runtime: Install only the latest version. You don't need iOS 17, 16, and 15 — just the current one. Each additional runtime is 5-7GB.
- watchOS simulator: Skip it unless you're actively developing a watchOS app. It adds 3-5GB in runtime plus additional device data.
- tvOS simulator: Same advice. Skip unless needed.
- visionOS simulator: The visionOS runtime is 7-10GB on its own. Unless you're building visionOS apps, don't install it.
- macOS Catalyst/Mac support: If you're only building iPhone apps, you don't need additional macOS SDK components beyond what comes with Xcode.
A minimal Xcode setup (app + latest iOS runtime + 2-3 simulator devices) takes about 22-28GB. A maximal setup (all platforms, multiple runtime versions) can exceed 70GB.
Limit Simulator Devices
Xcode creates default simulator devices for every device type when you install a new runtime. You might end up with simulators for iPhone SE, iPhone 15, iPhone 15 Plus, iPhone 15 Pro, iPhone 15 Pro Max, iPhone 16, iPhone 16 Plus, iPhone 16 Pro, iPhone 16 Pro Max, and multiple iPads — that's 15+ devices you probably don't need.
Keep 2-3 devices that match your target devices and delete the rest:
# See all your simulator devices
xcrun simctl list devices
# Delete a specific device
xcrun simctl delete <DEVICE-UUID>
# Or delete all simulators for unavailable runtimes
xcrun simctl delete unavailable
Pro tip: You really only need one iPhone simulator and one iPad simulator (if you support iPad). Maybe add an iPhone SE for small-screen testing.
The Monthly Cleanup Routine
Set a calendar reminder for the first Monday of each month. Here's what to do:
Week 1 of Every Month: The Cleanup Checklist
Step 1: Clean DerivedData for inactive projects (5 minutes)
# Check total DerivedData size
du -sh ~/Library/Developer/Xcode/DerivedData/
# List projects sorted by last modified date
ls -lt ~/Library/Developer/Xcode/DerivedData/
# Delete DerivedData for projects you haven't touched in 2+ weeks
# (Replace with actual folder names from the ls output)
rm -rf ~/Library/Developer/Xcode/DerivedData/OldProject-*
rm -rf ~/Library/Developer/Xcode/DerivedData/ClientProject-*
Alternatively, delete everything. It only costs you a rebuild on next open:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
Step 2: Clean SwiftUI Previews cache (1 minute)
# Check size
du -sh ~/Library/Developer/Xcode/UserData/Previews/
# Clean all previews
xcrun simctl --set previews delete all
Step 3: Remove old Device Support files (2 minutes)
# Check what's there
ls ~/Library/Developer/Xcode/iOS\ DeviceSupport/
# Remove support for iOS versions you don't test against
# Keep only the version(s) running on your physical test devices
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/17.*
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/16.*
Step 4: Clean old archives (2 minutes)
# Check size
du -sh ~/Library/Developer/Xcode/Archives/
# Delete archives older than 3 months
# Keep only the latest 1-2 per app for crash symbolication
rm -rf ~/Library/Developer/Xcode/Archives/2025*
Step 5: Clean package manager caches (1 minute)
# Swift Package Manager
rm -rf ~/Library/Caches/org.swift.swiftpm
# CocoaPods (if used)
pod cache clean --all 2>/dev/null
# npm/yarn (if doing any Node.js work)
npm cache clean --force 2>/dev/null
Step 6: Verify free space
df -h /
This entire routine takes about 10 minutes and typically recovers 10-40GB. That's 10 minutes a month to keep your machine healthy.
The External SSD Strategy
For 256GB MacBook users, an external SSD isn't optional — it's a strategic tool. Here's how to use it effectively.
What to Put on an External SSD
- Xcode Archives: Old build archives are rarely needed but valuable for crash symbolication. Move them to an external drive. You only need them when symbolizing crash reports from specific app versions.
- DerivedData for inactive projects: If you have 5+ projects but only actively work on 1-2 at a time, relocate DerivedData to an external SSD. Active project builds will be slightly slower (Thunderbolt SSDs mitigate this), but you save 10-20GB of internal storage.
- Device Support files: Debug symbols for older iOS versions you still need to support but don't test daily.
- Git repositories for inactive projects: Clone them to the external drive. You can always clone again from remote if needed.
- Design assets: Figma exports, Sketch files, and raw image assets that don't need to be on your internal drive.
What to Keep on Your Internal SSD
- macOS and Xcode: These must be on the internal drive for performance.
- Active project source code: Your current working repositories.
- Current simulator runtime: Simulators need fast storage for reasonable performance.
- DerivedData for active projects: Build performance depends on fast SSD access.
How to Relocate with Symlinks
The symlink approach lets you move data to an external drive while Xcode continues to look for it in its original location:
# Move Archives to external SSD
mv ~/Library/Developer/Xcode/Archives /Volumes/ExternalSSD/XcodeData/Archives
ln -s /Volumes/ExternalSSD/XcodeData/Archives ~/Library/Developer/Xcode/Archives
# Move old Device Support to external SSD
mkdir -p /Volumes/ExternalSSD/XcodeData/DeviceSupport
mv ~/Library/Developer/Xcode/iOS\ DeviceSupport/17.* /Volumes/ExternalSSD/XcodeData/DeviceSupport/
# (Keep current version on internal drive)
Warning: If you disconnect the external SSD while Xcode is running, it may throw errors trying to access the symlinked paths. Always eject properly.
Budget SSD Recommendations for Developers
You don't need a massive or expensive SSD for Xcode data offloading. Here's what works:
- 500GB USB-C SSD ($40-60): Plenty for Archives, old DerivedData, and Device Support. Samsung T7, WD My Passport SSD, and SanDisk Extreme are all solid. USB 3.2 Gen 2 speeds (up to 1050 MB/s) are fine for archive storage.
- 1TB Thunderbolt SSD ($80-130): If you want to relocate DerivedData for active projects, faster is better. Thunderbolt 3/4 SSDs approach internal SSD speeds. The Samsung T9, OWC Envoy Pro FX, or a Thunderbolt enclosure with an NVMe drive work well.
- 2TB+ ($120-200): Overkill for Xcode data alone, but useful if you also store personal media, backups, or project assets.
For most developers, a 500GB USB-C SSD in the $40-60 range is the sweet spot. It costs less than the upgrade from 256GB to 512GB on a new MacBook, and you can use it with any machine.
Which Xcode Components to Skip on 256GB
Beyond simulator runtimes, there are other Xcode components and workflows that consume disproportionate space. On a tight drive, consider these trade-offs:
Skip: Documentation Downloads
Xcode can download offline documentation sets. Don't. Use the online documentation at developer.apple.com instead. Offline docs can add 5-10GB.
Skip: Unnecessary Xcode Betas
It's tempting to install Xcode beta alongside the release version. On a 256GB machine, having two Xcode installations (12-15GB each) plus their respective simulator runtimes is unsustainable. Use the beta only when absolutely necessary, and delete it when you're done testing.
Skip: Multiple Toolchains
Swift development snapshots and custom toolchains are 700MB-1.5GB each. Unless you're contributing to the Swift compiler or testing nightly builds, skip them.
Consider: Use Physical Devices Instead of Simulators
If you have an iPhone for testing, you can reduce your simulator footprint significantly. A physical device requires Device Support files (2-5GB) but eliminates the need for multiple simulator devices and their data. For quick layout testing, use Previews. For full app testing, use a physical device. Keep one simulator for automated testing.
The Nuclear Option: When You Need Space RIGHT NOW
If you're at 2GB free and need to ship code, here's the emergency playbook in order of safety and impact:
- Empty Trash: Sounds obvious, but check.
Cmd + Shift + Deletein Finder. - Delete all DerivedData:
rm -rf ~/Library/Developer/Xcode/DerivedData/*— safe, recoverable by rebuilding. - Clean Previews cache:
xcrun simctl --set previews delete all - Delete unavailable simulators:
xcrun simctl delete unavailable - Delete old Device Support: Remove all versions except the one matching your test device.
- Clear SPM cache:
rm -rf ~/Library/Caches/org.swift.swiftpm - Clear browser cache: Safari and Chrome caches can be 2-5GB each.
- Move large files to iCloud: Right-click any large file in Finder and "Optimize Mac Storage" in iCloud settings.
Steps 1-6 alone typically free 20-50GB on a developer machine. Enough to get through the day, after which you should set up the monthly routine described above.
How DiskPort Makes 256GB Workable
Everything in this guide can be done manually via Terminal commands and Finder. But on a 256GB machine, storage management isn't a one-time task — it's an ongoing discipline. This is where a purpose-built tool pays for itself:
- Continuous monitoring: DiskPort's menu bar widget shows your developer storage usage at a glance. You see the number creeping up before it becomes a crisis.
- One-click cleanup: Instead of remembering five Terminal commands each month, DiskPort scans all Xcode components and lets you clean them with a single click. It knows what's safe to delete.
- Smart auto-clean: Set rules like "delete DerivedData older than 14 days" and "clean Previews cache when it exceeds 10GB." DiskPort handles it in the background — no calendar reminders needed.
- External SSD relocation: DiskPort handles the symlink dance for you. Select a component, choose a destination, and DiskPort moves the data and creates the symlink. No Terminal required, and it warns you if the external drive is disconnected.
- Per-project awareness: See which project is consuming the most DerivedData. If you wrap up a client project, clean just that project's artifacts without touching active work.
A 256GB MacBook is not a limitation — it's a constraint that forces good habits. With the right routine and the right tool, you can do professional iOS development without constantly fighting for free space.