Summary
The project uses navCompose = "2.7.7". Navigation Compose 2.8.0 is stable and introduces type-safe navigation using Kotlin serialization, eliminating stringly-typed route strings.
Key Improvements in Navigation 2.8
- Type-safe routes via
@Serializable data classes instead of string route patterns — no more parsing navBackStackEntry.arguments?.getString("id").
NavController.navigate(MyRoute(id = 42)) instead of navController.navigate("detail/42").
- Compatible with Kotlin serialization (
kotlinx.serialization).
- Improved
NavController query APIs.
Proposed Changes
- In
Versions.kt, update:
const val navCompose = "2.8.x" // e.g. "2.8.9"
- Add
kotlinx-serialization-json to Dependencies.kt and kotlinDependencies in GroupedDependencies.kt.
- Apply the
kotlin("plugin.serialization") Gradle plugin in build.gradle.kts (root).
- Migrate existing string routes in the app to
@Serializable data class routes.
- Update
DependencyHandlerExtensions.kt to include the serialization dependency.
- Verify all navigation in demos still works correctly.
References
Summary
The project uses
navCompose = "2.7.7". Navigation Compose 2.8.0 is stable and introduces type-safe navigation using Kotlin serialization, eliminating stringly-typed route strings.Key Improvements in Navigation 2.8
@Serializabledata classes instead of string route patterns — no more parsingnavBackStackEntry.arguments?.getString("id").NavController.navigate(MyRoute(id = 42))instead ofnavController.navigate("detail/42").kotlinx.serialization).NavControllerquery APIs.Proposed Changes
Versions.kt, update:kotlinx-serialization-jsontoDependencies.ktandkotlinDependenciesinGroupedDependencies.kt.kotlin("plugin.serialization")Gradle plugin inbuild.gradle.kts(root).@Serializabledata class routes.DependencyHandlerExtensions.ktto include the serialization dependency.References