1. Voyager
Описание:
Voyager — легковесная библиотека навигации для Compose, разработанная специально для мультиплатформенных проектов (Android, Desktop, iOS). Она использует концепцию моделей экранов (Screen model), что упрощает управление состоянием и параметрами.
Плюсы Voyager:
• ✅ Поддержка KMM (Kotlin Multiplatform), включая Android и Desktop.
• ✅ Простая и декларативная API с поддержкой Screen-based навигации.
• ✅ Встроенная работа с ViewModel (через getModel()), что удобно для управления состоянием.
• ✅ Автоматическое сохранение состояния экранов (similar to rememberSaveable).
• ✅ Поддержка анимаций между экранами.
• ✅ Хорошо документирована и активна в сообществе.
Минусы Voyager:
• ❌ Ограниченная гибкость для сложных проектов (не хватает сложных маршрутов, вложенной навигации).
• ❌ Сложнее кастомизировать переходы по сравнению с Decompose.
• ❌ Для очень сложных приложений может потребоваться дополнительная архитектурная работа.
Лучшее применение:
Маленькие Android-приложения с простыми требованиями к навигации.
Одноплатформенные приложения, где не требуется KMM.
Новичкам, которые хотят быстро настроить навигацию.
2. Decompose
Описание:
Decompose — это мощная библиотека для мультиплатформенной навигации, основанная на концепции Component-based подхода. Она позволяет легко управлять экранами и их состоянием, а также поддерживает child components, что удобно для сложных приложений.
Плюсы Decompose:
• ✅ Полноценная поддержка Android, Desktop, iOS, Web.
• ✅ Поддержка вложенной навигации (child components) и модульности.
• ✅ Возможность реализации сложных навигационных графов и архитектур (MVI, MVVM).
• ✅ Автоматическое управление жизненным циклом компонентов.
• ✅ Поддержка сохранения состояния (state preservation).
• ✅ Возможность глубокой интеграции с архитектурными паттернами (например, с Kotlin Coroutines, Flow).
Минусы Decompose:
• ❌ Более сложное API по сравнению с Voyager, требует понимания компонентного подхода.
• ❌ Большой объем кода для простых приложений.
• ❌ Меньше документации по сравнению с конкурентами, но активно развивается.
Лучшее применение:
• Средние и большие приложения, требующие сложной вложенной навигации.
• Мультиплатформенные проекты с акцентом на масштабируемость.
• Проекты с сложной архитектурой и динамической навигацией.
3. Tiamat
Описание:
Tiamat — это экспериментальная и пока менее популярная библиотека, ориентированная на навигацию в Jetpack Compose с упором на Android. Она предлагает простую реализацию навигационного стека с управлением состоянием.
Плюсы Tiamat:
• ✅ Простая в использовании и легковесная.
• ✅ Хорошо интегрируется с ViewModel и state management.
• ✅ Подходит для простых Android-приложений без сложных переходов.
• ✅ Минимальная зависимость и простота добавления в проект.
Минусы Tiamat:
• ❌ Нет поддержки Desktop и других платформ.
• ❌ Ограниченный функционал для сложных навигационных графов.
• ❌ Слабая документация и меньшая популярность в сообществе.
Лучшее применение:
• Маленькие Android-приложения с простыми требованиями к навигации.
• Одноплатформенные приложения, где не требуется KMM.
• Новичкам, которые хотят быстро настроить навигацию.
Вывод: какую библиотеку выбрать?
|
Критерий |
Voyager |
Decompose |
Tiamat |
JetBrains Navigation |
Jetpack Compose Navigation (Google) |
|
Поддержка Desktop |
✅ Да |
✅ Да |
❌ Нет |
✅ Да |
❌ Нет |
|
Легкость освоения |
✅ Простая |
❌ Сложнее |
✅ Очень простая |
✅ Простая |
✅ Простая |
|
Гибкость |
❌ Ограниченная |
✅ Высокая |
❌ Низкая |
✅ Средняя |
✅ Средняя |
|
Поддержка KMM |
✅ Полная |
✅ Полная |
❌ Только Android |
✅ Полная |
❌ Нет |
|
Размер проекта |
Малые/средние |
Средние/большие |
Маленькие |
Маленькие/Средние |
Средние/большие |
|
Сохранение состояния |
✅ Да |
✅ Да |
❌ Нет |
❌ Нет |
❌ Нет |
|
Навигация |
Screen-based/Stack-based/Component-based (частично) |
Component-based |
Stack-based |
Screen-based |
Screen-based |
Рекомендации:
1. Для маленьких приложений (3-5 экранов):
• Лучше использовать Voyager, так как он прост в настройке и отлично работает на Android и Desktop.
• Если приложение только для Android, можно попробовать Tiamat.
2. Для средних и крупных приложений:
• Лучше выбрать Decompose, так как он обеспечивает мощные инструменты для сложной навигации и вложенных экранов.
• Особенно полезен в крупных KMM-проектах.
3. Если нужно только Android:
• Voyager или Tiamat — простые и легкие решения.
• Decompose только если проект действительно сложный.
Заключение
• Если ваш проект многоэкранный, мультиплатформенный и масштабируемый, лучше выбрать Decompose, так как он предлагает гибкость и контроль.
• Если проект простой и KMM, выбирайте Voyager, он быстрее в освоении и удобен в небольших проектах.
• Если проект чисто для Android, Tiamat — минималистичный и легковесный вариант.