RSS Etsy Engineering | Code as Craft

Comment nous avons créé l'onglet 'Deals' dans Swift UI

Follow
En juillet 2023, l'équipe des mises à jour de l'application Etsy a entrepris de transformer le flux de mises à jour en "Deals", un hub pour les coupons et les ventes. L'équipe a considéré le développement d'un nouveau onglet à partir de zéro en utilisant des technologies modernes telles que Swift UI et Tuist. En équilibrant l'ambition avec le réalisme, l'équipe a adopté une approche hybride, en utilisant Swift UI pour le développement modulaire et la prévisualisation, tandis qu'elle intégrait le codebase existant en UIKit pour la navigation et d'autres fonctionnalités. La modularité de Swift UI a permis à l'équipe de diviser les vues en composants réutilisables, ce qui a facilité le développement rapide et la prévisualisation efficace avec Tuist. Ils ont mis en œuvre des modèles Decodable pour une analyse API claire et efficace, simplifiant la construction des vues et la gestion des optionnels. Des énumérations de prévisualisation ont été introduites pour simplifier la création de données de simulation pour les vues complexes, leur permettant de construire des modules même avant que le support API ne soit terminé. Cependant, l'intégration avec le codebase existant a posé des défis, en particulier dans les domaines de la navigation et de la favorisation. Pour résoudre cela, ils ont créé une structure @Environment personnalisée, DealsAction, qui a renvoyé la responsabilité de la navigation au ciblage principal tout en maintenant la fonctionnalité callAsFunction() de Swift UI. Les objets d'environnement ont été utilisés pour d'autres fonctionnalités, telles que la favorisation, le suivi des boutiques et la journalisation des métriques de performance. Cette approche hybride a permis à l'équipe de tirer parti des avantages des technologies modernes tout en respectant les contraintes du codebase hérité, aboutissant à un lancement de produit réussi avant la semaine du Cyber Week.
favicon
etsy.com
How We Built The Deals Tab in Swift UI
Create attached notes ...