Change Log¶
Unreleased - TBD¶
Update dependencies¶
0.5.0 - Aug 17, 2024¶
Update dependencies¶
- KotlinX Coroutines 1.9.0-RC.2.
- AndroidX Lifecycle 2.8.4.
- AndroidX Compose Activity 1.9.1.
- AndroidX Annotation 1.8.2.
Added¶
- StackValidationMode: Introduced a new sealed interface StackValidationModeto handle different stack validation modes in the navigation stack. This interface includes three implementations:- Strict: Ensures the stack is always in a valid state and throws an exception if it transitions to an invalid state.
- Lenient: Ensures the stack is always in a valid state but takes no action if it transitions to an invalid state.
- Warning: Ensures the stack is always in a valid state and logs a warning if it transitions to an invalid state.
 
- NavHost: Added a new parameter stackValidationMode: StackValidationModeto theNavHostcomposable. Default value isStackValidationMode.Lenient.NavHost( startRoute = LoginScreenRoute, destinations = AllDestinations, navEventNavigator = navigator, destinationChangedCallback = { currentRoute = it }, stackValidationMode = StackValidationMode.Warning.Debug, // <--- Set the stack validation mode )
Fixed¶
- Lifecycle*Effectcompletion is now idempotent (i.e., if the- onStopOrDisposewas called because of the Lifecycle being stopped, it won’t be called a second time upon disposal unless the Lifecycle goes back up to- STARTEDagain).
0.4.0 - Jul 22, 2024¶
Update dependencies¶
- Kotlin 2.0.0🎉.
- JetBrains Compose Multiplatform 1.6.11🎉.
- KMP ViewModel 0.8.0🎉.
- KotlinX Coroutines 1.9.0-RC.
- AndroidX Lifecycle 2.8.3.
- AndroidX Compose Activity 1.9.0.
- AndroidX Annotation 1.8.0.
- Benasher44 UUID 0.8.4.
0.3.0 - Mar 13, 2024¶
- Fix an issue where a wrong host LifecycleOwnercan be used (#62).
- Rework internal implementation and refactor code (#62).
- Handle startRoutechanges properly (#62).
0.2.2 - Mar 9, 2024¶
Fixed¶
- NavHost: handle the host- LifecycleOwnerproperly to avoid memory leaks (#61).
0.2.1 - Mar 8, 2024¶
Fixed¶
- Fix an issue where SaveableStateHolderwould not be properly cleared when the destination is removed from the back stack after configuration changes on Android (#59).
0.2.0 - Mar 7, 2024¶
Update dependencies¶
Added¶
- New: Add support for Kotlin/Wasm (wasmJstarget) 🎉.
- New: Add LenientLifecycleRegistry, aLifecycleRegistrywithout the state checking, and hasmoveTomethod to move to a specific state. This is a flexible version ofLifecycleRegistry.
- New: Add rememberWindowLifecycleOwner()for Desktop (JVM) platform.
- New: Add SavedStateSupport.ProvideCompositionLocalsandSavedStateSupport.ClearOnDisposefor non-Android platforms.
Fixed¶
- Fixed: an issue where LocalLifecycleOwnerprovided the wrongLifecycleOwnerto the content ofNavHostcomposable.
Sample¶
- New:
  Add Solivagant Wasm Sample.
  You can open the web application by running
  the ./gradlew :samples:solivagant-wasm-sample:wasmJsBrowserDevelopmentRunGradle task.
0.1.1 - Feb 25, 2024¶
Fixed¶
- Add workaround for issue JetBrains/compose-multiplatform #3147 - Kotlin/Native can’t use T::class in inline function of @Composable for iOS.
Example, docs and tests¶
-
Add Compose Multiplatform Todo solivagant Sample: A KMP template of the Todo App using Compose multiplatform for Android, Desktop, iOS and Web. Share everything including data, domain, presentation, and UI.
0.1.0 - Feb 19, 2024¶
Update dependencies¶
Added¶
- New: Add optional transitionAnimationsparameter toNavHost@Composable functions. Animations can be overridden withNavHostDefaults.transitionAnimationsor disabled withNavHostTransitionAnimations.noAnimations. Default animations are the same as default animations in AndroidX’sNavHost.
Changed¶
- 
Breaking: Add a Modifierparameter tocontentofNavDestination:@InternalNavigationApi public sealed interface ContentDestination<T : BaseRoute> : NavDestination { // other members... public val content: @Composable (route: T, modifier: Modifier) -> Unit }This change effects ScreenDestinationandOverlayDestinationas well. Themodifierparameter should be passed to thecontentofNavDestination(a.k.a the root@Composableof the destination), for example:@Immutable @Parcelize data class DetailScreenRoute(val id: String) : NavRoute @JvmField val DetailScreenDestination = ScreenDestination<DetailScreenRoute> { route, modifier -> DetailScreen(modifier = modifier, route = route) } @Composable internal fun DetailScreen(modifier: Modifier, route: DetailScreenRoute) { Scaffold( modifier = modifier, // <--- Pass the modifier to the root @Composable topBar = { /* ... */ }, ) { //* ... */ } }
0.0.1 - Feb 7, 2024¶
- Initial release of solivagant🔆. Compose Multiplatform Navigation - 🌸 Pragmatic, type safety navigation for Compose Multiplatform. Based on Freeletics Khonshu Navigation. ♥️ ViewModel, SavedStateHandle, Lifecycle, Multi-Backstacks, and more…