AskClean

Bezpečně smažte Xcode DerivedData a vývojářské mezipaměti

Tým AskClean · Aktualizováno 2026-11-02

DerivedData je pracovní složka Xcode pro produkty sestavení a indexy a nenápadně může narůst na desítky gigabajtů. Smazat ji je bezpečné: ukončete Xcode, odstraňte obsah ~/Library/Developer/Xcode/DerivedData a Xcode vše potřebné při příštím sestavení vytvoří znovu. Návod popisuje právě tento postup a k tomu také simulátory, archivy a mezipaměti balíčků.

Bezpečně smažte Xcode DerivedData a vývojářské mezipaměti
Jak bezpečně smazat Xcode DerivedData, odstranit staré runtimy simulátorů a vyčistit archivy, DeviceSupport a mezipaměti správců balíčků na Macu.

Co je DerivedData a proč tolik narůstá

Do DerivedData ukládá Xcode vše, co odvozuje z vašeho zdrojového kódu: objektové soubory a další mezivýstupy sestavení, zkompilované produkty, mezipaměti modulů, indexy symbolů pro našeptávání a skok na definici a také protokoly sestavení. Ve výchozím nastavení je složka v ~/Library/Developer/Xcode/DerivedData a obsahuje jednu podsložku pro každý projekt nebo workspace, který jste kdy otevřeli.

Narůstá už z principu: Xcode zakládá podsložku v DerivedData pro každý projekt, který otevřete – včetně jednorázových klonů, které jste jednou sestavili a pak už neotevřeli – a sám tyto podsložky průběžně neodstraňuje. Každá podsložka obsahuje samostatné produkty sestavení pro každou konfiguraci a cíl (Debug a Release, simulátor a zařízení). Proto raději změřte jednotlivé podsložky projektů, než abyste odhadovali, kolik místa na svém Macu získáte.

Vše uvnitř lze z definice vytvořit znovu – přesně to znamená „derived“, tedy odvozená data. Smazání DerivedData se nikdy nedotkne vašeho zdrojového kódu, nastavení projektu ani ničeho, co máte ve správě verzí. Jedinou cenou je čas: příští sestavení každého projektu proběhne celé od začátku a na pozadí se na několik minut znovu spustí indexování.

Jak smazat DerivedData

Příkaz Clean Build Folder v Xcode (Product > Clean Build Folder nebo Shift-Command-K) vyčistí jen produkty sestavení právě otevřeného projektu – pomůže, když se sestavení chová podivně, ale s obsazeným místem na disku téměř nehne. Pokud potřebujete získat skutečné místo, smažte přímo složky v DerivedData: zobrazte je z nastavení Locations v Xcode, otevřete je ve Finderu nebo je odstraňte v Terminálu. Všechny tři cesty vedou ke stejnému výsledku.

Mazání po projektech je přesnější varianta: ponechte DerivedData dvou nebo tří projektů, které sestavujete denně, a ostatní složky odstraňte. Smazat celou složku najednou je rychlejší a také v pořádku – jen pak u všech projektů současně zaplatíte cenu sestavení od začátku.

  1. Nejdřív ukončete Xcode. Pokud DerivedData mažete za běhu Xcode, jeho indexer se může zmást a soubory, které má Xcode otevřené, se nemusí smazat celé.
  2. Najděte složku: v Xcode otevřete Settings > Locations a kliknutím na malou šipku vedle cesty k DerivedData ji zobrazte ve Finderu. Případně ve Finderu stiskněte Command-Shift-G a zadejte přímo ~/Library/Developer/Xcode/DerivedData.
  3. Seřaďte podsložky projektů podle velikosti, vyberte ty, které chcete odstranit (nebo všechny pomocí Command-A), a přesuňte je do Koše. Přesun do Koše je bezpečnější návyk – pokud si to rozmyslíte, složky hned vrátíte zpět.
  4. Případně v Terminálu: příkaz rm -rf ~/Library/Developer/Xcode/DerivedData smaže vše najednou. U velmi velkých složek je to rychlejší než Finder, ale před použitím si přečtěte poznámku níže.
  5. Znovu otevřete Xcode a spusťte sestavení. Počítejte s tím, že první sestavení každého projektu potrvá znatelně déle a že v panelu aktivity Xcode bude chvíli probíhat „Indexing“ – obojí je jednorázová cena.

S příkazem rm -rf buďte opatrní: obchází Koš a maže trvale, bez možnosti vrácení. Cestu zadejte přesně, pro tento úkol ho nikdy nespouštějte se sudo, a pokud si v Terminálu nejste jistí, postup přes Finder udělá totéž vratně.

Odstraňte staré runtimy simulátorů

Simulátory bývají další velkou položkou vývojářského úložiště. Každý stažený runtime pro iOS, watchOS nebo tvOS zabírá vlastní místo a každé simulované zařízení ukládá data do ~/Library/Developer/CoreSimulator/Devices. Pokud máte za sebou několik aktualizací Xcode, zkontrolujte runtimy verzí systému, na kterých už netestujete.

