Développeurs

Peut-on supprimer sans risque DerivedData, les anciens simulateurs et iOS DeviceSupport d’Xcode ?

Ce que contient chaque dossier Xcode de ~/Library/Developer, ce qu’Xcode recrée, pourquoi ménager les Archives, et les commandes simctl des simulateurs.

7 min de lecturePar l’équipe MoreRoom, Yando Pte. Ltd.Cette page en Markdown

En bref

  • DerivedData se supprime sans risque : Xcode le reconstruit à la compilation suivante, au prix d’un build plus lent et d’une nouvelle indexation.
  • Les dossiers iOS DeviceSupport se suppriment sans risque : Xcode recopie les symboles la prochaine fois que vous branchez un appareil sous cette version.
  • Ne supprimez pas les Archives d’Xcode à l’aveugle. Elles contiennent les fichiers dSYM nécessaires pour symboliser les rapports de plantage des versions publiées.
  • Supprimez les simulateurs avec xcrun simctl delete unavailable et les runtimes avec xcrun simctl runtime delete, pas en effaçant des dossiers à la main.
  • Un runtime de simulateur pèse en général 7 à 10 Go : retirer les versions d’iOS que vous ne testez plus est souvent le gain le plus important.

Comment nettoyer le stockage d’Xcode sans risque

  1. Quitter Xcode et Simulator. Quittez Xcode et l’app Simulator pour qu’aucun build, aucune indexation ni aucun appareil démarré n’utilise les dossiers que vous allez nettoyer.
  2. Supprimer DerivedData. Ouvrez ~/Library/Developer/Xcode/DerivedData dans le Finder et placez son contenu dans la corbeille. Xcode reconstruit ce dont il a besoin au build suivant.
  3. Retirer les anciens dossiers DeviceSupport. Dans ~/Library/Developer/Xcode/iOS DeviceSupport, placez dans la corbeille les dossiers des versions et appareils que vous ne déboguez plus.
  4. Supprimer les simulateurs indisponibles. Exécutez xcrun simctl delete unavailable dans Terminal pour supprimer les appareils simulés dont le runtime n’est plus installé.
  5. Retirer les runtimes de simulateur inutiles. Exécutez xcrun simctl runtime list, puis xcrun simctl runtime delete avec l’identifiant de chaque runtime que vous ne testez plus, ou passez par Xcode › Settings › Components.
  6. Passer en revue les Archives en dernier. Ouvrez Window › Organizer › Archives et gardez chaque archive d’une version que des utilisateurs peuvent encore lancer. Copiez les plus anciennes sur un autre disque avant de les supprimer.

Pour l’essentiel, oui. DerivedData, iOS DeviceSupport, les clones d’appareils de test, les simulateurs des aperçus et les caches d’Xcode se suppriment sans risque : Xcode les recrée quand il en a besoin. Les simulateurs et leurs runtimes peuvent aussi être retirés, mais avec l’outil simctl d’Apple plutôt que dans le Finder. Le seul dossier à manier avec précaution est Archives, car il contient les symboles de débogage des apps que vous avez publiées.

Sur un Mac qui sert au développement iOS, ces dossiers atteignent couramment plusieurs dizaines de gigaoctets. Voici ce que contient chacun d’eux et la façon la plus propre de les supprimer. L’interface d’Xcode n’existant qu’en anglais, les noms de menus sont donnés tels quels.

Où Xcode range ses données

Presque tout se trouve dans ~/Library/Developer, dans votre dossier de départ. Les runtimes de simulateur font exception : ce sont des images disque système gérées par macOS.

Dossier Chemin Suppression sans risque ? Revient ?
DerivedData ~/Library/Developer/Xcode/DerivedData Oui Oui, au build suivant
Archives ~/Library/Developer/Xcode/Archives À vérifier Non
iOS DeviceSupport ~/Library/Developer/Xcode/iOS DeviceSupport Oui Oui, quand l’appareil est branché
Appareils simulés ~/Library/Developer/CoreSimulator/Devices Via simctl À recréer dans Xcode
Runtimes de simulateur /Library/Developer/CoreSimulator/Volumes Via simctl À retélécharger
Clones d’appareils de test ~/Library/Developer/XCTestDevices Oui Oui, lors des tests en parallèle
Aperçus SwiftUI ~/Library/Developer/Xcode/UserData/Previews Oui Oui, à l’affichage des aperçus
Caches du simulateur ~/Library/Developer/CoreSimulator/Caches Oui Oui
Caches d’Xcode ~/Library/Caches/com.apple.dt.Xcode Oui Oui

La même logique s’applique aux dossiers voisins watchOS DeviceSupport, tvOS DeviceSupport, visionOS DeviceSupport et macOS DeviceSupport.

Carte des dossiers de stockage d’Xcode dans ~/Library/Developer, avec les étiquettes « Sans risque » et « À vérifier »

DerivedData : sans risque, Xcode le reconstruit

