Skip to content

Instantly share code, notes, and snippets.

@benigumocom
Last active March 24, 2026 03:04
Show Gist options
  • Select an option

  • Save benigumocom/6e295e17b8ff188e5a9ef66967751b43 to your computer and use it in GitHub Desktop.

Select an option

Save benigumocom/6e295e17b8ff188e5a9ef66967751b43 to your computer and use it in GitHub Desktop.
Multi-Stack Navigation: Why Your BackStacks Should Be Saveable UI State https://android.benigumo.com/20260322/multi-stack-navigation/
@Composable
fun <T : NavKey> rememberNavBackStacks(
tabRoots: List<T>
): SnapshotStateMap<T, NavBackStack<NavKey>> {
return rememberSaveable(
inputs = arrayOf(tabRoots),
saver = Saver<SnapshotStateMap<T, NavBackStack<NavKey>>, List<Pair<T, NavBackStack<NavKey>>>>(
save = { map -> map.toList() },
restore = { restored ->
mutableStateMapOf<T, NavBackStack<NavKey>>().apply {
putAll(restored)
}
}
)
) {
mutableStateMapOf<T, NavBackStack<NavKey>>().apply {
tabRoots.forEach { root ->
this[root] = NavBackStack(root)
}
}
}
}
@benigumocom
Copy link
Copy Markdown
Author

Stop Fighting Multiple BackStacks in Jetpack Compose Navigation3 | Mar, 2026 | ProAndroidDev
https://medium.com/proandroiddev/stop-fighting-multiple-backstacks-in-jetpack-compose-navigation3-50f8cf063fff

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment