Voyager: Compose on Warp Speed
A multiplatform navigation library built for, and seamlessly integrated with, Jetpack Compose.
Create scalable Single-Activity apps powered by a pragmatic API:
class HomeScreenModel : ScreenModel {
// ...
}
class HomeScreen : Screen {
@Composable
override fun Content() {
val screenModel = rememberScreenModel<HomeScreenModel>()
// ...
}
}
class SingleActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Navigator(HomeScreen())
}
}
}
Turn on the Warp Drive and enjoy the trek
Documentation
See the project website for documentation and APIs.
dependencies {
// Navigator, supports Android, Desktop, iOS and MacOS
implementation("ca.gosyer:voyager-navigator:<version>")
// TabNavigator, supports Android, Desktop, iOS and MacOS
implementation("ca.gosyer:voyager-tab-navigator:<version>")
// BottomSheetNavigator, supports Android, Desktop, iOS and MacOS
implementation("ca.gosyer:voyager-bottom-sheet-navigator:<version>")
// Transitions, supports Android, Desktop, iOS and MacOS
implementation("ca.gosyer:voyager-transitions:<version>")
// Android ViewModel integration
implementation("ca.gosyer:voyager-androidx:<version>")
// Hilt integration
implementation("ca.gosyer:voyager-hilt:<version>")
// Kodein integration
implementation("ca.gosyer:voyager-kodein:<version>")
// Koin integration
implementation("ca.gosyer:voyager-koin:<version>")
// Kotlin Routing integration
implementation("ca.gosyer:voyager-routing:<version>")
// Kotlin Routing integration with typesafe urls
implementation("ca.gosyer:voyager-routing-typesafe:<version>")
// RxJava integration, supports Android and Desktop
implementation("ca.gosyer:voyager-rxjava:<version>")
// LiveData integration
implementation("ca.gosyer:voyager-livedata:<version>")
}
Features
- Supported platforms: Android, iOS, Desktop, Web.
- Linear navigation
- BottomSheet navigation
- Tab navigation like Youtube app
- Nested navigation (multiple stacks, parent navigation)
- ScreenModel (a.k.a ViewModel) integrated with Koin, Kodein, Hilt, Coroutines, RxJava, LiveData
- Android ViewModel integration (with Hilt support)
- Type-safe multi-module navigation
- State-aware Stack API
- Built-in transitions
- State restoration after Activity recreation
- Lifecycle callbacks
- Back press handling
- Deep linking support
Samples
Stack API | Android ViewModel | ScreenModel | Basic nav. |
---|---|---|---|
BottomSheet nav. | Tab nav. | Multi-module nav. | Nested nav. |
---|---|---|---|