écrits/blog/2026/06
Blog9 juin 2026·6 min

Apple Liquid Glass iOS 27 : Le Guide Complet pour les Développeurs

Maîtrisez Liquid Glass d'Apple dans iOS 27 — API SwiftUI glassEffect, UIGlassEffect pour UIKit, améliorations WWDC 2026 et étapes pratiques pour les développeurs.

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 View

Styles 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

  1. Lancez votre app sur la bêta iOS 27 — les composants système se mettent à jour automatiquement ; les implémentations personnalisées non.
  2. Recherchez UIBlurEffect dans votre codebase — ces instances doivent migrer vers UIGlassEffect.
  3. 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.
  4. Testez le curseur d'intensité — vérifiez que vos éléments de verre personnalisés répondent correctement quand l'utilisateur ajuste la transparence.
  5. Ajoutez des gardes d'accessibilité — encapsulez le verre personnalisé avec des vérifications accessibilityReduceTransparency avant 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.