Vlad Tkachenko
Ссылка
нажмите — покажем
нажмите — покажем
😄 Статья CoordinatorKit 2.0: Production-Ready SwiftUI Navigation это пример честного разбора автором своих же ошибок. Можно даже сказать, пост-мортем. В противовес многочисленным “hello NavigationStack”, в ней хорошо объясняется, почему нативные SwiftUI-паттерны ломаются и даёт идеи, которые можно заимствовать даже без внедрения фреймворка или использовать как основу собственной навигационной архитектуры.
На самом деле сделать фреймворк навигации, который будет удобным для использования и гибким для переиспользования под разные продуктовые кейсы это невероятно сложная задача. В больших проектах никуда без диплинков, сложных навигационных кейсов типа логин/логаут или внезапных кросс-фичовых переходов. Отдельного внимания заслуживает обработка жестов вроде смахнуть/свайпнуть экран, а точнее запретить это сделать для отдельных продуктовых случаев.
Между первой и второй версией фреймворка виден невероятный разрыв. Аналогично, первая статья выглядит как наивная попытка сделать все легко, чисто и по правилам паттерна. А вторая статья это уже полноценный инструмент, набравший силы, повидавший требования и изменчивость продакшна.
Топ "неожиданных" инсайтов:
❌ SwiftUI navigation не production-ready из коробки.
🍋 Достаточно больно жить без контроля над жестами, над root-экраном и над состоянием стека.
🐸 Coordinator-паттерн остаётся актуальным, но должен быть интегрирован глубже, должен быть concurrency-safe и должен перехватывать жесты, а не реагировать пост-фактум.
✈️ Навигация, по своей сути, ближе к бизнес-логике, чем к деталям UI.
📎 GitHub: CoordinatorKit
#D #Arch #Navigation #Coordinator #SwiftUI
👏
8 · 910 ·