gitwtfhub

wtf is voyager?

l2hyunwoo/voyager — explained in plain English

Analysis updated 2026-08-04 · repo last pushed 2024-02-23

Audience · developerComplexity · 2/5DormantSetup · moderate

TL;DR

Voyager is a navigation library for Jetpack Compose that handles screen switching in Android and multiplatform apps. Define screens as simple objects and let the library manage routing, tabs, and state preservation automatically.

Mindmap

mindmap
  root((repo))
    What it does
      Screen switching
      Tab management
      State preservation
      Nested navigation
    Tech stack
      Kotlin
      Jetpack Compose
      Koin
      Hilt
    Use cases
      Login-to-home flows
      Bottom sheet navigation
      Multiplatform apps
      Tab-based apps
    Audience
      Android developers
      Kotlin developers
      Solo founders
      Small teams
    Features
      ScreenModel state
      Screen transitions
      Lifecycle callbacks
      Deep linking

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Build a login-to-home navigation flow without writing navigation boilerplate.

REASON 2

Create a tab-based app interface similar to the YouTube app with multiple sections.

REASON 3

Manage nested navigation stacks for complex multi-step user flows in your app.

REASON 4

Share navigation logic across Android, iOS, Desktop, and Web from a single codebase.

What's in the stack?

KotlinJetpack ComposeKoinHilt

How it stacks up

l2hyunwoo/voyager00kaku/gallery-slider-block04amanrajj/netwatch
Stars0
LanguageJavaScriptRust
Last pushed2024-02-232021-05-19
MaintenanceDormantDormant
Setup difficultymoderateeasymoderate
Complexity2/52/53/5
Audiencedevelopergeneralops devops

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires familiarity with Jetpack Compose and setting up a Compose project with Gradle dependencies.

The README does not mention a specific license, so the licensing terms are unknown.

Wtf does this do

Voyager is a navigation library for Jetpack Compose, the modern toolkit for building Android (and increasingly multiplatform) app interfaces. In plain terms, it handles the "screen switching" in your app, moving from a login page to a home page, opening a bottom sheet, managing tabs like the YouTube app, or keeping track of nested navigation when you have complex flows. Instead of wrestling with navigation boilerplate, you define each screen as a simple object and let a Navigator component handle the routing. The way it works is straightforward for developers: each screen in your app is a class that implements a Screen interface, where you place your UI code. You kick things off by passing your starting screen to a Navigator. From there, the library manages a stack of screens, so you can push new ones on top, pop back, or jump between tabs, all while preserving state when things like screen rotations or activity recreations would normally wipe your data. This project is aimed at Android and Kotlin multiplatform developers building apps with Compose. If you are a solo founder or small team shipping an app and want a cleaner alternative to Google's default navigation library, this is a strong pick. It supports Android, iOS, Desktop, and Web, making it practical for teams targeting more than one platform from a shared codebase. What makes Voyager notable is its breadth of integrations and pragmatic design philosophy. It includes its own lightweight ScreenModel (similar to Android's ViewModel) for managing state, and it plays nicely with popular dependency injection frameworks like Koin and Hilt. It also covers concerns that go beyond basic routing: built-in screen transitions, lifecycle callbacks, back-press handling, deep linking, and state restoration. The README points to a dedicated documentation site for full API details, and includes sample apps with animated GIFs demonstrating each navigation pattern in practice.

Yoink these prompts

Prompt 1
I'm building an Android app with Jetpack Compose and want to use Voyager for navigation. Help me define a login screen and home screen as Screen objects, and set up a Navigator to switch between them.
Prompt 2
Show me how to set up tab navigation in Voyager for a Compose app with three tabs - Home, Search, and Profile - including how to preserve state when switching between tabs.
Prompt 3
I want to use Voyager with Koin for dependency injection in my Kotlin Multiplatform project. Help me wire up a ScreenModel that fetches data and inject it into my Compose screen.
Prompt 4
Help me add a bottom sheet screen to my Voyager-based Compose app that opens from a button tap and can be dismissed by swiping down or pressing back.

Frequently asked questions

wtf is voyager?

Voyager is a navigation library for Jetpack Compose that handles screen switching in Android and multiplatform apps. Define screens as simple objects and let the library manage routing, tabs, and state preservation automatically.

Is voyager actively maintained?

Dormant — no commits in 2+ years (last push 2024-02-23).

What license does voyager use?

The README does not mention a specific license, so the licensing terms are unknown.

How hard is voyager to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is voyager for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.