# Le secret que les devs iOS ne veulent pas partager

Vous pensez que Xcode est incontournable pour développer en Swift ? Détrompez-vous. Il existe une alternative qui change la donne : **Cursor**.

Basé sur VSCode, Cursor est un éditeur de code intelligent qui surpasse Xcode sur de nombreux points : plus rapide, plus fluide et surtout **boosté à l’IA**. En le combinant avec Xcode, vous obtenez un environnement de développement Swift optimal, et bien plus performant.

Ce guide vous explique **comment configurer Cursor** pour vous **affranchir en grande partie de Xcode**. Une fois adopté, vous aurez du mal à faire marche arrière 😉

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984237098/51696a54-e27b-41a3-8402-04f95c54982c.png align="center")

<div data-node-type="callout">
<div data-node-type="callout-emoji">🤯</div>
<div data-node-type="callout-text">Ne vous y trompez pas, cette capture d’écran a bien été réalisée avec Cursor !</div>
</div>

---

# **Pourquoi combiner Cursor et Xcode ?**

Xcode est l’outil officiel d’Apple, mais il traîne des défauts bien connus : lourdeur, manque de personnalisation et performances parfois frustrantes. Cursor propose **une alternative moderne et intelligente**, tout en restant parfaitement **compatible avec l’écosystème Apple** grâce à ses nombreuses extensions.

Voici pourquoi de plus en plus de développeurs Swift l’adoptent :

* **Un éditeur léger et modulable** basé sur VSCode, loin de la rigidité de Xcode.
    
* **Une assistance IA intégrée** pour coder plus vite et avec moins d’erreurs.
    
* **Des performances supérieures**, notamment sur les projets volumineux.
    
* **Un écosystème d’extensions puissant**, conçu pour améliorer votre productivité en Swift.
    

En combinant Cursor avec Xcode, vous obtenez **le meilleur des deux mondes** : la puissance du compilateur Apple, sans les contraintes de son éditeur.

---

# **Configuration étape par étape**

## **1\. 💾 Installation de Cursor**

Commencez par installer [Cursor depuis le site officiel](https://www.cursor.com/)

<div data-node-type="callout">
<div data-node-type="callout-emoji">🕵</div>
<div data-node-type="callout-text"><strong>Important : </strong>Activez le mode de confidentialité dans <code>Préférences &gt; Cursor Settings</code> pour protéger vos données de code.</div>
</div>

Cette étape est cruciale pour les développeurs travaillant sur des projets sensibles ou propriétaires.

![Privacy mode](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984436334/90bca169-c423-4d61-a04b-1bd5d7aff24f.png align="center")

## **2\. 💾 Installation de xcodebuild**

En utilisant **Cursor**, vous ne pourrez plus compter sur Xcode pour compiler directement vos projets. Mais pas de panique : **xcodebuild**, l’outil en ligne de commande intégré à Xcode, prend le relais. Il vous permettra de compiler, tester et générer vos builds sans passer par l’interface graphique d’Xcode

```bash
xcode-select --install
```

## **3\. 💾 Installation de xcode-build-server**

Le [serveur de compilation Xcode](https://github.com/SolaWing/xcode-build-server) joue un rôle clé dans l’activation de fonctionnalités avancées permettant d’améliorer la navigation dans le code telles que l’**indexation du code** ou le **"saut vers la référence"** (jump to reference). Il agit comme un pont entre Cursor et l’infrastructure de compilation d’Xcode, permettant à Cursor d’accéder aux métadonnées du projet.

```bash
brew install xcode-build-server
```

**⚙ Configuration de xcode-build-server**

Ouvrez le terminal dans Cursor avec `Cmd + Maj + P` puis exécutez la commande suivante :

```bash
> Build server config
```

En suivant les instructions, vous générerez un fichier de configuration `buildServer.json` à la racine de votre app. N’hésitez pas à y jeter un coup d’œil pour vérifier les paramètres du build, comprendre comment Cursor communique avec Xcode et ajuster la configuration si nécessaire.

## **4\. 💾 Installation des extensions essentielles**

Pour finaliser la transformation de **Cursor** en un véritable environnement de développement Swift, voici quelques extensions indispensables qui doivent être ajoutées directement depuis Cursor.

### **Extension Swift**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=swiftlang.swift-vscode) permet la reconnaissance du langage Swift, l'autocomplétion et la coloration syntaxique.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984458543/1cc892e6-f696-4cad-b744-aff155abe7a8.png align="center")

### **Extension SweetPad**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=sweetpad.sweetpad) transforme Cursor en un environnement de développement complet avec compilation intégrée, débogueur et gestion de projets Xcode

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984466146/93c6eb5c-208d-4d2a-b38c-2df896c703a9.png align="center")

### **Extension SwiftFormat**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=vknabel.vscode-swiftformat) active le formatage automatique du code Swift selon les règles de style définies.

<div data-node-type="callout">
<div data-node-type="callout-emoji">🤝</div>
<div data-node-type="callout-text">Sur les projets partagés, assurez-vous que tous les développeurs utilisent les mêmes règles de formatage pour éviter les conflits lors des commits.</div>
</div>

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984478849/5ffc8391-9f09-4770-956a-b48572655745.png align="center")

