Voyager
🛸 A pragmatic navigation library for Compose Multiplatform
Install / Use
/learn @adrielcafe/VoyagerREADME
<h1 align="center">
<img height="150" src="https://user-images.githubusercontent.com/2512298/127723355-f56b3040-47cb-44fd-8504-a1868721c1a3.png"/>
<br>
<a href="https://voyager.adriel.cafe">Voyager</a>: Compose on Warp Speed
</h1>
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 voyage 🖖
Documentation
See the project website for documentation and APIs.
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. |
|----------|----------|----------|----------|
|
|
|
|
|
