На каждый день у меня лёгкий ноутбук — Swift, Storyboard, Slack, всё ок. Нажал Run или влили жирный PR с полной пересборкой — и снова знакомая картина: вентилятор на максимум, горячий тачпад, swift-frontend съедает CPU, автодополнение в слайд-шоу. Чистили Derived Data, перезапускали Xcode, ждали Indexing. Понял простую вещь: не обязательно грузить эту машину — xcodebuild, долгую индексацию и Archive можно отдать Mac, который всегда подключён к сети.
Сейчас схема: тонкий ноут локально + выделенный M4 Mac mini в облаке. Ноут — код и созвоны; Mac в стойке — компиляция, симулятор, подпись. Коллеги на Windows — см. Xcode с Windows. MacBook Pro? TCO покупка vs аренда; CI — свой macOS runner. Ниже — как я реально работаю, не слайды для закупки.
1) Xcode «тормозит», когда машина переварит слишком много
SourceKit по всему репо, Indexing бьёт по диску, линкер на Clean Build, симулятор жрёт RAM — всё сразу. Ультрабуки через пару минут сборки уходят в троттлинг. Гайд Apple по эффективности сжал 8 минут до 5 — но несколько Clean в день всё равно съедают время.
В командировке не хочу ноут, который Archive делает в отеле по Wi‑Fi. Перенёс сборку на M4 Mac mini в ЦОД — ноут снова ощущается как терминал.
2) Делим: пишем здесь, собираем там
- Локально: Git, Cursor/VS Code, макеты. Сборка по SSH — вентилятор молчит.
- Облачный M4 Mac mini: полный Xcode, фиксированный Derived Data,
xcodebuild archive. Важен выделенный хост — не общий Mac, куда коллега зальёт тест на 40 ГБ. - CI (опционально): self-hosted runner, push — кофе — PR зелёный или красный.
Регион выбираю по Git, не по домашнему интернету. Общие macOS-VM подводили с подписью — см. VM vs bare-metal Mac mini.
3) Три режима — начните с B
| Режим | Локально | Облако M4 | Кому |
|---|---|---|---|
| A Полный remote | SSH/VNC | GUI, sim, сборки | Не-Mac ноут |
| B Гибрид (мой) | правки, push | xcodebuild | дополнение локально, без шума |
| C Только CI | ежедневный Xcode | Runner 24/7 | много PR |
Один — B: SwiftUI днём, push вечером, Archive в TestFlight с облака. Cursor — Remote-SSH на облачный хост.
4) Нужен облачный Mac?
| Сигнал | Крутить ноут | Облако M4 |
|---|---|---|
| Clean >5 мин несколько раз в день | мало помогает | вынести сборку |
| Вентилятор мешает звонкам | костыль | компиляция в облаке |
| Новый Xcode, старый macOS | новый ноут | обновить образ |
| Sim UI 2+ ч/день | локальный Mac | VNC или разделение |
| Офлайн в самолёте | сборка локально | облако не заменит |
Сомневаетесь — замерьте Archive на боевом репо в облаке и на ноуте.
5) Порядок настройки
- Регион рядом с GitHub/GitLab и артефактами.
- Xcode по SSH, нужная версия; release notes.
export DERIVED_DATA_PATH=~/DerivedDataв~/.zshrc.git pull, Fastlane Match, VNC для доверия устройству.ssh build@cloud-mac 'cd ~/app && xcodebuild -scheme App -destination generic/platform=iOS build'
«Гигабит дома» не важен — важны стабильный SSH и загрузка IPA. Первый полный билд прогревает Derived Data.
6) Грабли
Два Derived Data — Xcode «сходит с ума». UI — Sim в облаке по VNC; тесты — девайс локально, IPA из облака. На M4 можно поднять SWIFT_EXEC_JOBS (смотреть RAM). Runner и VNC не мешать — ёмкость.
7) Аренда второй сборочной машины
Неделя перед релизом, месяц для CI. Тарифы, TCO. Удалённый рабочий стол: аренда cloud Mac.
8) Частые вопросы
Медленнее? Клики — да; сборки >10 мин часто быстрее на M4 в облаке. Гибрид удобнее.
Только Windows? Да — статья.
vs VPS? Подпись App Store → выделенный Apple Silicon.
Безопасность? Как Mac mini в углу офиса: SSH-ключи, без p12 в Git.
Первый Archive? За полдня, если опыт есть; справочный центр.
Старый Mac? Если не full build локально — живёт; облако для пиков компиляции.