Cómo borrar DerivedData y cachés de Xcode sin romper nada
Puedes borrar ~/Library/Developer/Xcode/DerivedData cuando quieras: Xcode la vuelve a crear en la siguiente compilación y solo pierdes tiempo de compilado. Los simuladores y runtimes viejos se quitan mejor con xcrun simctl o desde los ajustes de Xcode. Cuidado con Archives: ahí están los dSYM que necesitas para leer los informes de fallos.
Si desarrollas apps para iOS o macOS, Xcode va llenando el disco poco a poco con datos de compilación, dispositivos de simulador, runtimes y símbolos de tus iPhone. Casi todo es caché que Xcode sabe reconstruir. Una parte no. En esta guía verás cada carpeta, cómo medirla, cómo limpiarla y qué pierdes al hacerlo.
Qué ocupa espacio en Xcode
Estos son los sitios principales donde escribe Xcode, todos dentro de tu carpeta de usuario:
| Carpeta o elemento | Qué es | ¿Se regenera solo? |
|---|---|---|
~/Library/Developer/Xcode/DerivedData |
Productos de compilación, archivos intermedios, índices y registros de cada proyecto | Sí, en la siguiente compilación |
~/Library/Developer/Xcode/Archives |
Los archivos de Product > Archive, con tus dSYM | No |
~/Library/Developer/Xcode/iOS DeviceSupport |
Símbolos de depuración copiados de los dispositivos que conectaste | Sí, al volver a conectar el dispositivo |
~/Library/Developer/CoreSimulator/Devices |
Cada dispositivo de simulador, con sus apps y datos | No, el dispositivo y sus datos desaparecen |
| Runtimes de simulador | El sistema iOS, watchOS, tvOS o visionOS que ejecuta cada simulador | Se pueden volver a descargar |
~/Library/Developer/CoreSimulator/Caches |
Cachés que crea el simulador | Sí, el simulador las vuelve a crear |
La idea clave: borra sin miedo lo que se regenera y piénsalo dos veces con lo que no.
Paso 1: mide antes de borrar
Mira siempre primero. Este comando solo lee, no cambia nada:
du -sh ~/Library/Developer/Xcode/DerivedData \
~/Library/Developer/Xcode/Archives \
~/Library/Developer/Xcode/"iOS DeviceSupport" \
~/Library/Developer/CoreSimulator/Devices \
~/Library/Developer/CoreSimulator/Caches 2>/dev/null
Para ver qué proyectos ocupan más dentro de DerivedData:
du -sh ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null | sort -h
Cada carpeta empieza con el nombre del proyecto y sigue con un sufijo aleatorio. Si aparecen proyectos que borraste hace meses, esas carpetas son restos puros.
Paso 2: borrar DerivedData
DerivedData es la carpeta más segura de limpiar. Solo contiene lo que Xcode genera a partir de tu proyecto: archivos compilados, el índice de código que usa el autocompletado y la búsqueda, y los registros de compilación.
Primero, la opción de menor riesgo: Clean Build Folder
Dentro de Xcode, abre el proyecto y elige Product > Clean Build Folder (Mayúsculas + Comando + K). Borra solo los productos de compilación del proyecto abierto. Es un buen primer paso cuando una compilación se comporta raro.
Borrar la carpeta entera
Si quieres recuperar el espacio de todos los proyectos:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
Para borrar un solo proyecto, quita solo su carpeta, por ejemplo rm -rf ~/Library/Developer/Xcode/DerivedData/MiApp-abc123. Las dependencias de Swift Package Manager que resuelve Xcode también viven en DerivedData, así que la siguiente compilación puede volver a descargarlas.
Paso 3: cuidado con Archives (los dSYM)
Cada vez que usas Product > Archive, Xcode guarda un paquete en ~/Library/Developer/Xcode/Archives. Apple define un archive como una compilación de tu app que incluye la información de depuración (Distributing your app). Esa información de depuración es el archivo dSYM.
Apple lo deja claro: debes guardar el archive de cada compilación que distribuyes, porque sin él puede que no consigas diagnosticar los informes de fallos (Building your app to include debugging information).
La regla segura es esta:
- Abre Window > Organizer > Archives en Xcode.
- Conserva los archives de cada versión que tus usuarios todavía usan.
- Borra solo los de compilaciones de prueba o versiones que ya nadie usa. Puedes hacer clic derecho en un archive y elegir Delete, o mostrarlo antes en Finder.
Paso 4: limpiar simuladores
Los simuladores ocupan espacio de dos formas: los dispositivos (el iPhone 16 que creaste, con sus apps y datos) y los runtimes (el sistema iOS que ejecutan).
Ver lo que tienes
xcrun simctl list devices
xcrun simctl list runtimes
simctl list solo lee. Los dispositivos marcados como no disponibles (unavailable) pertenecen a runtimes que ya no están instalados o que ya no se admiten.
Borrar los dispositivos no disponibles
Según la ayuda integrada (xcrun simctl help delete), unavailable borra los dispositivos que el SDK actual de Xcode no admite.
xcrun simctl delete unavailable
Evita xcrun simctl delete all salvo que de verdad quieras quitar todos los dispositivos, incluidos los que usas a diario.
Quitar los runtimes que ya no usas
Los runtimes suelen ser lo que más ocupa. Apple recomienda gestionarlos en Xcode > Settings > Components: Xcode muestra cada componente instalado con el espacio que recuperas y lo quitas con el botón de información y Delete (Downloading and installing additional Xcode components).
Desde la terminal, xcrun simctl runtime hace lo mismo. Usa antes --dry-run para ver qué se borraría:
xcrun simctl runtime list
xcrun simctl runtime delete --notUsedSinceDays 90 --dry-run
Si la lista te cuadra, ejecuta el mismo comando sin --dry-run. Un runtime borrado se vuelve a descargar desde Settings > Components cuando lo necesites, a cambio de tiempo y ancho de banda.
Paso 5: iOS DeviceSupport y cachés de CoreSimulator
Cuando conectas un iPhone o iPad para depurar, Xcode copia los símbolos de esa versión de iOS en ~/Library/Developer/Xcode/iOS DeviceSupport. Cada versión nueva de iOS añade una carpeta y las viejas nunca se borran solas. Puedes verlas por versión:
du -sh ~/Library/Developer/Xcode/"iOS DeviceSupport"/* 2>/dev/null
rm -rf ~/Library/Developer/Xcode/"iOS DeviceSupport"/"<carpeta-version-vieja>"
La carpeta ~/Library/Developer/CoreSimulator/Caches guarda cachés que genera el simulador. Cierra Xcode y la app Simulator antes de borrar su contenido; el siguiente arranque del simulador será más lento mientras las reconstruye.
Qué se regenera y qué no
- Lo regenera Xcode: DerivedData, iOS DeviceSupport (al conectar el dispositivo) y las cachés de CoreSimulator.
- Se puede volver a descargar: runtimes de simulador y paquetes de Swift.
- Se pierde para siempre: Archives con sus dSYM y los dispositivos de simulador con sus datos.
Si te quedas con una sola idea: DerivedData es caché, Archives es historial.
Problemas habituales después de limpiar
- “No such module” o la indexación no termina. Es normal los primeros minutos. Deja que Xcode termine de indexar y compila otra vez.
- Los paquetes no se resuelven. Usa File > Packages > Reset Package Caches y compila.
- No hay simulador donde ejecutar. Borraste el dispositivo o su runtime. Añade un runtime en Settings > Components y un dispositivo en Devices and Simulators.
Mantenlo bajo control
Ejecuta una vez al mes el du -sh del paso 1. Borra DerivedData cuando crezca, limpia los simuladores no disponibles después de cada actualización de Xcode y revisa Archives después de cada lanzamiento. Si también trabajas con contenedores o JavaScript, lee cómo liberar espacio con docker prune y cómo limpiar node_modules y las cachés de npm, pnpm y yarn. Para repasar todo el disco, empieza por cómo liberar espacio en Mac, o descarga Pruneo gratis.
Preguntas frecuentes
¿Es seguro borrar la carpeta DerivedData?
Sí. DerivedData guarda productos de compilación, índices y registros que Xcode genera otra vez en la siguiente compilación. Cierra Xcode antes y cuenta con que la primera compilación y la indexación tarden más.
¿Borrar DerivedData borra mi código?
No. Tu código, los archivos del proyecto y el historial de Git están en la carpeta del proyecto, no en DerivedData. Solo se borran datos generados.
¿Puedo borrar los Archives de Xcode?
Solo los de compilaciones que ya no das soporte. Apple indica que debes guardar el archivo de cada versión que distribuyes, porque contiene los dSYM para simbolizar los informes de fallos.
¿Qué hace xcrun simctl delete unavailable?
Borra los dispositivos de simulador que el SDK actual de Xcode ya no admite, por ejemplo los que dependen de un runtime que ya no tienes instalado.