Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Update circuit to v0.28.0 #280

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
Loading
from
Open

Update circuit to v0.28.0 #280

wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 27, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
com.slack.circuit:circuit-codegen 0.25.0 -> 0.28.0 age adoption passing confidence
com.slack.circuit:circuit-codegen-annotations 0.25.0 -> 0.28.0 age adoption passing confidence
com.slack.circuit:circuit-foundation 0.25.0 -> 0.28.0 age adoption passing confidence

Release Notes

slackhq/circuit (com.slack.circuit:circuit-codegen)

v0.28.0

Compare Source

2025-05-12

New: circuitx-navigation adding navigation interception capabilities:

We've added a new navigation intercepting system to Circuit that lets you hook into and modify
navigation before it happens. The InterceptingNavigator sits before a regular Circuit Navigator,
giving you a chance to inspect or change navigation events. With the NavigationInterceptor
interface, you can handle goTo, pop, and resetRoot calls and decide if they should proceed,
fail, be skipped, or be rewritten to navigate somewhere else. There's also aNavigationEventListener
if you just want to know when navigation happens without changing it.
This new system is handy for advanced routing, blocking navigation, or tracking navigation events
for analytics.

dependencies {
  implementation("com.slack.circuit:circuitx-navigation:<version>")
}

Docs: https://slackhq.github.io/circuit/circuitx/navigation

Misc:
  • Fix the provided Modifier not being used in NavigatorDefaults.EmptyDecoration
  • Fix rememberCircuitNavigator() not being able to propagate the root pop as its BackHandler was still active
  • Added a common rememberCircuitNavigator() that uses a BackHandler to trigger Navigator.pop calls
  • [docs] Add more alternative state designs.
  • Update Compose Android BOM to 2025.05.00.
  • Update Compose Android to 1.8.1.
  • Update to Compose Multiplatform to 1.8.0.
  • Change the published jvmTarget to 11
  • Update molecule to 2.1.0

v0.27.1

Compare Source

2025-04-14

  • Fix: Crash caused by calling resetRoot while the same Screen was still in the composition
  • New: Added a sample app demonstrating bottom bar navigation
  • [gesture-navigation] Update AndroidPredictiveBackNavDecorator to behave more like the Android predictive back motion spec
  • [gesture-navigation] Change the Compose Material dependency to not be exposed as an api
  • Update compose-bom to 2025.04.00
  • Update dagger to 2.56.1
  • Update kotlinInject.anvil to 0.1.3
  • Update kotlinx-coroutines to 1.10.2
  • Update androidx.core to 1.16.0
  • [samples] Update mosaic to 0.17.0

Special thanks to @​OSemenovBoyarka and @​asapha for contributing to this release!

v0.27.0

Compare Source

2025-02-28

Screen based animation overrides

We have added experimental support for animations based on the source/target screens and the type of navigation event. This can be accomplished with the the new AnimatedScreenTransform interface, allowing customization of the ContentTransform used when transitioning between screens. Having support for screen based animation overrides is especially important for use with shared element transitions, as it provides the ability to replace the transition before the shared elements are loaded.

See this PR for more details and example implementations. Please share feedback in this discussion.

Behaviour Changes:

State retention logic was simplified by removing LocalCanRetainChecker, with CanRetainChecker becoming an implementation detail of a RetainedStateRegistry.
This potentially impacts uses of rememberRetained that depended on LocalCanRetainChecker, as rememberRetained would use the composition local before using rememberCanRetainChecker. Also, as rememberCanRetainChecker was only needed for Continuity it has been renamed to rememberContinuityCanRetainChecker.

Misc:
  • Fix a crash caused by calling resetRoot while NavigableCircuitContent was animating.
  • Update androidx.activity to v1.10.1.
  • [code gen] Make assisted injection detection more robust.
  • [code gen] Update to KSP 2.1.10-1.0.31.
  • [code gen] Update to KotlinPoet 2.1.0.
  • [samples] Update mosaic to 0.16.0
  • [samples] Include shared element tutorial changes.

Special thanks to @​vulpeszerda for contributing to this release!

v0.26.1

Compare Source

2025-02-13

  • Fix crash on right side back gesture.
  • Update CupertinoGestureNavigationDecoration to be a AnimatedNavDecorator.
  • Fix value restoration after removeState call in RetainedStateHolder.
  • Update Android compose artifacts to 1.7.8.
  • [docs] Add tutorial for how to use Circuit shared elements.
  • [docs] Added basic reference guide on deep-linking using circuit for Android platform.

Special thanks to @​vulpeszerda for contributing to this release!

v0.26.0

