---
title: Compose Navigation Observability Across Every KMP Target
description: Kotzilla SDK 2.2.0 brings full-screen-level observability to Compose Navigation 2 and 3 across every KMP target.
image: https://blog.kotzilla.io/hubfs/kotzilla-featured-compose-nav-1.png
---

[Skip to content](https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target#main-content)

[![kotzilla (3)](https://blog.kotzilla.io/hubfs/kotzilla%20(3).svg)](https://kotzilla.io/)

- [Koin](https://insert-koin.io/)
- [Koin IDE Plugin](https://plugins.jetbrains.com/plugin/26131-koin-dependency-injection-official-)
- [Koin LTS](https://kotzilla.io/koin-lts)
- [Developer Hub](https://doc.kotzilla.io/)

Open main navigation

Close main navigation

- [Koin](https://insert-koin.io/)
- [Koin IDE Plugin](https://plugins.jetbrains.com/plugin/26131-koin-dependency-injection-official-)
- [Koin LTS](https://kotzilla.io/koin-lts)
- [Developer Hub](https://doc.kotzilla.io/)
- [Contact us](https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target#contact)

[Contact us](https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target#contact)

 May 21, 2026, 2:48:53 PM

# Compose Navigation Observability Across Every KMP Target

[The Kotzilla Team](https://blog.kotzilla.io/author/the-kotzilla-team)

Share: [facebook-f icon](http://www.facebook.com/share.php?u=https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target) [linkedin-in icon](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target) [Twitter icon](https://twitter.com/intent/tweet?url=https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target) [pinterest-p icon](http://pinterest.com/pin/create/link/?url=https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target) [envelope icon](mailto:?body=https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target)

**Kotzilla SDK 2.2.0 and Console 4.5.0 bring first-class screen-level observability to Compose Navigation 2 and Navigation 3, on Android, iOS, Desktop, JS, and WASM. No manual instrumentation required.**

## The Observability Gap in Compose-Based Apps

For years, Android observability was built around Activities and Fragments. Monitoring tools hooked into well-defined lifecycle callbacks (`onCreate`, `onResume`, `onPause`) to track screen transitions, rendering performance, and user flows.

Compose Navigation changed the rules. Screens are composable functions. Navigation is driven by a `NavController` and typed routes. There is no Activity to intercept, no Fragment backstack to observe. For most monitoring tools, Compose screens are effectively invisible at runtime.

This gap has grown more critical as Compose Multiplatform extends screen-first navigation to iOS, Desktop (JVM), JavaScript, and WebAssembly targets. Developers shipping cross-platform apps with shared Compose navigation graphs have had no reliable way to answer basic questions:

- Which screen is slow?
- What was the user doing before the crash?
- How long did users spend on this screen before dropping off?

Kotzilla SDK 2.2.0 closes this gap.

## What Is Compose Navigation Observability?

**Compose Navigation observability** is the ability to track, measure, and analyze screen transitions in apps built with Jetpack Compose or Compose Multiplatform, including rendering times, session sequences, and ANR events, at the same level of detail traditionally available only for Activity- and Fragment-based apps.

Kotzilla achieves this by auto-instrumenting Compose Navigation route boundaries. Every screen transition emits a `SCREEN_LIFECYCLE` event carrying the full route name, screen type, and timing data. No manual tracking calls. No wrappers around your `NavHost`.

## How Kotzilla Instruments Compose Navigation

### Automatic Route Boundary Detection

SDK 2.2.0 automatically instruments both **Navigation 2** and **Navigation 3** route boundaries. Each screen visit emits a `SCREEN_LIFECYCLE` event with:

- The **full route name**, including typed route details when available
- A **screen type tag**: `compose_nav2` or `compose_nav3`
- Precise timing for the screen visit duration

Activities and Fragments retain their existing tags (`activity`, `fragment`), so mixed-navigation apps (common during Compose migrations) display all screen types in the same unified timeline.

### Navigation 3 and Typed Routes

Navigation 3 is the type-safe navigation API introduced for Compose. Kotzilla SDK 2.2.0 tracks Navigation 3 screens across all KMP targets: **Android, iOS, Desktop (JVM), JS, and WASM**. Typed routes preserve their full class name in Kotzilla, with safe route details attached when available.

This means a shared KMP navigation graph is observable across all platforms without any platform-specific instrumentation.

### Multi-Module Compose Projects

For apps using multi-module Compose Navigation, apply the Kotzilla Gradle plugin at the root build script:

```
// root build.gradle.kts plugins {     id("io.kotzilla.kotzilla-plugin") } 
```

This ensures that route code compiled in feature modules is captured. Feature modules do not need their own SDK API keys; only the app or main runtime module does. Projects using isolated project builds should apply the plugin directly in every route-owning module instead.

## What You See in the Kotzilla Console

### Screen Rendering Table in the Dashboard

![Screenshot 2026-05-21 at 11.46.17](https://blog.kotzilla.io/hs-fs/hubfs/Screenshot%202026-05-21%20at%2011.46.17.png?width=1650&height=834&name=Screenshot%202026-05-21%20at%2011.46.17.png)

The Dashboard's Screen Rendering table now includes Compose screens alongside Activities and Fragments. Each Compose screen is listed with:

- Rendering times
- Session count
- ANR occurrences
- Screen type tag (`COMPOSE_NAV3` or `COMPOSE_NAV2`)

This makes it possible to directly compare rendering performance across your entire screen inventory, regardless of how each screen is implemented.

### Compose Screens in the Session Timeline

In individual user sessions, the Timeline renders `SCREEN_LIFECYCLE` events with their own grouping, colors, and symbols, interleaved with Android activity events and Koin dependency resolutions.

You see the exact sequence of screens a user moved through, what happened on each one, and how long they spent there, giving you the same session-level context for a Compose app as you've always had for Activity-based apps.

## Why This Matters for Kotlin Multiplatform Development

Kotlin Multiplatform (KMP) development increasingly relies on shared UI and navigation logic. Compose Multiplatform makes it practical to share entire screen hierarchies across Android, iOS, and web targets.

But shared code introduces shared blind spots. A rendering regression introduced in a shared composable affects every platform simultaneously. Without cross-platform screen observability, catching it requires reproducing it manually on each target.

Kotzilla SDK 2.2.0 makes `SCREEN_LIFECYCLE` events platform-agnostic. The same event structure, the same route names, and the same timing data surface in the Console regardless of whether the session originated on Android, iOS, Desktop, or a browser.

## Build-Time Regression Detection

SDK 2.2.0 also introduces a build-time report that runs automatically during Gradle builds via auto-wired `kotzillaBuildReport{Variant}` tasks. The build fails by default if a `FAIL` status is detected, catching regressions before they ship.

To opt out of build failures without disabling the report:

```
kotzilla {     skipBuildReportFailure = true } 
```

This integrates observability into the CI/CD pipeline, not just the runtime.

## Migration and Compatibility Requirements

To use Compose Navigation observability with SDK 2.2.0:

- **Android** apps require `compileSdk 35+`
- **Navigation 3** Android projects require `compileSdk 36+` and `minSdk 23+`
- **KMP native and web targets** require Kotlin 2.2+

Compatibility ceilings for this release include Kotlin 2.3.20, AGP 9.2.0, Gradle 9.5.0, Compose BOM 2026.04.01, AndroidX Navigation Compose 2.9.8, and Compose Multiplatform 1.10.3.

## Frequently Asked Questions

**Does Kotzilla support Compose Navigation without any code changes?**

Yes. SDK 2.2.0 auto-instruments Compose Navigation route boundaries. No manual tracking calls or `NavHost` wrappers are required.

**Which Compose Navigation versions are supported?**

Both Navigation 2 and Navigation 3 are supported. Screen type tags distinguish them as `compose_nav2` and `compose_nav3` in the Console.

**Does Compose Navigation observability work on iOS and Desktop?**

Yes. SDK 2.2.0 tracks Compose Navigation screens across all KMP targets: Android, iOS, Desktop (JVM), JS, and WASM.

**What happens in apps that mix Compose and Fragment navigation?**

Compose screens (tagged `compose_nav2` or `compose_nav3`), Activities, and Fragments all appear in the same Dashboard table and session Timeline, making mixed-navigation apps fully visible.

**Is the Gradle build report opt-in?**

No. The `kotzillaBuildReport{Variant}` task runs automatically. Build failure on a `FAIL` status is the default behavior. You can disable failure-on-fail via `skipBuildReportFailure = true` in the `kotzilla {}` block.

## Summary

Kotzilla SDK 2.2.0 and Console 4.5.0 deliver the first complete Compose Navigation observability solution for Kotlin Multiplatform apps. Auto-instrumented route boundaries, full Navigation 3 support, and a unified Console view give teams the same screen-level visibility in Compose that they've always had in classic Android development, extended to every KMP platform in a single integration.

For setup details, see the [KMP guide](https://doc.kotzilla.io/docs/getstartedCustom/setupKMP) and [CMP guide](https://doc.kotzilla.io/docs/getstartedCustom/setupCMP) in the Kotzilla documentation.

[KMP](https://blog.kotzilla.io/tag/kmp), [Compose Multiplatform](https://blog.kotzilla.io/tag/compose-multiplatform), [Android Performance](https://blog.kotzilla.io/tag/android-performance)

## Related posts

[![Koin IDE Plugin releases page showing Koin Annotations 2.2 support in version 1.5.1 for Android and Kotlin dependency injection](https://blog.kotzilla.io/hs-fs/hubfs/Whats%20new%20November%202024%20(1).png?height=200&name=Whats%20new%20November%202024%20(1).png)](https://blog.kotzilla.io/koin-ide-plugin-1-5-1-annotations-2-2-jsr-330-android-kotlin)

[Koin Annotations](https://blog.kotzilla.io/tag/koin-annotations), [Kotzilla Platform](https://blog.kotzilla.io/tag/kotzilla-platform), [Koin IDE Plugin](https://blog.kotzilla.io/tag/koin-ide-plugin), [Debugging](https://blog.kotzilla.io/tag/debugging)

## [Koin IDE Plugin 1.5.1: Koin Annotations 2.2 Support with JSR-330 Compatibility](https://blog.kotzilla.io/koin-ide-plugin-1-5-1-annotations-2-2-jsr-330-android-kotlin)

![Picture of Art Shendrik](https://blog.kotzilla.io/hs-fs/hubfs/Screenshot%202024-12-09%20at%2013.21.54.png?width=50&name=Screenshot%202024-12-09%20at%2013.21.54.png) [Art Shendrik](https://blog.kotzilla.io/author/art-shendrik) 

 Nov 10, 2025, 4:00:55 PM

In this update, we've achieved compatibility with Koin Annotations 2.2, unlocking the power of...

[Read more](https://blog.kotzilla.io/koin-ide-plugin-1-5-1-annotations-2-2-jsr-330-android-kotlin)

[![](https://blog.kotzilla.io/hs-fs/hubfs/Screenshot_2to1_padded.png?height=200&name=Screenshot_2to1_padded.png)](https://blog.kotzilla.io/kotzilla-platform-roadmap-q2-2025)

[Koin](https://blog.kotzilla.io/tag/koin), [Kotlin](https://blog.kotzilla.io/tag/kotlin), [Kotzilla Platform](https://blog.kotzilla.io/tag/kotzilla-platform), [Kotzilla SDK](https://blog.kotzilla.io/tag/kotzilla-sdk), [Koin IDE Plugin](https://blog.kotzilla.io/tag/koin-ide-plugin)

## [Kotzilla Platform Roadmap – Q2 2025](https://blog.kotzilla.io/kotzilla-platform-roadmap-q2-2025)

![Picture of Miguel Valdes Faura](https://blog.kotzilla.io/hs-fs/hubfs/Screenshot%202024-12-09%20at%2013.45.53.png?width=50&name=Screenshot%202024-12-09%20at%2013.45.53.png) [Miguel Valdes Faura](https://blog.kotzilla.io/author/miguel-valdes-faura) 

 May 9, 2025, 4:07:17 PM

We’ve been building a lot. Over the last weeks, we’ve rolled out major updates to the three main...

[Read more](https://blog.kotzilla.io/kotzilla-platform-roadmap-q2-2025)

[![](https://blog.kotzilla.io/hs-fs/hubfs/Screenshot%202023-12-15%20at%2011.37.42.png?height=200&name=Screenshot%202023-12-15%20at%2011.37.42.png)](https://blog.kotzilla.io/koin-2023-highlights)

[Koin](https://blog.kotzilla.io/tag/koin), [Android](https://blog.kotzilla.io/tag/android), [Kotlin](https://blog.kotzilla.io/tag/kotlin)

## [Koin Wrapped- Recapping the 2023 Milestones of Our Kotlin Integration Framework](https://blog.kotzilla.io/koin-2023-highlights)

[The Koin crew](https://blog.kotzilla.io/author/the-koin-crew) 

 Dec 15, 2023, 11:41:49 AM

Six years ago, Arnaud embarked on an extraordinary journey that ultimately gave birth to Koin. It...

[Read more](https://blog.kotzilla.io/koin-2023-highlights)

facebook-f icon linkedin-in icon Twitter icon instagram icon

- Menu Item 1 
    - Sub-menu Item 1 
          - Another Item
    - Sub-menu Item 2
- Menu Item 2 
    - Yet Another Item
- Menu Item 3
- Menu Item 4

---

[![kotzilla-logo](https://blog.kotzilla.io/hubfs/kotzilla-logo.svg "kotzilla-logo")](http://www.kotzilla.io)

Copyright © 2025,

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "The Kotzilla Team",
    "url" : "https://blog.kotzilla.io/author/the-kotzilla-team"
  },
  "dateModified" : "2026-05-21T12:48:53.846Z",
  "datePublished" : "2026-05-21T12:48:53.000Z",
  "headline" : "Compose Navigation Observability Across Every KMP Target",
  "image" : [ "https://blog.kotzilla.io/hubfs/kotzilla-featured-compose-nav-1.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.kotzilla.io/compose-navigation-observability-across-every-kmp-target",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.kotzilla.io/hubfs/__Kotzilla_format-site-web-line%201.png"
    },
    "name" : "Kotzilla SAS"
  }
}
```