DerivedData contient les produits de compilation intermédiaires, l’index du code source, les journaux de build et les caches de modules, avec un sous-dossier par projet. Le supprimer ne touche jamais à votre code. Le prix à payer, c’est du temps : le build suivant de chaque projet repart de zéro et Xcode réindexe le code avant que la complétion soit de nouveau pleinement disponible.

Quittez d’abord Xcode, puis placez le contenu dans la corbeille :

open ~/Library/Developer/Xcode/DerivedData

Pour nettoyer un seul projet, supprimez uniquement son sous-dossier (nommé d’après le projet, suivi d’un suffixe aléatoire). Product › Clean Build Folder dans Xcode supprime les produits de compilation mais laisse en général l’index en place : on récupère donc moins d’espace. Vous pouvez vérifier ou modifier l’emplacement dans Xcode › Settings › Locations.

Archives : gardez ce que vous avez publié

Chaque .xcarchive est une version signée créée avec Product › Archive, et elle contient les fichiers dSYM de l’app. Xcode s’en sert pour ajouter les noms de symboles aux rapports de plantage : sans le dSYM correspondant, un plantage de cette version n’affiche que des adresses mémoire au lieu des noms de fonctions. Les outils tiers de suivi des plantages ont besoin des mêmes fichiers.

Passez donc les archives en revue plutôt que de vider le dossier. Dans Window › Organizer › Archives, supprimez les versions que plus aucun utilisateur ne lance, comme d’anciennes versions de test internes. Pour les versions encore sur l’App Store ou dans TestFlight, gardez l’archive, ou copiez les paquets .xcarchive sur un disque externe avant de les retirer de votre Mac.

iOS DeviceSupport : sans risque, recopié au besoin

Quand vous branchez un iPhone, un iPad, une Apple Watch, une Apple TV ou un Vision Pro pour le développement, Xcode copie les symboles système de cet appareil afin de pouvoir déboguer et symboliser sur votre Mac. Les versions récentes d’Xcode nomment chaque dossier d’après le modèle, la version du système et le build, par exemple iPhone15,5 27.0.1 (24A446), et un seul dossier pèse souvent plusieurs gigaoctets.

Chaque mise à jour d’iOS sur chaque appareil que vous déboguez ajoute un nouveau dossier, et Xcode ne supprime jamais les anciens. Les dossiers des versions que vous n’utilisez plus peuvent aller à la corbeille sans risque. Si vous en supprimez un dont vous avez encore besoin, Xcode le recopie la prochaine fois que vous branchez l’appareil, ce qui prend quelques minutes.

Simulateurs : appareils et runtimes sont deux choses différentes

Un runtime de simulateur est une image système complète pour une version donnée, comme iOS 27.1, qui pèse en général 7 à 10 Go. Un appareil simulé est une petite configuration accompagnée de ses propres données : apps installées, photos et réglages. Plusieurs appareils peuvent partager un même runtime : supprimer un appareil libère ses données, supprimer un runtime libère la grosse image.

Schéma montrant un runtime de simulateur partagé par plusieurs appareils simulés, et la commande simctl qui supprime chacun

Supprimer des appareils simulés

Listez les appareils et supprimez ceux qui ne fonctionnent plus avec les runtimes installés :

xcrun simctl list devices
xcrun simctl delete unavailable

delete unavailable supprime les appareils que la version actuelle d’Xcode ne prend plus en charge, en général des restes d’anciens runtimes. Pour supprimer un appareil précis, passez son UDID tiré de la liste : xcrun simctl delete <UDID>. Vous pouvez aussi le faire dans Window › Devices and Simulators. Évitez xcrun simctl delete all, sauf si vous voulez vraiment supprimer tous les simulateurs et leurs données. La suppression d’un appareil est définitive ; vous pouvez en recréer un à tout moment dans Xcode.

Supprimer des runtimes de simulateur

xcrun simctl runtime list
xcrun simctl runtime delete <identifier>

runtime list affiche chaque image installée avec sa version, son identifiant et son état, ainsi que la taille totale. runtime delete prend l’identifiant (l’UUID affiché sur chaque ligne), puis démonte et supprime l’image. Depuis Xcode 27, delete accepte aussi --dry-run pour un aperçu, --notUsedSinceDays <days>, --unusable et --outdated. Les versions plus anciennes d’Xcode proposent moins d’options : exécutez xcrun simctl runtime pour voir celles que la vôtre accepte.

Dans Xcode, la même opération se fait dans Xcode › Settings › Components (Platforms dans Xcode 15) : sélectionnez un runtime et supprimez-le. Le guide d’Apple sur le téléchargement et l’installation de composants Xcode supplémentaires explique comment en récupérer un, y compris avec xcodebuild -downloadPlatform iOS dans Terminal.

Ne supprimez pas à la main les fichiers de runtime dans /Library/Developer/CoreSimulator/Volumes ou /System/Library/AssetsV2. Les versions récentes d’Xcode stockent les runtimes comme des ressources gérées par le système, et supprimer directement des fichiers peut laisser un runtime enregistré mais inutilisable.