### **Extension CodeLLDB**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb&ssr=false#review-details) permet de déboguer votre app en utilisant les commandes habituelles (po, e, etc..) son utilisation est décrite plus bas

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984515611/3e3f6b49-4f26-4082-89ef-a80cea5d0a56.png align="center")

### **Extension ErrorLens**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens&ssr=false) met en évidence les erreurs et avertissements **directement dans l’éditeur**, tout comme le fait Live Issues dans Xcode

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1740039071173/888f16ff-af20-497b-9829-06ebc07e12e8.png align="center")

### **Extension de thème Xcode**

[Cette extension](https://marketplace.visualstudio.com/items?itemName=MateoCERQUETELLA.xcode-12-theme) reproduit l'apparence familière de Xcode dans Cursor pour une transition en douceur.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984523100/efd96672-66b2-45be-b789-a11ae35588b3.png align="center")

### **Extension xcbeautify**

[Cette librairie](https://github.com/cpisciotta/xcbeautify) qui n’est pas une extension de Cursor à proprement parler, formate les sorties verbeuses de xcodebuild en un format clair et coloré, rendant le débogage beaucoup plus simple.

```bash
brew install xcbeautify
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739984533352/7e5727fd-3a40-4227-aa91-fea894296441.png align="center")

---

# **🏃‍♂️ Compiler votre projet**

Pour lancer votre application sur un simulateur ou un appareil physique :

1. Utilisez le raccourci `Cmd + Maj + P` dans Cursor
    
2. Tapez la commande build & run dans le terminal contextuel
    

```bash
> build & run
```

Sélectionnez ensuite la cible (target) lorsque demandée et votre app compilera naturellement !

---

# **Astuces avancées et bonnes pratiques**

### **🎯  Sélection de target, d'environnement, d’appareil physique ou de simulateur**

Pour modifier la cible (target) ou l'environnement de build :

1. Ouvrez la palette de commandes avec `Cmd + Maj + P`
    
2. Tapez "`set scheme`" pour changer de scheme
    
3. Tapez "`select build configuration`" pour basculer entre Debug/Release
    
4. Tapez "`select destination`" pour choisir un appareil spécifique
    

### **🧹  Optimisations de performance**

1. **Indexation intelligente**
    
    * Ajoutez les dossiers volumineux comme Pods ou Carthage à .`cursorignore`
        
    * Cela accélère considérablement l'indexation et les recherches
        
2. **Gestion de la mémoire**
    
    * Fermez les fichiers non utilisés via `Cmd + W`
        
    * Pensez à supprimer vos Derived Datas périodiquement, notamment en cas de problème que vous n’arrivez pas à résoudre
        

### **🐞  Débogage**

Pour debugguer votre app, vous utiliserez l’extension CodeLLDB dans Cursor, elle vous permettra d’utiliser les commandes classiques de LLDB et les breakpoints

* Ajoutez l'extension CodeLLDB dans Cursor (voir plus haut)
    
* Lancez `cmd + maj + P` `Debug select and start debugging` pour lancer le débogueur
    
* Utilisez `po` pour inspecter les objets pendant le débogage
    

### **🧠  Intelligence Artificielle**

Pour obtenir l’aide de l’IA sur une ligne spécifique :

1. Placez le curseur sur la ligne concernée
    
2. Utilisez `Cmd + K` pour ouvrir le compositeur IA
    

Pour obtenir l'aide de l’IA globalement sur votre projet :

1. Utilisez `Cmd + Maj + K` pour ouvrir le compositeur IA en mode **Agent**
    

Pensez également à renseigner des cursorRules pour l’IA dans vos settings Xcode. Plusieurs modèles sont [déjà disponibles sur internet](https://cursor.directory/swiftui-swift-simple-developer-cursor-rules), n’hésitez pas à vous en inspirer

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1740039758963/e7dc5761-1aa2-4e1b-957d-aa8063146fe2.png align="center")

---

# Inconvénients connus

## **❌ Gestion des XCAssets**

Cursor ne gère pas correctement les **XCAssets**, rendant l’édition des fichiers **Contents.json** fastidieuse.

**Solution**: Gardez Xcode ouvert et basculez avec `CMD + Tab` lorsque vous devez modifier des assets.

## **❌  Preview SwiftUI**

Les previews SwiftUI ne sont pas disponibles dans Cursor. Il est nécessaire de conserver Xcode ouvert en parallèle pour bénéficier des previews en temps réel.

## **❌  Interface Builder**

Cursor ne propose pas à ce jour d’extension permettant d'utiliser l'Interface Builder pour les fichiers XIB/Storyboard. Si vous pouvez toujours utiliser Xcode pour le faire, c’est peut-être également le bon moment pour passer à autre chose en privilégiant à snapKit ou swiftUI. Vos reviewers n’en seront que plus heureux !

## **❌**  Analyse avancée

Cursor ne propose pas d'Instruments ou d'autres outils d'analyse de performance (CPU, mémoire, réseau) tels que Xcode, il vous faudra donc basculer sur Xcode pour ces phases d’analyses de performances / débogage

## **❌**  Documentation Apple

Cursor ne permet pas d’ouvrir rapidement la documentation Apple via des hyperliens comme Xcode, vous aurez néanmoins accès à la codeBase Apple elle-même documentée.

## **❌**  SPM & configuration

Cursor ne permet pas facilement d’ajouter des packages spm, de même l’interface de configuration des targets de Xcode est manquante. À moins que vous n’ayez le courage de faire vos modifications et ajouts en textuel dans le pbxproj, utiliser Xcode pour cette étape semble plus raisonnable à l’heure actuelle

# **Conclusion**

Avec ce guide, vous avez désormais entre les mains **un environnement Swift optimisé**, alliant la puissance du compilateur Xcode et la flexibilité de Cursor. Cette combinaison vous permet de **gagner en fluidité, en rapidité et en confort**, sans renoncer aux outils d’Apple.

Vous l’aurez compris, **Cursor ne remplace pas encore Xcode sur tous les aspects** du développement, mais il le transforme en un véritable espace de travail moderne et performant dont **les avantages surpassent les inconvénients**. Une fois adopté, il sera difficile de revenir en arrière.

Si vous souhaitez approfondir, voici une sélection d’articles de qualité sur ce sujet :

[https://levelup.gitconnected.com/working-on-an-xcode-project-with-cursor-vscode-56c20fce94ac](https://levelup.gitconnected.com/working-on-an-xcode-project-with-cursor-vscode-56c20fce94ac)

[https://kazaimazai.com/cursor-for-ios-development-installation-guide/](https://kazaimazai.com/cursor-for-ios-development-installation-guide/)

[https://kazaimazai.com/personal-experience-of-using-cursor-for-ios-development/](https://kazaimazai.com/personal-experience-of-using-cursor-for-ios-development/)

[https://medium.com/@ahmedsulaiman/debugging-swift-code-with-lldb-b30c5cf2fd49](https://medium.com/@ahmedsulaiman/debugging-swift-code-with-lldb-b30c5cf2fd49)

[https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941](https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941)
