Compose Destinations Versions Save

Annotation processing library for type-safe Jetpack Compose navigation with no boilerplate.

2.1.0-beta07

2 weeks ago

Changes

  • Fixes #638 by @extmkv in https://github.com/raamcosta/compose-destinations/pull/640
  • Fixes #611
  • Improved wrong nav graph args configuration reporting
  • When generating docs to specific directories set with gradle ksp configs, it creates missing directories if any.
  • Added API for adding deep links at runtime (Fixes #639)

Example:

DestinationsNavHost(
    //...
) {
    MyDestination addDeepLink { uriPattern = "schema://${MyDestination.route}" }
}

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta06...2.1.0-beta07

2.0.0-beta07

2 weeks ago

Changes

  • Fixes #638
  • Fixes #611
  • Improved wrong nav graph args configuration reporting
  • When generating docs to specific directories set with gradle ksp configs, it creates missing directories if any.
  • Added API for adding deep links at runtime (Fixes #639)

Example:

DestinationsNavHost(
    //...
) {
    MyDestination addDeepLink { uriPattern = "schema://${MyDestination.route}" }
}

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta06...2.0.0-beta07

2.1.0-beta06

2 weeks ago

Changes

  • Dependency updates
  • Fixes #624
  • Fixes #638
  • Fixes #636

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-beta05...2.0.0-beta06

2.0.0-beta06

2 weeks ago

Changes

  • Fixes #624
  • Fixes #638
  • Fixes #636

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-beta05...2.0.0-beta06

1.11.4-alpha

3 weeks ago
  • Fixes issue with not importing AnimatedVisibilityScope with new shared transition elements ways of providing it.

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/1.11.3-alpha...1.11.4-alpha

2.1.0-beta03

3 weeks ago
  • Fixed #625
  • Fixes issue with not importing AnimatedVisibilityScope with new shared transition elements ways of providing it.

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta02...2.1.0-beta03

1.11.3-alpha

1 month ago

Breaking Changes 😱

  • Most of our NavController extension functions were removed. Instead, if you want to use the type safe Compose Destinations friendly APIs, you'll need to use DestinationsNavigator. There are two new APIs to get this navigator from NavController: (you can also just receive DestinationsNavigator on your annotated Composables)

    • If you are inside a Composable, use navController.rememberDestinationsNavigator()
    • If not, use navController.toDestinationsNavigator()

Keep in mind you can still use NavController directly by adding .route. For example: navController.navigate(Destination(args).route).

We were forced to do this since new navigation versions introduced a new member function of NavController class that would shadow our extension functions (i.e, users of the lib would start calling it silently instead of our extension functions - the result would be a runtime crash). By removing the APIs on our side, it forces users of Compose Destinations to go handle this change and avoid runtime issues that way.

  • Parameter onlyIfResumed removed from navigate APIs. (including navigating back with result). Users should replace it with the new APIs dropUnlessResumed:
onClick = dropUnlessResumed {
    navigator.navigate(SomeDestination)
}

// BEFORE

onClick = {
    navigator.navigate(SomeDestination, onlyIfResumed = true)
}

Here it was just a timing thing. Given that we were forced into other breaking changes, might as well do this too. It also made it easier to provide functions to get DestinationsNavigator (see above) since it no longer depends on the NavBackStackEntry.

Improvements

  • Changes to help send SharedTransitionScope and AnimatedVisibilityScope.

Here is the recommended way to implement shared transition elements with the library:

//...
    SharedTransitionLayout {
        DestinationsNavHost(
           //...
            dependenciesContainerBuilder = {
                dependency(this@SharedTransitionLayout) // provide SharedTransitionScope to screens that need it
            }
        )
    }

// On screens:

@Destination<MyGraph>//...
@Composable
fun SharedTransitionScope.MyScreen(
    animatedVisibilityScope: AnimatedVisibilityScope //no need to do anything, it will be provided
) {
    Box( // just an example ofc
         modifier = Modifier
            .sharedElement(
                state = rememberSharedContentState(key = "whatever id"),
                animatedVisibilityScope = animatedVisibilityScope
            )
    )
//....
}

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/1.11.2-alpha...1.11.3-alpha

2.1.0-beta02

1 month ago

Breaking Changes 😱

  • Most of our NavController extension functions were removed. Instead, if you want to use the type safe Compose Destinations friendly APIs, you'll need to use DestinationsNavigator. There are two new APIs to get this navigator from NavController: (you can also just receive DestinationsNavigator on your annotated Composables)

    • If you are inside a Composable, use navController.rememberDestinationsNavigator()
    • If not, use navController.toDestinationsNavigator()

Keep in mind you can still use NavController directly by adding .route. For example: navController.navigate(Destination(args).route).

We were forced to do this since new navigation versions introduced a new member function of NavController class that would shadow our extension functions (i.e, users of the lib would start calling it silently instead of our extension functions - the result would be a runtime crash). By removing the APIs on our side, it forces users of Compose Destinations to go handle this change and avoid runtime issues that way.

  • Parameter onlyIfResumed removed from navigate APIs. (including navigating back with result). Users should replace it with the new APIs dropUnlessResumed:
onClick = dropUnlessResumed {
    navigator.navigate(SomeDestination)
}

// BEFORE

onClick = {
    navigator.navigate(SomeDestination, onlyIfResumed = true)
}

Here it was just a timing thing. Given that we were forced into other breaking changes, might as well do this too. It also made it easier to provide functions to get DestinationsNavigator (see above) since it no longer depends on the NavBackStackEntry.

Improvements

  • Changes to help send SharedTransitionScope and AnimatedVisibilityScope.

Here is the recommended way to implement shared transition elements with the library:

//...
    SharedTransitionLayout {
        DestinationsNavHost(
           //...
            dependenciesContainerBuilder = {
                dependency(this@SharedTransitionLayout) // provide SharedTransitionScope to screens that need it
            }
        )
    }

// On screens:

@Destination<MyGraph>//...
@Composable
fun SharedTransitionScope.MyScreen(
    animatedVisibilityScope: AnimatedVisibilityScope //no need to do anything, it will be provided
) {
    Box( // just an example ofc
         modifier = Modifier
            .sharedElement(
                state = rememberSharedContentState(key = "whatever id"),
                animatedVisibilityScope = animatedVisibilityScope
            )
    )
//....
}

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta01...2.1.0-beta02

2.1.0-beta01

2 months ago

Changes

  • Fixed issue with nested classes as nav argument types
  • Small performance improvement
  • Generated mermaid graphs generated on default location no longer have clicks to another graph files (since we cannot easily know where those other files are in this case). If you define directories to generate these in (which is recommended), it will still work.

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-alpha06...2.1.0-beta01

2.0.0-beta01

2 months ago

Changes

  • Fixed issue with nested classes as nav argument types
  • Small performance improvement
  • Generated mermaid graphs generated on default location no longer have clicks to another graph files (since we cannot easily know where those other files are in this case). If you define directories to generate these in (which is recommended), it will still work.

Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpha07...2.0.0-beta01