Clones de test, aperçus et caches du simulateur

  • XCTestDevices : des clones créés par Xcode pour les tests en parallèle. Ils peuvent aller à la corbeille sans risque quand aucun test n’est en cours.
  • Aperçus SwiftUI : Xcode exécute les aperçus dans leur propre ensemble de simulateurs. xcrun simctl --set previews delete all les supprime ; Xcode les recrée au prochain aperçu.
  • Caches et journaux de CoreSimulator : ~/Library/Developer/CoreSimulator/Caches et ~/Library/Logs/CoreSimulator peuvent être vidés sans risque, l’app Simulator fermée.

Anciennes versions d’Xcode, toolchains et téléchargements

Chaque copie d’Xcode dans /Applications est une grosse app, et les versions bêta ou anciennes gardées pour un projet historique s’additionnent vite. Avant d’en supprimer une, vérifiez quelle version d’Xcode utilisent les outils en ligne de commande :

xcode-select -p

Gardez la copie vers laquelle pointe ce chemin, ainsi que toute version dont un job de CI ou un ancien projet a encore besoin. Regardez aussi dans ~/Downloads s’il reste des fichiers .xip : une fois Xcode installé, l’archive ne sert plus. Les toolchains Swift supplémentaires de swift.org se trouvent dans ~/Library/Developer/Toolchains ; gardez celles que vos projets sélectionnent.

~/Library/Caches/com.apple.dt.Xcode contient le cache propre à Xcode, reconstruit à la demande. Si vous utilisez Xcode depuis de nombreuses années, vous trouverez peut-être aussi dans ~/Library/Developer/Shared/Documentation/DocSets des jeux de documentation hors ligne téléchargés par de très anciennes versions d’Xcode ; les versions actuelles ne s’en servent plus.

Un ordre raisonnable

  1. Quittez Xcode et Simulator.
  2. Supprimez DerivedData, XCTestDevices et les simulateurs des aperçus. C’est sans risque.
  3. Exécutez xcrun simctl delete unavailable.
  4. Retirez les dossiers DeviceSupport et les runtimes de simulateur des versions que vous ne ciblez plus.
  5. Passez en revue les Archives et les anciennes copies d’Xcode en dernier, posément.

Videz ensuite la corbeille pour récupérer l’espace. Les dossiers sont les mêmes sous macOS 27 Golden Gate, 26 Tahoe, 15 Sequoia et 14 Sonoma ; les options de simctl disponibles dépendent de votre version d’Xcode.

Comment MoreRoom vous aide

La version gratuite de MoreRoom analyse ~/Library/Developer et reconnaît chacun de ces dossiers, avec un badge « Sans risque » ou « À vérifier » et l’indication de s’il reviendra. DerivedData, DeviceSupport, les clones de test et les caches partent à la corbeille un élément à la fois, avec Annuler. Pour les appareils et runtimes de simulateur, MoreRoom exécute les commandes d’Apple xcrun simctl delete et xcrun simctl runtime delete ; elles sont définitives et signalées comme telles. Les Archives sont marquées à conserver.

MoreRoom Pro ajoute le Collecteur, pour nettoyer plusieurs éléments d’un coup, le mode objectif, qui choisit la sélection la plus sûre pour l’espace dont vous avez besoin, et l’hibernation de projets pour les projets inactifs. Déplacer les archives vers un disque externe depuis MoreRoom arrive bientôt ; en attendant, copiez-les vous-même.

Questions fréquentes

Supprimer DerivedData peut-il casser mon projet Xcode ?

Non. DerivedData ne contient que des produits de compilation, des index et des journaux générés par Xcode. Votre code source et les réglages du projet se trouvent dans le dossier du projet. Le build et l’indexation suivants prennent simplement plus de temps, le temps qu’Xcode recrée ces données.

Peut-on supprimer les Archives d’Xcode ?

Seulement pour les versions que plus personne n’utilise. Chaque archive contient les fichiers dSYM qui transforment les adresses d’un rapport de plantage en noms de fonctions. Gardez les archives de chaque version encore entre les mains des utilisateurs, ou copiez-les d’abord sur un autre disque.

Pourquoi iOS DeviceSupport revient-il sans cesse ?

Xcode copie les symboles de débogage de chaque appareil que vous branchez pour le développement, une fois par modèle et par version du système. Si vous supprimez le dossier d’un appareil que vous utilisez encore, Xcode le recopie la prochaine fois que vous le branchez.

Puis-je simplement supprimer le dossier CoreSimulator ?

Mieux vaut éviter. Les appareils et runtimes de simulateur sont enregistrés auprès du service CoreSimulator, et les runtimes sont des images disque système montées. Utilisez xcrun simctl delete et xcrun simctl runtime delete, ou les réglages d’Xcode, pour que tout reste cohérent.

Comment récupérer un runtime de simulateur supprimé ?

Téléchargez-le de nouveau depuis Xcode › Settings › Components, ou exécutez xcodebuild -downloadPlatform iOS dans Terminal. Vous pouvez ensuite recréer les appareils simulés dans Window › Devices and Simulators.

Dossiers cités dans ce guide