AskCleanAskClean

Безпечне видалення Xcode DerivedData та кешів розробника

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 GB.

Усе в ній за визначенням можна відтворити — саме це означає «derived». Видалення DerivedData ніколи не торкається вашого початкового коду, налаштувань проєкту чи будь-чого під контролем версій. Єдина ціна — час: наступна збірка кожного проєкту буде повною чистою збіркою, а індексація ще кілька хвилин працюватиме у фоні.

Видаліть DerivedData

Є три способи це зробити, і всі приводять в одне місце. Команда Xcode Clean Build Folder (Product > Clean Build Folder або Command-Shift-K) очищує продукти збірки лише для наразі відкритого проєкту — корисно, щоб полагодити дивну збірку, але стрілку дискового простору вона майже не зрушує. Щоб звільнити реальне місце, видаляйте самі папки DerivedData.

Видалення по проєктах — хірургічний варіант: залиште DerivedData для двох-трьох проєктів, які збираєте щодня, і приберіть папки всього іншого. Видалити все цілком — швидкий варіант, і він теж нормальний: ви просто платите ціну повної перезбірки одразу за всі проєкти.

  1. Спершу закрийте Xcode. Видалення DerivedData під час роботи Xcode може заплутати його індексатор, а відкриті Xcode файли можуть видалитися некоректно.
  2. Знайдіть папку: в Xcode відкрийте Settings > Locations і клацніть маленьку стрілку поруч зі шляхом DerivedData, щоб показати її у Finder. Або у Finder натисніть Command-Shift-G і введіть ~/Library/Developer/Xcode/DerivedData напряму.
  3. Відсортуйте підпапки проєктів за розміром, виберіть ті, яких хочете позбутися (або Command-A для всіх), і перемістіть їх у Смітник. Спершу Смітник — безпечніша звичка: якщо передумаєте, відновите миттєво.
  4. Або з Terminal: rm -rf ~/Library/Developer/Xcode/DerivedData видаляє все одним махом. Це швидше за Finder для дуже великих папок, але прочитайте примітку нижче, перш ніж користуватися.
  5. Знову відкрийте Xcode і зберіть проєкт. Очікуйте, що перша збірка кожного проєкту триватиме помітно довше, а в панелі активності якийсь час крутитиметься «Indexing» — і те, й інше — разова ціна.

Будьте обережні з rm -rf: команда оминає Смітник і видаляє безповоротно, без скасування. Вводьте шлях точно, ніколи не запускайте її з sudo для цього завдання, а якщо вам некомфортно в Terminal — шлях через Finder робить ту саму роботу оборотно.

Очистьте старі середовища симулятора

Симулятори — зазвичай другий за розміром пожирач місця розробника після DerivedData. Кожне колись завантажене середовище iOS, watchOS чи tvOS займає 5-8 GB, а кожен симульований пристрій тримає власну папку даних у ~/Library/Developer/CoreSimulator/Devices. Якщо ви пережили кілька оновлень Xcode, у вас, найімовірніше, лежать середовища версій iOS, під які ви не збираєте вже роками.

Найшвидша перемога — вбудована команда очищення: виконайте xcrun simctl delete unavailable у Terminal. Вона видаляє кожен пристрій симулятора, чиє середовище більше не встановлене — сироти, залишені старими версіями Xcode — і не чіпає нічого, чим ви ще можете користуватися.

Для самих середовищ відкрийте в Xcode Settings > Platforms (у старіших версіях Xcode — Components). Ви побачите кожне встановлене середовище симулятора з його розміром; виберіть старе й видаліть. Тримайте лише останнє середовище на платформу, якщо тільки ви активно не тестуєте на старіших версіях ОС.

Також можна прорідити окремі симульовані пристрої у Window > Devices and Simulators: перейдіть на вкладку Simulators, клацніть правою кнопкою будь-який пристрій, яким ніколи не користуєтеся — ті шість дублікатів моделей iPhone з даними старих тестових прогонів — і виберіть Delete. Разом із пристроєм зникнуть його збережені дані та застосунки.

Архіви, файли підтримки пристроїв і кеші

Архіви накопичуються в ~/Library/Developer/Xcode/Archives щоразу, коли ви запускаєте Product > Archive для розповсюдження збірки. Кожен архів містить повну збірку застосунку плюс її налагоджувальні символи dSYM — часто від 100 MB до 1 GB за штуку. Перш ніж видаляти, зважте компроміс: саме 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 GB кожна. Папки версій 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 GB. Усі їх безпечно чистити — у найгіршому разі наступне встановлення перезавантажить пакети.

Swift Package Manager кешує завантажені пакети в ~/Library/Caches/org.swift.swiftpm, а розвʼязані checkouts кожного проєкту також лежать усередині його папки 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 — які виводить по кожній моделі й за замовчуванням не позначає.

Кожен елемент іде з поясненням — що це, чи можна це відтворити, чого коштує видалення — і нічого не запускається, доки ви не підтвердите. Видалене йде у Смітник, тож помилковий клік скасовується одним перетягуванням, а ваш початковий код, документи й фото лишаються недоторканними. Це той самий контрольний список, що й у цьому посібнику, мінус година роботи в Terminal.

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