Transition vers SwiftUI sur Airbnb

Transition vers SwiftUI sur Airbnb

En 2022, l’équipe iOS de Airbnb a décidé que SwiftUI était suffisamment mature pour être adopté pour son application officielle. Cela a nécessité une transition prudente, explique Bryn Bodayle, ingénieur du personnel d’Airbnb.

Les principaux avantages que les ingénieurs d’Airbnb ont vu dans SwiftUI étaient sa flexibilité et sa composabilité, sa nature déclarative, sa concision et son idiomaticité, qui, espéraient-ils, pourraient améliorer l’expérience des développeurs sans perdre en termes d’expérience utilisateur.

Pour rendre la transition aussi fluide que possible, ils ont conçu un plan en trois phases. Dans une première phase, ils se concentreraient sur la création d’une collection de composants réutilisables basés sur leurs composants existants. système de conception. Dans un deuxième temps, ils construiraient des écrans entiers combinant des composants de base. Dans la troisième et dernière phase, les écrans seraient regroupés en fonctionnalités complètes.

Avant de commencer les deux premières phases, les ingénieurs d’Airbnb ont mené un petit projet pilote parmi des ingénieurs qui se sont portés volontaires pour essayer SwiftUI afin de recueillir des commentaires et d’améliorer leur infrastructure dès le début.

Comme mentionné, la première étape consistait à reconstruire le système de conception existant à l’aide de SwiftUI sur la base d’une série de protocoles de style qui pouvaient être instanciés et transmis aux vues à l’aide de modificateurs de vue. Cela a fourni les bases permettant aux développeurs de personnaliser facilement les composants de l’interface utilisateur avec quelques lignes de code.

La deuxième étape clé consistait à créer une infrastructure permettant un pontage bidirectionnel entre les vues Epoxy basées sur UIKit et les vues SwiftUI. Les détails de la façon dont ce pont a été construit peuvent être trouvés dans l’article original. Il suffit de dire ici que ce pont était basé sur UIHostingViewController pour intégrer une hiérarchie SwiftUI dans un contrôleur de vue et UIViewRepresentable pour intégrer une vue UIKit dans une hiérarchie SwiftUI.

Une autre décision fondamentale prise par les ingénieurs d’Airbnb a été d’adapter le flux de données unidirectionnel d’Epoxy à SwiftUI, en adoptant ObservableOject comme magasin d’angle de leurs classes d’état pour déclencher le nouveau rendu SwiftUI pour chaque changement d’état.

Nous avons constaté que les ingénieurs préféraient continuer à créer des écrans dans SwiftUI en utilisant cette approche, car elle permet de séparer la logique de mutation métier et étatique de la logique de présentation.

La testabilité figurait également en bonne place sur la liste des priorités d’Airbnb. Leur nouvelle implémentation de SwiftUI devait bien correspondre à leur test d’instantané approche. Pour rendre cela possible, ils ont attribué un nom à chaque variante de vue qu’ils ont définie, à utiliser avec leur service de test d’instantanés et ont conformé toutes les variantes de vue aux spécifications de Xcode. Protocole PreviewProvider pour activer l’utilisation des aperçus Xcode. De plus, ils ont intégré VoirInspecteur soutenir style comportemental essais. ViewInspector permet de parcourir une hiérarchie de vues au moment de l’exécution et de fournir un accès direct au sous-jacent View structures, rendant ainsi leur état interne inspectable et permettant de simuler l’interaction de l’utilisateur par programme.

Avec tout cela en place, explique Bodayle, les ingénieurs d’Airbnb ont pu réduire d’environ un sixième le nombre de lignes de code par rapport à l’implémentation d’UIKit, sans subir de perte de performances significative liée à la nature réactive de SwiftUI, à l’exception d’une petite surcharge lorsque instanciation UIHostingController.

L’adoption de SwiftUI par Airbnb va bien plus loin que ce qui peut être résumé ici, alors ne manquez pas l’article original pour plus de détails et quelques extraits de code utiles.

2023-10-02 12:00:52
1696238018


#Transition #vers #SwiftUI #sur #Airbnb

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.