Безопасно удаляем DerivedData Xcode и кеши разработчика
AskClean Team · Updated 2026-07-18
DerivedData — это черновая папка Xcode для продуктов сборки и индексов, и она незаметно вырастает до десятков гигабайт. Удалять её безопасно: закройте Xcode, удалите содержимое ~/Library/Developer/Xcode/DerivedData — и Xcode пересоздаст всё при следующей сборке. В этом руководстве разобрано и это, и симуляторы, архивы и кеши пакетов.
Что такое DerivedData и почему она разрастается
DerivedData — это место, где Xcode хранит всё, что выводит из вашего исходного кода: промежуточные объекты сборки, скомпилированные продукты, кеши модулей, индексы символов для автодополнения и перехода к определению, а также журналы сборки. По умолчанию она живёт в ~/Library/Developer/Xcode/DerivedData — по одной подпапке на каждый проект или workspace, который вы когда-либо открывали.
Растёт она по структурной причине: Xcode создаёт папку DerivedData для каждого открытого проекта — включая разовые клоны, которые вы собрали один раз и больше не трогали, — и никогда ни одну из них не удаляет. Каждая папка держит отдельные продукты сборки для каждой конфигурации и назначения (Debug и Release, симулятор и устройство), так что один средний проект может занимать несколько гигабайт, а вся папка на рабочей машине разработчика обычно достигает 20–50 ГБ.
Всё её содержимое восстановимо по определению — именно это и значит «derived», производное. Удаление DerivedData никогда не трогает исходный код, настройки проекта и ничего, что под контролем версий. Единственная цена — время: следующая сборка каждого проекта будет полной чистой сборкой, а индексация ещё несколько минут поработает в фоне.
Удалите DerivedData
Сделать это можно тремя способами, и все они ведут к одному результату. Команда Clean Build Folder в Xcode (Product > Clean Build Folder, или Command-Shift-K) очищает продукты сборки только текущего открытого проекта — полезно, чтобы починить странную сборку, но на место на диске почти не влияет. Чтобы вернуть реальное место, удаляйте сами папки DerivedData.
Удаление по проектам — хирургический вариант: оставьте DerivedData для двух-трёх проектов, которые собираете ежедневно, и удалите папки всего остального. Удалить всё целиком — быстрый вариант, и он тоже нормальный: просто цену полной пересборки вы заплатите по всем проектам сразу.
- Сначала закройте Xcode. Удаление DerivedData при работающем Xcode может запутать его индексатор, а открытые Xcode файлы могут удалиться некорректно.
- Найдите папку: в Xcode откройте Settings > Locations и щёлкните маленькую стрелку рядом с путём DerivedData, чтобы показать её в Finder. Или в Finder нажмите Command-Shift-G и введите ~/Library/Developer/Xcode/DerivedData напрямую.
- Отсортируйте подпапки проектов по размеру, выделите те, от которых хотите избавиться (или Command-A для всех), и переместите их в Корзину. Сначала в Корзину — более безопасная привычка: передумав, вы мгновенно всё вернёте.
- Вариант из Терминала: rm -rf ~/Library/Developer/Xcode/DerivedData удаляет всё одним махом. Для очень больших папок это быстрее Finder, но перед использованием прочтите примечание ниже.
- Снова откройте Xcode и соберите проект. Первая сборка каждого проекта будет заметно дольше, а в панели активности какое-то время будет крутиться «Indexing» — и то и другое разовая цена.
Осторожнее с rm -rf: команда минует Корзину и удаляет безвозвратно, без отмены. Вводите путь в точности, никогда не запускайте её с sudo для этой задачи, а если в Терминале вам некомфортно — путь через Finder делает то же самое обратимо.
Очистите старые среды симулятора
Симуляторы — обычно второй по величине пожиратель места разработчика после DerivedData. Каждая среда iOS, watchOS или tvOS, которую вы когда-либо загружали, занимает 5–8 ГБ, а каждое симулируемое устройство держит собственную папку данных в ~/Library/Developer/CoreSimulator/Devices. Если вы пережили несколько обновлений Xcode, у вас наверняка лежат среды для версий iOS, под которые вы перестали собирать годы назад.
Самый быстрый выигрыш — встроенная команда очистки: выполните xcrun simctl delete unavailable в Терминале. Она удаляет каждое устройство-симулятор, чья среда больше не установлена, — сирот, оставшихся от старых версий Xcode, — и не трогает ничего, чем вы ещё можете пользоваться.
Для самих сред откройте в Xcode Settings > Platforms (в старых версиях Xcode — Components). Вы увидите каждую установленную среду симулятора с её размером; выберите старую и удалите. Держите только последнюю среду для каждой платформы, если не тестируете целенаправленно на старых версиях ОС.
Можно проредить и отдельные симулируемые устройства в Window > Devices and Simulators: перейдите на вкладку Simulators, щёлкните правой кнопкой любое устройство, которым не пользуетесь, — те шесть одинаковых моделей iPhone с данными от старых тестовых прогонов — и выберите Delete. Сохранённые данные и приложения устройства уйдут вместе с ним.
Архивы, файлы поддержки устройств и кеши
Архивы копятся в ~/Library/Developer/Xcode/Archives при каждом запуске Product > Archive для дистрибуции сборки. Каждый архив содержит полную сборку приложения плюс её отладочные символы dSYM — зачастую от 100 МБ до 1 ГБ за штуку. Прежде чем удалять, поймите компромисс: dSYM внутри — это то, что позволяет символизировать отчёты о сбоях именно этой сборки. Оставьте архивы версий, которые ещё живут в App Store или TestFlight (или убедитесь, что dSYM есть в App Store Connect), а остальные удалите — безопаснее всего через Organizer Xcode (Window > Organizer > Archives), где их можно просмотреть и удалить с контекстом.
iOS DeviceSupport в ~/Library/Developer/Xcode/iOS DeviceSupport хранит отладочные символы, которые Xcode копирует с каждого физического iPhone или iPad, когда-либо подключённого к Mac, — по папке на версию iOS, обычно по 2–5 ГБ. Папки версий iOS, на которых больше не работает ни одно ваше устройство, — чистый балласт: удаляйте их, и если вы когда-нибудь снова подключите устройство с той версией, Xcode просто заново скопирует символы (один раз увидите «Preparing debugger support»). Аналогичные папки существуют и для устройств watchOS и tvOS.
Свои кеши Xcode держит и в ~/Library/Caches/com.apple.dt.Xcode, а симуляторы — в ~/Library/Developer/CoreSimulator/Caches. И те и другие безопасно чистить, когда Xcode и приложение Simulator не запущены, и те и другие пересоздаются по мере надобности.
Кеши менеджеров пакетов (SwiftPM, CocoaPods, npm, Homebrew)
Менеджеры пакетов хранят каждую зависимость, которую когда-либо скачали, чтобы будущие установки были быстрыми. Это хорошая инженерия и плохая дисковая гигиена: кеши только растут, и на машине с несколькими годами проектов за плечами они незаметно набирают 10–20 ГБ. Все их безопасно чистить — в худшем случае следующая установка заново скачает пакеты.
Swift Package Manager кеширует скачанные пакеты в ~/Library/Caches/org.swift.swiftpm, а разрешённые checkout-копии каждого проекта живут ещё и внутри его папки DerivedData — так что очистка DerivedData уже очищает их. Общий кеш можно удалить из Finder или через rm -rf по этому пути.
CocoaPods держит скачанные pods в ~/Library/Caches/CocoaPods. Чистый способ опустошить его — встроенная команда pod cache clean --all. Папки Pods ваших проектов не затрагиваются; уходит только кеш загрузок.
Кеш npm живёт в ~/.npm и на машине с обилием JavaScript может достигать многих гигабайт. Выполните npm cache clean --force, чтобы опустошить его (npm настаивает на флаге, потому что кеш самовосстанавливающийся и обычно чистки не требует, — удалять его всё равно совершенно безопасно). Пользователи pnpm могут вместо этого выполнить pnpm store prune.
Homebrew копит старые загрузки и устаревшие версии пакетов. brew cleanup убирает устаревшие версии и залежавшиеся загрузки; brew cleanup --prune=all опустошает ещё и весь кеш загрузок. Сначала выполните brew cleanup -n, если хотите пробный прогон со списком того, что будет удалено.
Автоматизируйте это
Всё описанное выше работает, но мусор разработчика — это беговая дорожка: DerivedData возвращается за неделю обычной работы, кеши наполняются заново, а каждое обновление Xcode оставляет сиротой ещё одну среду. Если не хочется перезапускать шесть ручных процедур каждый месяц, именно эту часть стоит автоматизировать — инструментом, который показывает ход своих рассуждений, а не молча удаляет пачками.
AskClean относится к файлам разработчика как к полноправным категориям: одно сканирование раскладывает по пунктам Xcode DerivedData по проектам, старые среды симулятора (считанные через simctl, с сохранением последней для каждой платформы), файлы поддержки устройств и кеши менеджеров пакетов — npm, SwiftPM, cargo, uv и других. Он ловит и новых пожирателей места — кеши моделей Hugging Face и Ollama, — которые перечисляет по моделям и по умолчанию оставляет неотмеченными.
К каждому объекту прилагается пояснение — что это, можно ли пересоздать, чего будет стоить удаление, — и ничего не запускается, пока вы не подтвердите. Удалённое уходит в Корзину, так что ошибочный клик отменяется одним перетаскиванием, а исходный код, документы и фото не затрагиваются никогда. Это тот же чек-лист, что и в этом руководстве, — минус час работы в Терминале.
FAQ
Безопасно ли удалять DerivedData?
Да — это одно из самых безопасных крупных удалений на Mac. DerivedData содержит только файлы, которые Xcode генерирует из вашего исходного кода: продукты сборки, кеши модулей, индексы и журналы. Ваш код, файлы проекта и история git живут в другом месте и никогда не затрагиваются. Единственное последствие — следующая сборка каждого проекта будет полной, и индексация запустится заново.
Как часто чистить DerivedData?
Обязательного графика нет — чистите, когда папка выросла настолько, что это имеет значение; для большинства активных разработчиков это раз в месяц-два. Два момента оправдывают очистку всегда: когда место на диске нужно срочно и когда проект выдаёт необъяснимые ошибки сборки или устаревшее автодополнение — в таких случаях сброс DerivedData служит стандартным первым средством.
Станет ли Xcode медленнее после удаления DerivedData?
Временно — да. Первая сборка каждого проекта будет чистой и может занять в несколько раз больше времени, чем инкрементальная, а фоновой индексации нужно несколько минут, прежде чем автодополнение и поиск полностью вернутся. После этого первого цикла производительность будет ровно прежней: DerivedData хранит кеши, а не оптимизации, которые вы теряете навсегда.
А ~/Library/Developer/CoreSimulator — можно её удалить?
Не вслепую — там лежат ваши установленные симуляторы и их данные, и удаление папки целиком сломает их до переустановки сред. Вместо этого прореживайте правильно: выполните xcrun simctl delete unavailable для осиротевших устройств, удалите старые среды в Settings > Platforms в Xcode, уберите неиспользуемые устройства в Devices and Simulators, а вручную чистите только подпапку Caches.
Делает ли Clean Build Folder то же самое?
Нет. Product > Clean Build Folder (Command-Shift-K) очищает продукты сборки только текущего проекта и оставляет на месте индексы, кеши модулей и папки всех остальных проектов. Это инструмент отладки сборки, а не освобождения места — чтобы вернуть реальное место, нужно удалять сами папки DerivedData.
Sources