Nejrychleji pomůže vestavěný úklidový příkaz: v Terminálu spusťte xcrun simctl delete unavailable. Smaže všechna simulovaná zařízení označená jako nedostupná – většinou osiřelá zařízení, která zůstala po odstraněných runtimech a starších verzích Xcode – i s aplikacemi a daty v nich. Seznam si nejdřív projděte příkazem xcrun simctl list devices, zvlášť pokud máte nainstalovaných víc verzí Xcode.

Samotné runtimy odstraníte v Xcode v Settings > Components (v Xcode 14–15 se tento panel jmenuje Platforms). Uvidíte tam každý nainstalovaný runtime simulátoru i s jeho velikostí; vyberte starý a smažte ho. Ponechte si jen nejnovější runtime pro každou platformu, pokud aktivně netestujete na starších verzích systému.

Jednotlivá simulovaná zařízení můžete protřídit také v okně Window > Devices and Simulators: přepněte na kartu Simulators, klikněte pravým tlačítkem na zařízení, které nepoužíváte – třeba na šest duplicitních modelů iPhonu s daty ze starých testů – a zvolte Delete. Spolu se zařízením zmizí i jeho uložená data a aplikace.

Archivy, DeviceSupport a mezipaměti Xcode

Archivy se hromadí v ~/Library/Developer/Xcode/Archives pokaždé, když kvůli distribuci spustíte Product > Archive. Každý archiv obsahuje kompletní sestavení aplikace a k němu ladicí symboly dSYM, často 100 MB až 1 GB na kus. Před mazáním si uvědomte, o co přicházíte: právě dSYM uvnitř archivu umožňují symbolikovat hlášení o pádech přesně tohoto sestavení. Ponechte archivy verzí, které jsou stále dostupné v App Storu nebo v TestFlightu (případně ověřte, že App Store Connect jejich dSYM má), a ostatní smažte. Nejbezpečnější cesta vede přes Organizer v Xcode (Window > Organizer > Archives), kde archivy projdete a smažete i s kontextem.

Složka iOS DeviceSupport v ~/Library/Developer/Xcode/iOS DeviceSupport obsahuje ladicí symboly, které Xcode zkopíroval z každého iPhonu nebo iPadu, který jste kdy připojili – jedna složka na verzi iOS, obvykle 2–5 GB každá. Složky verzí iOS, které už žádné z vašich zařízení nepoužívá, jsou jen zbytečná zátěž: smažte je, a pokud později připojíte zařízení s touto verzí, Xcode symboly jednoduše zkopíruje znovu (jednou uvidíte hlášení „Preparing debugger support“). Obdobné složky existují i pro zařízení se systémy watchOS a tvOS.

Xcode má navíc vlastní mezipaměti v ~/Library/Caches/com.apple.dt.Xcode a simulátory své v ~/Library/Developer/CoreSimulator/Caches. Obě se podle potřeby vytvoří znovu, mažte je ale jen tehdy, když jsou Xcode i aplikace Simulator ukončené, a soubory v mezipaměti CoreSimulator, které nepoznáváte, nechte být.

Mezipaměti správců balíčků (SwiftPM, CocoaPods, npm, Homebrew)

Správci balíčků uchovávají stažené závislosti, aby byly další instalace rychlé. To je užitečné, na počítači, který prošel lety projektů, se z toho ale může stát velká položka na disku. Tyto mezipaměti stažených souborů lze obnovit, další instalace si však balíčky bude muset stáhnout znovu.

Swift Package Manager ukládá stažené balíčky do ~/Library/Caches/org.swift.swiftpm a vyřešené checkouty jednotlivých projektů jsou také v jejich složkách DerivedData – vyčištěním DerivedData je tedy odstraníte také. Sdílenou mezipaměť můžete smazat ve Finderu nebo příkazem rm -rf s touto cestou.

CocoaPods ukládá stažené pody do ~/Library/Caches/CocoaPods. Tuto mezipaměť nejčistěji vyprázdníte vestavěným příkazem pod cache clean --all. Složek Pods ve vašich projektech se to nedotkne; zmizí jen mezipaměť stažených souborů.

Mezipaměť npm je v ~/.npm a na počítači, kde hodně pracujete s JavaScriptem, může zabírat mnoho gigabajtů. Vyprázdníte ji příkazem npm cache clean --force (npm přepínač vyžaduje, protože mezipaměť se sama opravuje a běžně čištění nepotřebuje; její smazání je bezpečné – balíčky se při příští instalaci jednoduše stáhnou znovu). Uživatelé pnpm mohou místo toho spustit pnpm store prune.

Homebrew hromadí stará stažení a zastaralé verze balíčků. brew cleanup odstraní zastaralé verze a neaktuální stažené soubory, a když ho spustíte pro všechny balíčky najednou, odinstaluje i závislosti, které už nic nepotřebuje (pokud není nastavená proměnná HOMEBREW_NO_AUTOREMOVE); brew cleanup --prune=all navíc vyprázdní celou mezipaměť stažených souborů. Chcete-li si nejdřív zobrazit seznam toho, co by se odstranilo, spusťte brew cleanup -n.

Jak úklid zautomatizovat

