Depuis son introduction en 2019, SwiftUI a considérablement évolué. Avec iOS 18 et les améliorations continues d'Apple, la question du choix entre SwiftUI et UIKit se pose différemment aujourd'hui. Voici une analyse basée sur mon expérience de développement iOS.
L'état de SwiftUI en 2025
SwiftUI a parcouru un long chemin. Les problèmes de performance qui existaient dans les premières versions sont largement résolus. Le framework gère désormais efficacement les listes complexes avec LazyVStack et LazyHStack, et l'intégration avec UIKit est fluide via UIViewRepresentable.
iOS 18 a introduit de nouvelles APIs comme les améliorations de NavigationStack, les contrôles personnalisables du Control Center, et une meilleure gestion des animations avec les nouvelles APIs de transition.
Le principal avantage reste la productivité : moins de code boilerplate, preview en temps réel, et une syntaxe déclarative qui rend le code plus lisible et maintenable.
Quand choisir SwiftUI
SwiftUI est le choix idéal pour les nouveaux projets ciblant iOS 16+. La courbe d'apprentissage est plus douce pour les nouveaux développeurs, et la maintenance du code est simplifiée.
Pour les apps avec des interfaces utilisateur dynamiques et des animations complexes, SwiftUI excelle. Les animations implicites et explicites sont intuitives à implémenter.
Les apps multiplateformes (iOS, macOS, watchOS, tvOS) bénéficient énormément de SwiftUI grâce au partage de code facilité.
struct ContentView: View {
@State private var isAnimating = false
var body: some View {
VStack {
Image(systemName: "star.fill")
.scaleEffect(isAnimating ? 1.5 : 1.0)
.animation(.spring(duration: 0.5), value: isAnimating)
}
.onTapGesture { isAnimating.toggle() }
}
}Quand UIKit reste pertinent
Pour les apps nécessitant un support iOS 13-15, UIKit reste incontournable. Certaines fonctionnalités avancées comme les collection views avec layouts personnalisés complexes sont encore plus flexibles en UIKit.
Les projets existants avec une large base de code UIKit ne devraient pas migrer précipitamment. Une approche progressive, en intégrant SwiftUI pour les nouvelles fonctionnalités, est plus pragmatique.
Certains composants système comme UIDocumentPickerViewController ou certaines APIs de CoreData sont plus simples à utiliser directement en UIKit.
Stratégie de migration progressive
La meilleure approche consiste à utiliser UIHostingController pour intégrer des vues SwiftUI dans une app UIKit existante. Cela permet de bénéficier des avantages de SwiftUI sans réécrire l'ensemble de l'application.
Commencez par les écrans les plus simples : paramètres, profils utilisateur, formulaires. Ces interfaces bénéficient immédiatement de la concision de SwiftUI.
Évitez de migrer les écrans avec des interactions complexes ou des performances critiques jusqu'à ce que vous maîtrisiez les patterns SwiftUI.
Conclusion
En 2025, SwiftUI est suffisamment mature pour être le choix par défaut des nouveaux projets iOS. Pour les apps existantes, une migration progressive reste la stratégie la plus sage. L'important est de choisir l'outil adapté à chaque situation plutôt que de suivre aveuglément les tendances.