AskClean

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çãoO que fazerCusto de recuperação
O build falha no scheme atualProduct > Clean Build FolderUm 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.noindexOs 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/DerivedDataExclua as subpastas grandes e antigas; esses projetos são recompilados quando forem abertos de novo.
Runtimes antigos do simuladorXcode 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

Mais sobre o armazenamento do Xcode