Všechny postupy výše fungují, ale vývojářský nepořádek se neustále vrací: DerivedData je po týdnu běžné práce zpět, mezipaměti se znovu zaplní a po každé aktualizaci Xcode zůstane další nepoužívaný runtime. Pokud nechcete každý měsíc opakovat šest ručních postupů, právě tuto část se vyplatí zautomatizovat – nástrojem, který vysvětlí, proč co navrhuje, místo aby potichu hromadně mazal.

AskClean pracuje s vývojářskými soubory jako s plnohodnotnými kategoriemi: jedno skenování rozepíše DerivedData podle projektů, staré runtimy simulátorů (načtené přes simctl, přičemž nejnovější runtime každé platformy ponechá), soubory DeviceSupport a mezipaměti správců balíčků pro npm, SwiftPM, cargo, uv a další. Zachytí i novější žrouty místa – mezipaměť modelů Hugging Face, kterou vypisuje po jednotlivých modelech, a knihovnu modelů Ollama, kterou zobrazí jako jednu položku – a ve výchozím stavu je nechává nevybrané.

Ke každé položce dostanete vysvětlení – co to je, zda ji lze vytvořit znovu a co vás smazání bude stát – a nic se nespustí, dokud to nepotvrdíte. Potvrzené položky se mažou trvale, do Koše se nepřesouvají, proto každý výběr před potvrzením zkontrolujte; vašeho zdrojového kódu ani knihovny fotek se AskClean nikdy nedotkne. Je to stejný kontrolní seznam jako v tomto návodu, jen bez hodiny práce v Terminálu.

Co lze vytvořit znovu a co ne

Tabulka ukazuje hranice mazání, ne univerzální úsporu místa. Před každým zásahem i po něm změřte svůj Mac – třeba kontrolním skriptem z výše odkazovaného návodu k simulátorům, který nic nemění.

KategorieVýchozí umístěníDůsledek smazání
DerivedData~/Library/Developer/Xcode/DerivedDataProjekty se znovu sestaví a zaindexují; zdrojový kód a historie Gitu zůstanou nedotčené.
Simulovaná zařízení~/Library/Developer/CoreSimulator/DevicesAplikace a testovací data vybraných virtuálních zařízení zmizí; mažte je přes simctl nebo Xcode.
Archivy~/Library/Developer/Xcode/ArchivesMůžete přijít o dSYM potřebné k symbolikaci pádů; nejdřív je projděte v Organizeru.
DeviceSupport~/Library/Developer/Xcode/iOS DeviceSupportLadicí symboly se znovu zkopírují, jakmile připojíte zařízení s danou verzí systému.

Časté dotazy

Je bezpečné smazat DerivedData?

Ano – patří k nejbezpečnějším velkým úklidům na Macu. DerivedData obsahuje jen soubory, které Xcode vytváří z vašeho zdrojového kódu: produkty sestavení, mezipaměti modulů, indexy a protokoly. Váš kód, soubory projektu a historie Gitu jsou uložené jinde a smazání se jich nijak nedotkne. Jediným důsledkem je, že příští sestavení každého projektu proběhne celé od začátku a znovu se spustí indexování.

Jak často mám DerivedData čistit?

Žádný povinný interval neexistuje – vyčistěte složku, až bude tak velká, že na tom záleží; u většiny aktivních vývojářů to vychází jednou za měsíc či dva. Dvě situace to ospravedlní vždy: když rychle potřebujete místo na disku a když projekt hlásí nevysvětlitelné chyby sestavení nebo našeptávání nabízí zastaralé údaje – tehdy je smazání DerivedData obvyklým prvním krokem.

Bude Xcode po smazání DerivedData pomalejší?

Dočasně ano. První sestavení každého projektu proběhne od začátku, což může trvat několikanásobně déle než přírůstkové sestavení, a indexování na pozadí potřebuje pár minut, než se plně vrátí našeptávání a vyhledávání. Po tomto prvním cyklu je výkon stejný jako předtím – DerivedData obsahuje mezipaměti, ne optimalizace, o které byste natrvalo přišli.

A co ~/Library/Developer/CoreSimulator – mohu tuto složku smazat?

Ne naslepo – obsahuje vaše aktuálně nainstalované simulátory a jejich data a smazání celé složky je vyřadí z provozu, dokud runtimy znovu nenainstalujete. Protřiďte ji raději cíleně: osiřelá zařízení odstraňte příkazem xcrun simctl delete unavailable (zmizí i s aplikacemi a daty), staré runtimy v Xcode v Settings > Components, nepoužívaná zařízení v okně Devices and Simulators a ručně vyčistěte jen podsložku Caches, a to při ukončeném Xcode i Simulatoru.

Dělá Clean Build Folder totéž?

Ne. Product > Clean Build Folder (Shift-Command-K) vyčistí produkty sestavení jen aktuálního projektu a indexy, mezipaměti modulů i složky všech ostatních projektů ponechá. Je to nástroj pro řešení problémů se sestavením, ne pro uvolnění místa – skutečné místo získáte jen smazáním samotných složek v DerivedData.

Zdroje

Úložiště pro vývoj krok za krokem