GitHub Actions Xcode Simulator Runtime Disk Space
When macOS runner images reduce simulator runtimes or leave little free space after Xcode setup, mobile teams need a repeatable storage policy instead of scattered cleanup snippets.
Why this keeps recurring
Xcode and simulator runtimes are large, and macOS CI images have fixed disk limits. That means teams can hit storage failures even when the app code did not change: a runner image update, a new Xcode version, or a simulator runtime policy change can shift the available space.
What to separate before deleting
- Safe rebuildable caches: DerivedData, ModuleCache, SwiftPM build folders, CocoaPods cache, npm or pnpm cache.
- Review-first state: simulator runtimes, DeviceSupport, Archives, screenshots, videos, and release artifacts.
- Do-not-touch without a plan: active signing assets, local databases, required simulator versions, and project source state.
Policy starter for macOS CI
- Print `df -h` and top folder sizes before cleanup.
- Delete workflow-local build output before deleting global toolchain folders.
- Clean Xcode caches only after the build/test step no longer needs them.
- Pin required simulator runtimes in the workflow documentation.
- Print disk usage after cleanup so future failures show what changed.
df -h
du -sh ~/Library/Developer/Xcode/DerivedData 2>/dev/null || true
du -sh ~/Library/Developer/CoreSimulator 2>/dev/null || true
du -sh ~/Library/Developer/Xcode/Archives 2>/dev/null || true
xcrun simctl list runtimes
xcrun simctl delete unavailable || true
Get a first policy draft from one runner scan
The $99 Team Storage Pilot turns one representative macOS runner or developer Mac scan into safe/review/do-not-touch rules for your Xcode, simulator, cache, and artifact cleanup policy.