Bezpečně smažte Xcode DerivedData a vývojářské mezipaměti
AskClean Team · Updated 2026-07-18
DerivedData je odkladiště Xcode pro produkty sestavení a indexy — a dokáže potichu narůst na desítky gigabajtů. Jeho smazání je bezpečné: ukončete Xcode, odstraňte obsah ~/Library/Developer/Xcode/DerivedData a Xcode si při příštím sestavení všechno vytvoří znovu. Tento návod pokrývá právě to, plus simulátory, archivy a mezipaměti balíčků.
Co je DerivedData a proč tak bobtná
DerivedData je místo, kam si Xcode ukládá vše, co odvozuje z vašeho zdrojového kódu: mezilehlé objekty sestavení, zkompilované produkty, mezipaměti modulů, indexy symbolů pro našeptávání a skok na definici a protokoly sestavení. Ve výchozím nastavení sídlí v ~/Library/Developer/Xcode/DerivedData, s jednou podsložkou pro každý projekt nebo workspace, který jste kdy otevřeli.
Roste ze strukturálního důvodu: Xcode založí složku DerivedData pro každý otevřený projekt — včetně jednorázových klonů, které jste jednou sestavili a už se jich nedotkli — a žádnou z nich nikdy nesmaže. Každá složka drží samostatné produkty sestavení pro každou konfiguraci a cíl (Debug a Release, simulátor a zařízení), takže jediný středně velký projekt může zabrat několik gigabajtů a složka jako celek na pracovním vývojářském stroji běžně dosahuje 20–50 GB.
Všechno uvnitř lze z definice znovu vytvořit — přesně to znamená „derived“, odvozené. Smazání DerivedData se nikdy nedotkne vašeho zdrojového kódu, nastavení projektu ani ničeho pod správou verzí. Jedinou cenou je čas: příští sestavení každého projektu je plné čisté sestavení a indexace pár minut poběží znovu na pozadí.
Smažte DerivedData
Existují tři cesty a všechny končí na stejném místě. Příkaz Xcode Clean Build Folder (Product > Clean Build Folder, nebo Command-Shift-K) vyčistí jen produkty sestavení aktuálně otevřeného projektu — hodí se na opravu podivného sestavení, ale ručičkou obsazeného místa skoro nepohne. Chcete-li získat zpět skutečné místo, smažte samotné složky DerivedData.
Mazání po projektech je chirurgická varianta: ponechte DerivedData dvou tří projektů, které sestavujete denně, a složky všeho ostatního odstraňte. Smazat všechno naráz je rychlá varianta a je také v pořádku — jen zaplatíte cenu plného opětovného sestavení u všech projektů najednou.
- Nejprve ukončete Xcode. Mazání DerivedData za běhu Xcode může zmást jeho indexer a soubory, které má Xcode otevřené, se nemusí smazat čistě.
- Najděte složku: v Xcode otevřete Settings > Locations a kliknutím na malou šipku vedle cesty DerivedData ji zobrazte ve Finderu. Nebo ve Finderu stiskněte Command-Shift-G a zadejte přímo ~/Library/Developer/Xcode/DerivedData.
- Seřaďte podsložky projektů podle velikosti, vyberte ty, kterých se chcete zbavit (nebo Command-A pro všechny), a přesuňte je do Koše. Nejdřív do Koše je bezpečnější návyk — pokud si to rozmyslíte, okamžitě je obnovíte.
- Případně z Terminálu: rm -rf ~/Library/Developer/Xcode/DerivedData smaže všechno jednou ranou. U velmi velkých složek je to rychlejší než Finder, ale než příkaz použijete, přečtěte si poznámku níže.
- Znovu otevřete Xcode a sestavte. Počítejte s tím, že první sestavení každého projektu potrvá znatelně déle a že v liště aktivity chvíli poběží „Indexing“ — obojí je jednorázová cena.
S rm -rf opatrně: obchází Koš a maže trvale, bez možnosti vrácení. Cestu napište přesně, pro tento úkol ho nikdy nespouštějte se sudo — a pokud se v Terminálu necítíte jistě, cesta přes Finder udělá totéž vratně.
Vyčistěte staré runtimy simulátorů
Simulátory bývají po DerivedData druhým největším žroutem vývojářského místa. Každý runtime iOS, watchOS nebo tvOS, který jste si kdy stáhli, zabírá 5–8 GB a každé simulované zařízení si drží vlastní datovou složku pod ~/Library/Developer/CoreSimulator/Devices. Pokud máte za sebou pár upgradů Xcode, nejspíš u sebe chováte runtimy verzí iOS, na které jste přestali cílit před lety.
Nejrychlejší výhrou je vestavěný úklidový příkaz: spusťte v Terminálu xcrun simctl delete unavailable. Smaže každé simulované zařízení, jehož runtime už není nainstalovaný — sirotky po starých verzích Xcode — a nedotkne se ničeho, co ještě můžete používat.
Samotné runtimy najdete v Xcode v Settings > Platforms (ve starších verzích Xcode Components). Uvidíte každý nainstalovaný runtime simulátoru 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.
Prořezat můžete i jednotlivá simulovaná zařízení ve Window > Devices and Simulators: přepněte na kartu Simulators, klikněte pravým tlačítkem na zařízení, které nikdy nepoužíváte — těch šest duplicitních modelů iPhonu s daty ze starých testů — a zvolte Delete. Uložená data a aplikace zařízení zmizí s ním.
Archivy, soubory podpory zařízení a mezipaměti
Archivy se hromadí v ~/Library/Developer/Xcode/Archives pokaždé, když spustíte Product > Archive kvůli distribuci buildu. Každý archiv obsahuje kompletní sestavení aplikace plus její ladicí symboly dSYM, často 100 MB až 1 GB za kus. Než začnete mazat, znejte kompromis: právě dSYM uvnitř vám umožňují symbolikovat hlášení o pádech pro přesně ten build. Ponechte si archivy verzí, které jsou stále živé na App Storu nebo TestFlightu (nebo si ověřte, že App Store Connect má dSYM), a zbytek smažte — nejbezpečnější cesta vede přes Organizer v Xcode (Window > Organizer > Archives), kde je můžete projít a smazat s kontextem.
iOS DeviceSupport v ~/Library/Developer/Xcode/iOS DeviceSupport drží ladicí symboly, které si Xcode kopíruje z každého fyzického iPhonu nebo iPadu, který jste kdy připojili — jedna složka na verzi iOS, typicky 2–5 GB každá. Složky verzí iOS, na kterých už žádné vaše zařízení neběží, jsou čistá mrtvá váha: smažte je, a pokud někdy znovu připojíte zařízení s danou verzí, Xcode si symboly prostě zkopíruje znovu (jednou uvidíte „Preparing debugger support“). Sesterské složky existují i pro zařízení watchOS a tvOS.
Xcode si navíc drží vlastní mezipaměti pod ~/Library/Caches/com.apple.dt.Xcode a simulátory ty své v ~/Library/Developer/CoreSimulator/Caches — obě lze bezpečně vyčistit, když Xcode ani aplikace Simulator neběží, a obě se podle potřeby vytvoří znovu.
Mezipaměti správců balíčků (SwiftPM, CocoaPods, npm, Homebrew)
Správci balíčků si nechávají každou závislost, kterou kdy stáhli, aby budoucí instalace byly rychlé. Je to dobré inženýrství a špatná disková hygiena: mezipaměti jen rostou a na stroji s několika lety projektů se potichu nasčítají na 10–20 GB. Všechny lze bezpečně vyčistit — v nejhorším případě si příští instalace balíčky stáhne znovu.
Swift Package Manager ukládá stažené balíčky do ~/Library/Caches/org.swift.swiftpm a rozřešené checkouty každého projektu žijí i uvnitř jeho složky DerivedData — takže vyčištěním DerivedData jste je už vyčistili. Sdílenou mezipaměť můžete smazat z Finderu, nebo pomocí rm -rf na dané cestě.
CocoaPods drží stažené pody v ~/Library/Caches/CocoaPods. Čistou cestou k vyprázdnění je vestavěný příkaz: pod cache clean --all. Složek Pods ve vašich projektech se to nedotkne; zmizí jen mezipaměť stažených souborů.
Mezipaměť npm sídlí v ~/.npm a na stroji plném JavaScriptu může dosáhnout mnoha gigabajtů. Vyprázdníte ji příkazem npm cache clean --force (npm na přepínači trvá, protože mezipaměť je samoopravná a normálně čištění nepotřebuje — její smazání je přesto naprosto bezpečné). Uživatelé pnpm mohou místo toho spustit pnpm store prune.
Homebrew hromadí staré stažené soubory a zastaralé verze balíčků. brew cleanup odstraní zastaralé verze a přebytečné stažené soubory; brew cleanup --prune=all vyprázdní i celou mezipaměť stahování. Chcete-li nejdřív vidět seznam toho, co by zmizelo, spusťte napřed brew cleanup -n.
Zautomatizujte to
Všechno výše funguje, ale vývojářský balast je běžecký pás: DerivedData je do týdne běžné práce zpátky, mezipaměti se znovu naplní a každá aktualizace Xcode osiří další runtime. Pokud nechcete každý měsíc znovu absolvovat šest ručních procedur, právě tohle stojí za automatizaci — nástrojem, který ukazuje své uvažování, místo aby potichu mazal hromadně.
AskClean bere vývojářské soubory jako plnohodnotné kategorie: jeden sken rozepíše Xcode DerivedData po projektech, staré runtimy simulátorů (čtené přes simctl, s ponecháním nejnovějšího pro každou platformu), soubory podpory zařízení a mezipaměti správců balíčků pro npm, SwiftPM, cargo, uv a další. Zachytí i novější žrouty místa — mezipaměti modelů Hugging Face a Ollama — které vypisuje po jednotlivých modelech a ve výchozím stavu nechává nezaškrtnuté.
Ke každé položce dostanete vysvětlení — co to je, zda se dá znovu vytvořit, co smazání stojí — a nic se nespustí, dokud to nepotvrdíte. Smazané putuje do Koše, takže chybné kliknutí vrátíte jedním přetažením, a vašeho zdrojového kódu, dokumentů ani fotek se nikdy nedotkneme. Je to stejný checklist jako tento návod, jen bez hodiny práce v Terminálu.
FAQ
Je bezpečné smazat DerivedData?
Ano — je to jedno z nejbezpečnějších velkých mazání na Macu. DerivedData obsahuje jen soubory, které Xcode generuje z vašich zdrojů: produkty sestavení, mezipaměti modulů, indexy a protokoly. Váš kód, soubory projektu a historie gitu žijí jinde a nikdy nejsou dotčeny. Jediným důsledkem je, že příští sestavení každého projektu je plné opětovné sestavení a indexace proběhne znovu.
Jak často mám DerivedData čistit?
Žádný předepsaný rozvrh neexistuje — vyčistěte je, když jsou dost velká, aby to stálo za to, což u většiny aktivních vývojářů znamená každý měsíc až dva. Dvě situace to ospravedlňují vždy: když rychle potřebujete místo na disku a když projekt vykazuje nevysvětlitelné chyby sestavení nebo zatuchlé našeptávání — tam je vymazání DerivedData standardní první oprava.
Bude Xcode po smazání DerivedData pomalejší?
Dočasně ano. První sestavení každého projektu je čisté sestavení, které může trvat několikanásobně déle než přírůstkové, a indexace na pozadí potřebuje pár minut, než se našeptávání a vyhledávání plně vrátí. Po tomto prvním cyklu je výkon přesně takový jako předtím — DerivedData drží mezipaměti, ne optimalizace, o které byste trvale přišli.
A co ~/Library/Developer/CoreSimulator — můžu ho smazat?
Ne naslepo — drží vaše aktuálně nainstalované simulátory a jejich data a jeho smazání vcelku je rozbije, dokud runtimy nenainstalujete znovu. Prořezávejte ho pořádně: spusťte xcrun simctl delete unavailable na osiřelá zařízení, staré runtimy odstraňte v Xcode v Settings > Platforms, nepoužívaná zařízení smažte v Devices and Simulators a ručně vyčistěte jen podsložku Caches.
Nedělá Clean Build Folder totéž?
Ne. Product > Clean Build Folder (Command-Shift-K) vyčistí produkty sestavení jen aktuálního projektu a indexy, mezipaměti modulů i složky všech ostatních projektů nechá na místě. Je to nástroj na řešení potíží se sestavením, ne na místo na disku — skutečné místo získáte zpět smazáním samotných složek DerivedData.
Sources