Як безпечно видалити Xcode DerivedData і кеші розробника
Команда AskClean · Оновлено 2026-11-02
DerivedData — робоча папка Xcode для продуктів збірки й індексів, і вона може непомітно розростися до десятків гігабайтів. Видаляти її безпечно: закрийте Xcode, видаліть вміст ~/Library/Developer/Xcode/DerivedData, і під час наступної збірки Xcode створить усе заново. У посібнику — як це зробити, а також як розібратися із симуляторами, архівами й кешами пакетів.

Що таке DerivedData і чому вона так розростається
DerivedData — це місце, де Xcode зберігає все, що отримує з вашого вихідного коду: проміжні обʼєкти збірки, скомпільовані продукти, кеші модулів, індекси символів для автодоповнення й переходу до визначення, а також журнали збірки. Типово папка розташована в ~/Library/Developer/Xcode/DerivedData і містить окрему підпапку для кожного проєкту чи workspace, який ви колись відкривали.
Росте вона зі структурної причини: Xcode створює папку DerivedData для кожного відкритого проєкту — зокрема й для разових клонів, які ви зібрали один раз і більше не відкривали, — і сам їх не прибирає. У кожній папці лежать окремі продукти збірки для кожної конфігурації та призначення (Debug і Release, симулятор і пристрій), тож вимірюйте підпапки проєктів, а не вгадуйте, скільки місця звільниться саме на вашому Mac.
Увесь її вміст за визначенням можна відтворити — саме це й означає «derived» («похідний»). Видалення DerivedData ніколи не зачіпає вихідний код, налаштування проєкту чи будь-що в системі контролю версій. Єдина ціна — час: наступна збірка кожного проєкту буде повною, а індексування ще кілька хвилин працюватиме у фоні.
Як видалити DerivedData
Команда Clean Build Folder (Product > Clean Build Folder або Shift-Command-K) очищує продукти збірки лише поточного відкритого проєкту: вона допомагає, коли збірка поводиться дивно, але місця на диску майже не звільняє. Щоб справді звільнити місце, видаляйте самі папки DerivedData: відкрийте їх із налаштувань Xcode (Settings > Locations) чи у Finder або видаліть у «Терміналі». Усі три способи ведуть до одного результату.
Видалення окремих проєктів — точковий варіант: залиште 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 робить те саме, але з можливістю все повернути.
Очистьте старі середовища симулятора
Симулятори — часто ще одна велика категорія сховища розробника. Кожне завантажене середовище виконання iOS, watchOS чи tvOS займає своє місце, а кожен віртуальний пристрій зберігає дані в ~/Library/Developer/CoreSimulator/Devices. Якщо ви пережили кілька оновлень Xcode, перевірте середовища для версій ОС, які вже випали з вашого тестового набору.
Найшвидший виграш дає вбудована команда очищення: виконайте в «Терміналі» xcrun simctl delete unavailable. Вона видаляє всі пристрої симулятора з позначкою unavailable — здебільшого «сиріт», що лишилися після видалених середовищ і старих версій Xcode, — разом із програмами й даними в них. Спершу перегляньте список командою xcrun simctl list devices, особливо якщо у вас встановлено кілька версій Xcode.
Самі середовища видаляйте в Xcode: Settings > Components (у Xcode 14–15 — Platforms). Там видно кожне встановлене середовище симулятора та його розмір; виберіть старе й видаліть. Залишайте лише найновіше середовище для кожної платформи, якщо ви цілеспрямовано не тестуєте на старіших версіях ОС.
Окремі віртуальні пристрої можна видалити у 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, що ви колись підключали, — по папці на версію iOS, зазвичай по 2–5 ГБ кожна. Папки версій iOS, на яких уже не працює жоден із ваших пристроїв, — чистий баласт: видаляйте їх, а якщо колись знову підключите пристрій із цією версією, Xcode просто ще раз скопіює символи (один раз зʼявиться «Preparing debugger support»). Такі самі папки є й для пристроїв watchOS і tvOS.
Власні кеші Xcode зберігає також у ~/Library/Caches/com.apple.dt.Xcode, а симулятори — у ~/Library/Developer/CoreSimulator/Caches. Обидва кеші відновлюються за потреби, але очищуйте їх лише тоді, коли Xcode і програму Simulator закрито, а незнайомі файли кешу CoreSimulator не чіпайте.
Кеші менеджерів пакетів (SwiftPM, CocoaPods, npm, Homebrew)
Менеджери пакетів зберігають завантажені залежності, щоб наступні встановлення були швидшими. Це корисно, але на Mac із багаторічною історією проєктів такі кеші можуть стати помітною категорією. Їх можна відновити, проте під час наступного встановлення пакети доведеться завантажити знову.
Swift Package Manager кешує завантажені пакети в ~/Library/Caches/org.swift.swiftpm, а робочі копії залежностей кожного проєкту лежать ще й у його папці DerivedData, тож очищення DerivedData прибирає і їх. Спільний кеш можна видалити у Finder або командою rm -rf для цього шляху.
CocoaPods зберігає завантажені поди в ~/Library/Caches/CocoaPods. Правильно очищувати цей кеш вбудованою командою pod cache clean --all. Папок Pods у ваших проєктах вона не зачіпає — зникає лише кеш завантажень.
Кеш npm розташований у ~/.npm і на Mac із великою кількістю JavaScript-проєктів може займати багато гігабайтів. Щоб очистити його, виконайте npm cache clean --force (npm вимагає цей прапорець, бо кеш самовідновлюваний і зазвичай не потребує очищення; видаляти його безпечно — під час наступного встановлення пакети просто завантажаться знову). Користувачі pnpm можуть натомість виконати pnpm store prune.
Homebrew накопичує старі завантаження й застарілі версії пакетів. brew cleanup прибирає застарілі версії та давні завантаження, а глобальний запуск ще й видаляє непотрібні залежності, якщо не задано HOMEBREW_NO_AUTOREMOVE; brew cleanup --prune=all додатково очищує весь кеш завантажень. Щоб спершу побачити список того, що буде видалено, без самого видалення, виконайте brew cleanup -n.
Автоматизуйте рутину
Усе описане працює, але прибирання за розробником — це біг по колу: DerivedData знову виростає за тиждень звичайної роботи, кеші наповнюються, а кожне оновлення Xcode залишає ще одне непотрібне середовище. Якщо не хочеться щомісяця повторювати шість ручних процедур, саме цю частину варто автоматизувати — інструментом, який пояснює свої рішення, а не мовчки видаляє все гуртом.
AskClean виділяє файли розробника в окремі категорії: одне сканування показує Xcode DerivedData для кожного проєкту, старі середовища симулятора (список береться через simctl, найновіше середовище для кожної платформи зберігається), файли підтримки пристроїв і кеші менеджерів пакетів — npm, SwiftPM, cargo, uv та інших. Знаходить він і новіших «поглиначів» місця — локальні моделі ШІ: моделі Hugging Face показує по одній, а бібліотеку Ollama — одним елементом, і все це типово не вибрано.
До кожного елемента є пояснення — що це, чи можна його відтворити й чим обернеться видалення, — і нічого не виконується, доки ви не підтвердите. Підтверджені елементи видаляються назавжди, а не переміщуються в Смітник, тож перевіряйте кожен вибір перед підтвердженням; вихідного коду й фототеки AskClean не торкається. Це той самий контрольний список, що й у цьому посібнику, лише без години роботи в «Терміналі».
Що можна відтворити, а що — ні
Це таблиця меж видалення, а не обіцянка певної економії місця. Виміряйте свій Mac до й після будь-яких дій — наприклад, скриптом аудиту лише для читання з посібника про сховище симуляторів.
| Категорія | Типове розташування | Наслідок видалення |
|---|---|---|
| DerivedData | ~/Library/Developer/Xcode/DerivedData | Перезбирається й переіндексовується; вихідний код та історія git не зачіпаються. |
| Пристрої симулятора | ~/Library/Developer/CoreSimulator/Devices | Програми й тестові дані вибраних віртуальних пристроїв зникнуть; видаляйте їх через simctl або Xcode. |
| Архіви | ~/Library/Developer/Xcode/Archives | Можна втратити dSYM, потрібні для символізації збоїв; спершу перегляньте архіви в Organizer. |
| DeviceSupport | ~/Library/Developer/Xcode/iOS DeviceSupport | Символи налагодження буде скопійовано знову, якщо підключити пристрій із цією версією ОС. |
Часті запитання
Чи безпечно видаляти DerivedData?
Так — це одне з найбезпечніших великих видалень на Mac. У DerivedData лише файли, які Xcode генерує з вашого вихідного коду: продукти збірки, кеші модулів, індекси та журнали. Ваш код, файли проєкту й історія git зберігаються деінде й не постраждають. Єдиний наслідок — наступна збірка кожного проєкту буде повною, а індексування запуститься знову.
Як часто чистити DerivedData?
Обовʼязкового розкладу немає: чистьте, коли папка виросла настільки, що це помітно, — для більшості активних розробників це раз на місяць-два. Два випадки завжди виправдовують очищення: коли місце на диску потрібне терміново і коли проєкт видає незрозумілі помилки збірки чи застаріле автодоповнення — тоді видалення DerivedData є стандартним першим кроком.
Чи стане Xcode повільнішим після видалення DerivedData?
Тимчасово — так. Перша збірка кожного проєкту буде повною й може тривати в кілька разів довше за інкрементальну, а фоновому індексуванню потрібно кілька хвилин, щоб автодоповнення й пошук запрацювали на повну. Після цього першого циклу швидкість буде такою самою, як раніше: у DerivedData зберігаються кеші, а не оптимізації, які втрачаються назавжди.
А папку ~/Library/Developer/CoreSimulator можна видалити?
Не наосліп: у ній зберігаються встановлені симулятори та їхні дані, і якщо видалити її цілком, симулятори перестануть працювати, доки ви не перевстановите середовища. Краще прорідіть її правильно: виконайте xcrun simctl delete unavailable для пристроїв-«сиріт» (їхні програми й дані зникнуть разом із ними), видаліть старі середовища в Xcode через Settings > Components, приберіть невикористовувані пристрої в Devices and Simulators, а вручну очищуйте лише підпапку Caches — і тільки коли Xcode та Simulator закрито.
Чи робить Clean Build Folder те саме?
Ні. Product > Clean Build Folder (Shift-Command-K) очищує продукти збірки лише поточного проєкту й залишає на місці індекси, кеші модулів і папки всіх інших проєктів. Це інструмент для виправлення збірки, а не для звільнення місця: щоб повернути помітний обсяг, видаляйте самі папки DerivedData.
Джерела