TL;DR
- Apple repart de zero sur le design : Liquid Glass remplace le flat design sur tous les OS. Les apps tierces doivent s'adapter.
- iOS, macOS, watchOS, tvOS passent tous a la version 26. Fin des numerotations separees.
- Le framework Foundation Models permet de faire tourner des LLM directement sur l'appareil, sans serveur, sans API.
- Swift 6.2 ameliore la concurrence stricte et facilite la migration depuis Swift 5.
- Xcode integre un assistant IA pour le code. Completion, refactoring, generation de tests.
Le plus gros changement visuel depuis iOS 7
WWDC 2025 restera dans les memoires comme l'annee ou Apple a tout refondu visuellement. Liquid Glass n'est pas un ajustement cosmetique -- c'est une refonte complete du langage visuel d'Apple, la plus importante depuis le passage au flat design sous iOS 7 en 2013.
Pour les devs, ca veut dire une chose : ton app va avoir l'air datee si tu ne t'adaptes pas. Mais avant de paniquer, decomposons ce qui change concretement.
La renumerotation : tout passe a 26
Premier changement structurel : Apple unifie les numeros de version. iOS 19 devient iOS 26, macOS 16 devient macOS 26, watchOS 12 devient watchOS 26. Tous les OS partagent desormais le meme numero de version.
C'est un changement purement organisationnel, mais il simplifie la communication et le ciblage. Plus besoin de se rappeler que iOS 18 correspond a macOS 15. Desormais, si tu cibles la version 26, c'est la version 26 partout.
Pour le code, ca change les availability checks :
// Avant
if #available(iOS 18, macOS 15, *) { ... }
// Maintenant
if #available(iOS 26, macOS 26, *) { ... }
Liquid Glass : ce qui change pour les devs
Liquid Glass est un nouveau materiau visuel. Les barres de navigation, les tab bars, les toolbars, les sidebars -- tout devient translucide avec un effet de verre depoli qui reagit au contenu en arriere-plan. Les couleurs du contenu sous-jacent influencent la teinte du verre.
Concretement, si tu utilises les composants SwiftUI standard (NavigationStack, TabView, .toolbar), tu obtiens Liquid Glass automatiquement. Apple a fait le travail pour que les apps qui suivent les conventions HIG heritent du nouveau design sans modifier une ligne de code.
Le probleme arrive quand tu as personnalise tes composants. Si tu as un NavigationBar custom avec des couleurs en dur, un fond opaque, ou des overlays maison, ca va entrer en conflit avec Liquid Glass. Il faudra revoir ces personnalisations.
// SwiftUI standard : Liquid Glass automatique
NavigationStack {
List {
ForEach(items) { item in
NavigationLink(item.title) {
DetailView(item: item)
}
}
}
.navigationTitle("Projets")
}
// UIKit : adopter les nouveaux styles
navigationController?.navigationBar.prefersLargeTitle = true
// Liquid Glass s'applique automatiquement si tu ne forces pas
// un barTintColor ou backgroundColor personnalisé
Les points cles pour les devs :
- Ne force pas de couleurs de fond. Laisse le systeme gerer la translucidite.
- Teste sur un fond colore. Liquid Glass reagit au contenu en dessous -- teste avec des images, des gradients, du texte dense.
- Les icones SF Symbols restent le standard. Apple a mis a jour la bibliotheque avec des variantes optimisees pour Liquid Glass.
- Les contrastes changent. Verifie que ton texte reste lisible sur les surfaces translucides.
Foundation Models : l'IA on-device pour tous
C'est le changement le plus strategique pour les developpeurs. Apple introduit le framework Foundation Models, qui permet d'executer des modeles de langage directement sur l'appareil, sans connexion reseau, sans API, sans couts de serveur.
Le modele embarque est optimise pour les appareils Apple (Neural Engine, GPU metal). Il ne rivalise pas avec GPT-4 ou Claude sur les taches complexes, mais il est parfaitement capable de :
- Resumer du texte
- Classifier du contenu
- Extraire des entites nommees
- Generer des reponses courtes
- Transformer du texte (correction, reformulation)
import FoundationModels
// Créer une session avec le modèle on-device
let session = LanguageModelSession()
// Génération simple
let response = try await session.respond(to: "Résume ce texte en une phrase : ...")
print(response.content) // Le résumé généré localement
// Génération structurée avec un type Swift
@Generable
struct RecipeSummary {
var title: String
var cookingTime: Duration
var difficulty: String
}
let summary: RecipeSummary = try await session.respond(
to: "Analyse cette recette et extrais les informations clés : ...",
generating: RecipeSummary.self
)
L'aspect le plus interessant est la generation structuree. Tu peux definir un type Swift avec le macro @Generable et le modele retourne directement une instance de ce type. Pas de parsing JSON, pas de validation manuelle. Le modele genere du Swift type-safe.
Les limites : le modele on-device a un contexte limite, il n'a pas de connaissances recentes, et il n'est pas adapte aux taches complexes de raisonnement. Pour ca, Apple Intelligence route vers les serveurs Private Cloud Compute. Mais pour tout ce qui peut rester sur l'appareil, ca reste sur l'appareil.
Pour les devs d'apps, c'est un game changer. Tu peux ajouter de l'IA dans ton app sans infrastructure serveur, sans couts API, et avec une latence quasi nulle. Et surtout, les donnees de l'utilisateur ne quittent jamais l'appareil.
Swift 6.2 : la concurrence devient utilisable
Swift 6 avait introduit la concurrence stricte, et ca a ete douloureux. Des warnings partout, des erreurs de compilation incomprehensibles, et une courbe d'apprentissage brutale. Swift 6.2 corrige le tir.
Les changements majeurs :
Inference @MainActor amelioree. Le compilateur est maintenant plus intelligent pour deduire quand du code doit tourner sur le main thread. Moins de @MainActor explicites a ajouter partout.
Default actor isolation. Tu peux configurer un module entier pour qu'il soit @MainActor par defaut. Pour une app SwiftUI ou 90% du code touche l'UI, ca elimine des centaines de annotations manuelles.
// swift-settings dans Package.swift
.swiftSettings([
.defaultIsolation(MainActor.self)
])
// Avant Swift 6.2 : annotations partout
@MainActor
class ViewModel: ObservableObject {
@MainActor
func loadData() async { ... }
}
// Swift 6.2 : le module est @MainActor par défaut
class ViewModel: ObservableObject {
func loadData() async { ... } // MainActor implicite
nonisolated func parseJSON(_ data: Data) -> Model { ... } // Opt-out explicite
}
Migration facilitee. Un nouveau mode UpcomingFeature permet d'activer les checks de concurrence un par un au lieu du tout-ou-rien de Swift 6. Ca rend la migration depuis Swift 5 beaucoup plus progressive.
SwiftUI : scene bridging et Custom Controls
Deux ajouts majeurs pour SwiftUI cette annee.
Scene Bridging. Tu peux maintenant integrer du contenu UIKit ou AppKit directement dans une scene SwiftUI, et inversement. Pour les apps qui ont un codebase mixte (ce qui est le cas de la majorite des apps professionnelles), c'est une liberation. Plus besoin de UIViewRepresentable bricolages pour chaque composant UIKit.
// Intégrer une UIViewController dans une scène SwiftUI
WindowGroup {
SceneBridge {
MyLegacyViewController()
}
}
// Intégrer une vue SwiftUI dans une scène UIKit
let hostingScene = UIHostingScene {
ModernSwiftUIView()
}
Custom Controls. SwiftUI permet enfin de creer des controles personnalises qui se comportent comme des controles systeme -- avec le support de l'accessibilite, du Dynamic Type, et de Liquid Glass automatiquement. Plus besoin de recreer ces comportements a la main.
Xcode : l'IA dans l'IDE
Apple n'a pas ignore la tendance des assistants de code. Xcode integre desormais un assistant IA nourri par les modeles Apple Intelligence :
- Completion contextuelle. Plus intelligente que l'ancienne completion, elle comprend le contexte du projet et propose des blocs de code complets.
- Refactoring assiste. Selectionne du code, decris ce que tu veux changer, et l'assistant propose un refactoring.
- Generation de tests. Pointe une fonction, demande des tests, et l'assistant genere des cas de test pertinents.
- Explication de code. Selectionne du code inconnu et obtiens une explication en langage naturel.
C'est clairement une reponse a Cursor et aux autres IDE augmentes par l'IA. Apple a l'avantage de l'integration native avec le compilateur Swift, ce qui devrait donner de meilleures suggestions que les outils generiques.
Reste a voir si la qualite est au niveau en pratique. Les demos sont toujours impressionnantes. L'usage quotidien, c'est une autre histoire.
Ce que ca change pour les devs macOS/iOS
Si tu developpes des apps Apple, voici les priorites :
- Teste Liquid Glass. Lance ton app sur le simulateur iOS 26 et verifie que rien ne casse. Les composants standard s'adaptent, les personnalisations non.
- Migre vers Swift 6.2. Le mode de migration progressive rend la transition beaucoup moins douloureuse. C'est le moment.
- Explore Foundation Models. Si ton app fait de la classification, du resume ou de l'extraction d'entites, tu peux remplacer un appel API par du on-device.
- Adopte les Custom Controls. Si tu as des composants UI custom, regarde si les nouveaux Custom Controls SwiftUI couvrent ton besoin.
- Attend avant d'adopter Xcode AI. Teste, mais ne change pas ton workflow du jour au lendemain. Laisse l'outil murir.
La WWDC 2025 est dense. Mais le message est clair : Apple investit massivement dans l'IA on-device et dans la modernisation de ses frameworks. Pour les devs qui suivent le mouvement, c'est un excellent cru.
Ressources
- Apple Developer - WWDC 2025 -- toutes les sessions video et la documentation
- Foundation Models Framework -- documentation officielle du framework IA on-device
- What's new in SwiftUI - WWDC25 -- session officielle sur les nouveautes SwiftUI
- Swift 6.2 Release Notes -- notes de version et guide de migration
- Liquid Glass Human Interface Guidelines -- les nouvelles guidelines de design Apple