Logo de PruneoPruneo

Cómo borrar DerivedData y cachés de Xcode sin romper nada

En resumen

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:

  1. Abre Window > Organizer > Archives en Xcode.
  2. Conserva los archives de cada versión que tus usuarios todavía usan.
  3. 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

Si te quedas con una sola idea: DerivedData es caché, Archives es historial.

Problemas habituales después de limpiar

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.

Pruébalo con Pruneo

Gratis para macOS 14 o superior. Lo que limpia se puede recuperar desde la cuarentena.

Pruneo es para Mac

Envíate el link y descárgalo en tu Mac. Es gratis y sin cuenta.

Enviármelo por mail
Descargar igual