ComposeAtlas
JETBRAINS & ANDROID STUDIO PLUGIN

See your Compose Navigation graph, straight from your code

No annotations required. ComposeAtlas reads your existing NavHost builders and renders an interactive node-link diagram right inside your IDE tool window.

Install from Marketplace How it works ↓
ComposeAtlas — Navigation Graph Export PNG
// see it in action

Your navigation graph, drawn for you

ComposeAtlas parses your NavHost, your navigate() calls, and your @Preview functions, then lays it out as a diagram you can click through. The code below is what produces the graph next to it — click either side to see the connection.

HomeGraph.kt
NavHost(navController, startDestination = "home") {
    composable("home") { HomeScreen() }
    composable("details") { DetailsScreen() }
    composable("settings") { SettingsScreen() }
}

navController.navigate("details")
navController.navigate("settings")
navController.navigate("payment")  // never registered

Illustrative sample — not this project's actual source.

Home — entry point Home entry point Details — matched preview Details @Preview matched Settings — matched preview Settings @Preview matched Payment — never declared Payment never declared
Entry point
Screen with matched preview
Navigation target nothing declares
Home entry point

Detected automatically as the NavHost start destination — no annotation needed.

// how it works

From code to diagram in four steps

01

Scan NavHost builders

ComposeAtlas walks your Kotlin PSI tree, finding every NavHost {} block including nested and modularized graphs.

NavHost(navController,
  startDestination = Routes.Home)
02

Resolve routes & previews

Follows val/const val route constants, sealed/enum classes, and matches @Preview annotations to their destination composables.

@Preview
fun HomeScreenPreview() { … }
03

Render the graph

Builds an interactive node-link diagram with color-coded nodes you can click straight through.

04

Click to navigate

Select a node to highlight it and its edges. Double-click to jump directly to that destination's source in the editor.

// features

Everything your nav graph needs

Built for real Compose projects — handles the patterns that teams actually use in production.

core

Code is the source of truth

Reads your existing NavHost directly — no new annotations, no config files, no duplication of your routing structure.

Deep nesting & modularization

Resolves destinations at any nesting depth, including nav graphs split across per-feature functions in separate modules.

Route constant resolution

Follows val, const val, sealed class properties, enum entries, and looped dynamic routes like bottom-nav Tab.entries iterations.

@Preview auto-matching

Links @Preview and multipreview annotations to their screens automatically — including the stateless view behind a stateful screen, which is where the preview actually lives in most apps. Light-blue nodes confirm at a glance which destinations have one.

Color-coded diagram

Green = entry point Light blue = has @Preview Red dashed = never declared Each arrow takes its colour from the screen it leaves

Readable on a real app

Each flow is drawn as its own tree — every screen directly under the one that navigates to it — so a step-by-step flow runs straight down instead of sprawling. Pick one NavHost at a time from the toolbar, and select a screen to fade everything unrelated to it.

UI

Interactive & exportable

Zoom and pan the diagram, drag nodes to rearrange, and export the whole graph as a PNG for docs and PRs.

Jump to source

Double-click any node to open the screen composable it's named after — or its matching @Preview — straight in the editor.

Click → highlight

Select a node to visually highlight it together with all incoming edges — instantly see what leads to any given destination.

// install

Up and running in under a minute

IN YOUR IDE
1 Settings / Preferences
2 Plugins
3 Marketplace
4 Search "ComposeAtlas"
5 Install
6 Restart IDE

Available for Android Studio and IntelliJ IDEA.