Clean Build Folder ou excluir o DerivedData no Xcode?
Equipe AskClean · Atualizado 2026-11-02
O Clean Build Folder limpa os produtos de build do scheme que está aberto. Excluir o DerivedData zera um conjunto maior: além dos produtos de build, os índices, os caches de módulos e os logs. Para um build quebrado, comece pelo Clean Build Folder; para um índice corrompido, exclua a pasta do DerivedData daquele projeto; para liberar espaço de verdade, exclua as pastas do DerivedData dos projetos que você não compila mais.
A diferença é o alcance, não a profundidade
Product > Clean Build Folder (Shift-Command-K) age dentro do projeto e do scheme abertos no momento. Ele descarta os produtos compilados e os arquivos intermediários desse contexto, para que o próximo build comece do código-fonte. O alcance é um único projeto, e ele mantém de propósito o que é caro de reconstruir.
O DerivedData é a pasta principal compartilhada por todos os projetos que usam o local padrão — ~/Library/Developer/Xcode/DerivedData, com uma subpasta para cada projeto ou workspace que você já abriu. Excluir uma subpasta zera exatamente aquele projeto. Excluir a pasta inteira faz todos os seus projetos serem recompilados e reindexados na próxima vez que forem abertos.
Por isso, a forma honesta de descrever os dois não é “limpeza leve” versus “limpeza profunda”. O Clean Build Folder tem alcance estreito e custa pouco; excluir o DerivedData tem alcance amplo e custa o índice. Qual é o certo depende só de onde está o problema: dentro dos produtos de build ou fora deles.
Quando o build quebrar, comece pelo mais restrito
Se a falha surgiu logo depois de você trocar de branch, mudar uma configuração de build ou editar arquivos de recursos, encerre o app em execução e use primeiro o Clean Build Folder. É o reset mais barato que existe, preserva o índice e faz você voltar ao trabalho depois de um build — e não de um build mais vários minutos de indexação.
Passe a excluir a pasta do DerivedData daquele projeto quando os sintomas não tiverem a ver com produtos de build: o Xcode mostrando erros em código que você já corrigiu, o Jump to Definition levando ao lugar errado, o autocompletar que deixou de reconhecer os seus próprios tipos. Esses são sintomas do índice, e o Clean Build Folder não mexe no índice.
Há um caso específico que vale conhecer, porque é o motivo mais comum para “limpei e não adiantou” virar “excluí o DerivedData e resolveu”: o cache de módulos pré-compilados (ModuleCache.noindex) fica na raiz do DerivedData, e não dentro da subpasta de algum projeto. O Clean Build Folder nunca chega até ele. Quando esse cache fica desatualizado depois de uma mudança de SDK ou de toolchain, só removê-lo elimina o erro.
Nenhum dos dois comandos corrige um bug real no seu código ou nas suas dependências. Se exatamente o mesmo erro sobreviver a um build limpo, pare de limpar e leia a mensagem do compilador — a causa está nas configurações do projeto, no Package.resolved, no SDK selecionado ou no próprio código.
Nenhum dos dois é uma estratégia de limpeza de disco
O Clean Build Folder é uma ferramenta de diagnóstico que, de quebra, libera alguns bytes. Ele pode devolver o espaço do projeto atual, mas os produtos de build de todos os outros projetos, todos os índices e o cache de módulos continuam exatamente onde estavam. Usá-lo para recuperar espaço em disco é medir a coisa errada.
Se o objetivo é mesmo espaço, faça o caminho inverso: meça primeiro as subpastas do DerivedData e depois exclua as dos projetos que você não abre há meses. É ali que costumam estar as dezenas de gigabytes — clones avulsos que você compilou uma vez e nunca mais abriu.
Não comece pelo rm -rf. O Finder permite mover as pastas selecionadas para o Lixo, de onde ainda dá para recuperá-las até você esvaziá-lo — e essa diferença importa na primeira vez que você exclui a pasta de um projeto que, na verdade, estava sendo compilado naquele momento. O Terminal vale a pena para automatizar, mas só depois de confirmar o caminho exato.
Confira o resultado em vez de confiar num número
Anote o tamanho do DerivedData antes de fazer qualquer coisa, aplique só uma das duas opções e meça de novo. Depois do Clean Build Folder, compile o scheme atual. Depois de excluir uma pasta do DerivedData, abra o Xcode e espere terminar o primeiro build e a indexação.
Seguir essa ordem separa o espaço que você recuperou do preço que pagou por ele. Não existe um número universal a esperar: o resultado depende de quantos projetos, configurações e arquiteturas já foram compilados naquele Mac.
Qual usar em cada situação
| Situação | O que fazer | Custo de recuperação |
|---|---|---|
| O build falha no scheme atual | Product > Clean Build Folder | Um novo build deste projeto. Os índices de todos os projetos são preservados. |
| Erros que não somem, Jump to Definition quebrado | ~/Library/Developer/Xcode/DerivedData/<project> | Build completo e nova indexação, só desse projeto. |
| Os erros continuam depois do Clean Build Folder, após uma mudança de SDK | ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex | Os módulos são recompilados no próximo build. O Clean Build Folder não alcança essa pasta. |
| Você precisa mesmo de espaço em disco | ~/Library/Developer/Xcode/DerivedData | Exclua as subpastas grandes e antigas; esses projetos são recompilados quando forem abertos de novo. |
| Runtimes antigos do simulador | Xcode Settings > Components | É uma categoria totalmente separada. Nenhum dos dois comandos mexe nela. |
Esta tabela descreve o alcance de cada opção, não uma quantidade prometida de gigabytes. Meça o seu Mac antes e depois.
Perguntas frequentes
O Clean Build Folder exclui o DerivedData?
Não. Ele limpa os produtos de build do projeto e do scheme abertos. Não equivale a excluir a pasta compartilhada DerivedData, que também guarda os índices, o cache de módulos e os logs de todos os projetos.
É seguro excluir a pasta do DerivedData de um projeto?
Sim. Tudo o que está ali é derivado do seu código-fonte, que o Xcode regenera. Seu código e o histórico do Git não são tocados. O único custo é que o primeiro build depois disso será completo, seguido de uma nova indexação.
Preciso encerrar o Xcode antes?
Para excluir o DerivedData manualmente, sim — isso evita que o indexador segure ou recrie arquivos enquanto você os remove. Para o comando Clean Build Folder, não: é o próprio Xcode fazendo a limpeza.
Por que o erro continua depois da limpeza?
O mais provável é que a causa nunca tenha sido o cache. Confira a mensagem do compilador, as configurações do scheme, as versões das dependências, o Package.resolved, o SDK selecionado e o que de fato mudou no seu branch atual.
O Clean Build Folder não resolveu, mas excluir o DerivedData resolveu. Por quê?
Geralmente por causa do cache de módulos pré-compilados. O ModuleCache.noindex fica na raiz do DerivedData, e não dentro da subpasta de um projeto; por isso o Clean Build Folder não o alcança — e excluir o DerivedData, sim.
Fontes