Le langage de design Liquid Glass d'Apple est arrivé avec iOS 26 et a bouleversé le développement d'applications. Après la clôture de la WWDC 2026, iOS 27 apporte une version affinée que les développeurs ne peuvent plus reporter — Xcode 27 désactivera les flags de report, rendant l'adoption de Liquid Glass obligatoire pour les apps ciblant le dernier SDK.
Ce guide couvre tout ce dont vous avez besoin : les nouvelles API, ce qui a changé dans iOS 27, et exactement comment adopter Liquid Glass sans casser votre interface existante.
Qu'est-ce que Liquid Glass ?
Liquid Glass est la couche de rendu nouvelle génération d'Apple qui remplace la translucidité plate par une technologie de lentilles propulsée par Metal. Plutôt que de flouter les arrière-plans (l'ancienne approche UIBlurEffect), elle courbe et concentre la lumière à travers le matériau — comparable à une loupe physique pressée contre des couches de contenu.
Sous le capot, le système met en cache les arrière-plans statiques pour éviter la dégradation du débit d'images, applique une réfraction en temps réel, et permet aux formes de verre de fusionner et se morphoser physiquement à proximité.
Le résultat visuel : une barre de navigation qui flotte au-dessus du contenu avec de la profondeur, pas seulement de l'opacité.
Ce qui a changé dans iOS 27
Apple a profité de la WWDC 2026 pour répondre aux critiques les plus fréquentes des développeurs et utilisateurs depuis iOS 26 :
1. Curseur d'intensité
Les utilisateurs disposent désormais d'un contrôle système pour l'opacité de Liquid Glass — de transparent à complètement teinté. C'est un curseur gradué, pas le simple on/off d'avant. Les apps utilisant les API système l'obtiennent automatiquement ; les implémentations personnalisées nécessitent une révision manuelle pour s'assurer qu'elles respectent la préférence utilisateur.
2. Réintégration de la recherche dans la barre d'onglets
Les boutons de recherche reviennent dans la barre d'onglets des apps système (Musique, TV, Podcasts, Actualités, Santé). Si votre app avait contourné la suppression du bouton de recherche d'iOS 26, vous devrez auditer ces composants.
3. Améliorations de l'accessibilité
Les échecs de contraste et de lisibilité documentés dans iOS 26 ont été corrigés avec une meilleure diffusion en arrière-plan. Apple "met à jour les fondations de la construction du Liquid Glass pour garantir une lisibilité exceptionnelle."
L'API SwiftUI
Usage de base : .glassEffect()
Le chemin d'adoption le plus simple est le modificateur .glassEffect() :
Text("Bonjour, Liquid Glass !")
.padding()
.glassEffect()La signature complète supporte la personnalisation de forme et le contrôle conditionnel :
func glassEffect<S: Shape>(
_ glass: Glass = .regular,
in shape: S = DefaultGlassEffectShape,
isEnabled: Bool = true
) -> some ViewStyles disponibles : .regular, .clear, .identity
Éléments interactifs
Utilisez .interactive() pour les surfaces tactiles — il ajoute des effets de mise à l'échelle, rebond et scintillement au toucher :
Button {
saveDocument()
} label: {
Text("Enregistrer")
.padding()
.foregroundStyle(.white)
}
.glassEffect(.regular.tint(.blue).interactive())GlassEffectContainer
Enveloppez les éléments liés dans un GlassEffectContainer pour activer le morphing. Le paramètre spacing contrôle le seuil de fusion — les éléments plus proches que cette distance fusionnent physiquement en une seule forme de verre :
GlassEffectContainer(spacing: 20) {
HStack(spacing: 16) {
Button("Accueil") { }.padding().glassEffect()
Button("Paramètres") { }.padding().glassEffect()
Button("Profil") { }.padding().glassEffect()
}
}Morphing fluide avec .glassEffectID
Combinez @Namespace avec .glassEffectID pour des transitions cinématiques :
struct ToolbarView: View {
@State private var isExpanded = false
@Namespace private var namespace
var body: some View {
GlassEffectContainer(spacing: 40) {
HStack(spacing: 40) {
Image(systemName: "pencil")
.frame(width: 80, height: 80)
.glassEffect()
.glassEffectID("pencil", in: namespace)
if isExpanded {
Image(systemName: "eraser.fill")
.frame(width: 80, height: 80)
.glassEffect()
.glassEffectID("eraser", in: namespace)
}
}
}
Button("Basculer") {
withAnimation { isExpanded.toggle() }
}
}
}Quand isExpanded change, la forme de verre se morphose fluidement entre les états plutôt que d'apparaître ou disparaître simplement.
L'API UIKit
Pour les apps UIKit, Liquid Glass est exposé via UIGlassEffect encapsulé dans UIVisualEffectView :
let glassView = UIVisualEffectView()
let effect = UIGlassEffect()
UIView.animate(withDuration: 0.3) {
glassView.effect = effect
}Ceci utilise une animation materialize — le verre apparaît avec un scintillement caractéristique plutôt qu'un simple fondu.
Note critique pour les bases de code mixtes : UIGlassEffect et .glassEffect() de SwiftUI ne synchronisent pas automatiquement leur identité visuelle. Si votre app s'étend sur les deux frameworks, auditez les limites des GlassEffectContainer pour garantir un comportement de morphing cohérent entre les deux.
Accessibilité
Le curseur d'intensité aide au niveau système, mais vous devez toujours respecter les préférences dans le code :
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
@Environment(\.accessibilityReduceMotion) var reduceMotion
var body: some View {
Text("Contenu")
.padding()
.glassEffect(reduceTransparency ? .identity : .regular)
}.identity rend une surface complètement opaque — ni verre, ni transparence. Cela satisfait les exigences d'accessibilité à fort contraste.
Quand utiliser Liquid Glass (et quand ne pas le faire)
Les Human Interface Guidelines d'Apple sont claires : Liquid Glass appartient à la couche de navigation, pas à la couche de contenu.
Utilisez-le pour :
- Barres de navigation et barres d'onglets
- Barres d'outils flottantes et contrôles
- Feuilles d'actions et menus
- Superpositions qui flottent au-dessus du contenu principal
Évitez-le pour :
- Cellules de listes et tableaux
- Arrière-plans plein écran
- Zones de contenu défilables
- Couches de verre empilées (crée une profondeur illisible)
- Tout ce qui nécessite une lisibilité claire du texte
La règle d'or : le verre encadre le contenu, il ne le remplace pas.
Tester sur du matériel réel
Ne vous fiez pas au Simulateur pour Liquid Glass. Les reflets spéculaires, la réponse au mouvement et le comportement des lentilles ne s'affichent tout simplement pas correctement dans le Simulateur iOS. Testez chaque interaction de verre sur un vrai appareil — minimum iPhone 12 pour les garanties de performances Metal.
Portez une attention particulière à :
- Les arrière-plans dynamiques (Live Photos, vidéos) comme contenu derrière le verre
- Les transitions rapides avec
.glassEffectID - Le rendu en mode sombre des variantes de verre teintées
- Le comportement en mode économie d'énergie
Plan d'action pour iOS 27
- Lancez votre app sur la bêta iOS 27 — les composants système se mettent à jour automatiquement ; les implémentations personnalisées non.
- Recherchez
UIBlurEffectdans votre codebase — ces instances doivent migrer versUIGlassEffect. - Auditez les implémentations de barre d'onglets — si vous avez contourné le bouton de recherche manquant d'iOS 26, vous devrez peut-être annuler ces changements.
- Testez le curseur d'intensité — vérifiez que vos éléments de verre personnalisés répondent correctement quand l'utilisateur ajuste la transparence.
- Ajoutez des gardes d'accessibilité — encapsulez le verre personnalisé avec des vérifications
accessibilityReduceTransparencyavant que Xcode 27 ne désactive les flags de report.
Conclusion
Liquid Glass n'est plus optionnel. Avec iOS 27 qui résout les problèmes de contraste et d'utilisabilité de la première année, Apple resserre le contrat de design : les apps qui veulent paraître natives doivent l'adopter. La bonne nouvelle est que l'API SwiftUI est véritablement élégante — GlassEffectContainer gère les parties difficiles, et .glassEffectID offre des animations de morphing qui nécessiteraient des centaines de lignes à construire from scratch.
Commencez par votre barre de navigation, testez sur de vrais appareils, et respectez le curseur d'intensité. C'est le chemin vers une implémentation Liquid Glass qui se sent chez elle sur iOS 27.