Compare Source

2025-02-06

Happy new year!

Shared Elements API!

After a lot of iteration and work, this release adds support for Compose's new shared elements APIs.

These are still experimental and subject to change, both in Circuit and the underlying Compose APIs.

See this PR for full details as well as sample integrations: https://github.com/slackhq/circuit/pull/1550. Please share feedback in this discussion. More formal docs to come as well, we'll publish updates there!

For now, the easiest way to support shared element transitions is to wrap your content with a SharedElementTransitionLayout.

CircuitCompositionLocals(circuit) {
  SharedElementTransitionLayout {
    NavigableCircuitContent(
      navigator = navigator,
      backStack = backStack,
    )
  }
}

SharedElementTransitionLayout creates and provides a SharedElementTransitionScope to content within it, and in turn exposes a SharedTransitionScope for use with standard compose shared elements/bounds animations. This is supported in NavigableCircuitContent and overlays.

There is also a PreviewSharedElementTransitionLayout for help with Compose previews.

Behaviour Changes: rememberRetained

Previously, rememberRetained could sometimes restore values when a composable was re-added, depending on whether its parent RetainedStateRegistry had been saved (#​1783).
Now, rememberRetained aligns with remember and rememberSaveable: if a composable is removed and later re-added, its value will not be restored unless it is explicitly saved and then restored via the registry.

Update rememberRetained to allow CanRetainChecker to be updated in place.

Behaviour Change: RetainedStateRegistry
  • saveAll now returns the saved values.
  • RetainedStateRegistry.Entry.unregister now returns whether the unsaved valueProvider was actually removed.
  • saveAll and saveValue now skip storing child values when CanRetainChecker returns false.
New: RetainedStateHolder

Similar to SaveableStateHolder, RetainedStateHolder provides a mechanism to maintain separate RetainedStateRegistry entries for specific keys. This allows saving the state defined with rememberRetained for a subtree before it is disposed, so that the subtree can later be recomposed with its state restored.

val retainedStateHolder = rememberRetainedStateHolder()
var currentTab by remember { mutableStateOf(TabA) }

retainedStateHolder.RetainedStateProvider(key = currentTab.name) {
  // rememberRetained values in tab content are preserved across tab switches
  when (currentTab) {
    TabA -> {
      TabAContent()
    }
    TabB -> {
      TabBContent()
    }
    TabC -> {
      TabCContent()
    }
  }
}
Implementation Changes: NavigableCircuitContent
  • The approach of managing a separate RetainedStateRegistry for each record has been changed to use RetainedStateHolder instead.
  • Change SaveableStateHolder to release saved states of removed records.
Misc
  • Fixe an issue causing codegen to fail for class @​Inject annotations.
  • Compile against Android SDK 35.
  • Update Compose Android BOM to 2025.01.01.
  • Update to androidx.annotation 1.9.1.
  • Update to androidx.activity 1.10.0.
  • Update to Compose Android 1.7.7.
  • Update to Compose Multiplatform 1.7.3.
  • Update to Kotlin 1.9.10.
  • [code gen] Update to KSP 1.9.10-1.0.29.
  • [code gen] Update to Dagger 2.55.
  • [code gen] Update to KotlinPoet 2.0.0.
  • [code gen] Build against Anvil-KSP 0.4.1. Should still be compatible with square/anvil as well.
  • [code gen] Build against kotlin-inject-anvil 0.1.2. Should still be compatible with square/anvil as well.
  • [samples] Update mosaic + modernize mosaic counter sample to fully use effects.
  • [docs] Fix variable casing in Navigation documentation example.

Special thanks to @​vulpeszerda, @​rharter, @​alexvanyo, and @​easyhooon for contributing to this release!


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot changed the title Update circuit to v0.26.1 Update circuit to v0.27.0 Mar 1, 2025
@renovate renovate bot force-pushed the renovate/circuit branch from 9661ad5 to 0d6bdcd Compare March 1, 2025 10:08
@renovate renovate bot force-pushed the renovate/circuit branch 2 times, most recently from 31803fd to b4d32c2 Compare April 15, 2025 02:48
@renovate renovate bot changed the title Update circuit to v0.27.0 Update circuit to v0.27.1 Apr 15, 2025
@renovate renovate bot force-pushed the renovate/circuit branch from b4d32c2 to d0195bf Compare April 16, 2025 17:35
@renovate renovate bot force-pushed the renovate/circuit branch from d0195bf to d76d5e7 Compare May 13, 2025 02:23
@renovate renovate bot changed the title Update circuit to v0.27.1 Update circuit to v0.28.0 May 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.