Voyager is a multiplatform navigation library for Compose Multiplatform that handles routing and screen management in Jetpack Compose applications.
The tool solves the problem of managing navigation in Compose-based apps by providing a pragmatic API designed specifically for the declarative nature of Compose. It works through a stack-based navigation model that supports linear flows, tab-based navigation similar to YouTube's interface, bottom sheet navigation, and nested navigation with multiple stacks. The library integrates state management through its ScreenModel abstraction, which connects with popular dependency injection and state management frameworks including Koin, Kodein, Hilt, Coroutines, RxJava, and LiveData. It also supports Android's native ViewModel for teams already invested in that ecosystem.
Developers should choose this tool if they are building multiplatform applications targeting Android, iOS, Desktop, and Web using Compose Multiplatform. It suits projects that need type-safe navigation across multiple modules, require deep linking support, or need sophisticated navigation patterns beyond simple linear flows. The library handles state restoration after activity recreation, provides lifecycle callbacks for screen events, and includes built-in transition animations. Teams working on single-activity architectures will find the pragmatic API particularly valuable.
The project maintains active development with regular updates to its codebase. The maintainers respond to issues and pull requests consistently, indicating ongoing engagement with the community. Documentation is comprehensive and well-organized through a dedicated project website, suggesting a commitment to developer experience. The tool receives updates that address both bug fixes and feature additions across its multiplatform support.