| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 0.36.0 source code.tar.gz | 2026-08-05 | 4.4 MB | |
| 0.36.0 source code.zip | 2026-08-05 | 5.1 MB | |
| README.md | 2026-08-05 | 6.0 kB | |
| Totals: 3 Items | 9.6 MB | 1 | |
New
circuit-codegencan now generate kotlinx serialization registrations forScreenandPopResulttypes. Annotate each type with@CircuitSerializable(scope). The annotation supplies the default kotlinx serializer, andcircuit-codegencontributes a registration through the selected DI framework. Pass the injectedSet<CircuitSerializerRegistration>toSerializableCircuitSaver.
A Metro setup looks like this:
```kotlin @Parcelize @CircuitSerializable(AppScope::class) data class DetailScreen(val itemId: Long) : Screen
@Provides fun provideCircuitSaver( registrations: Set<CircuitSerializerRegistration>, ): CircuitSaver = SerializableCircuitSaver(registrations) ```
- Metro, Hilt, kotlin-inject-anvil, and Anvil can provide registrations declared in different Gradle modules to the same application graph.
- Apps without one of these DI frameworks can continue to register types manually or use the reflective saver on JVM and Android.
- Android screens and results must still implement
Parcelable. A future release will remove this requirement.
See the code generation guide for setup and generated code examples.
rememberAnsweringNavigatorandansweringNavigationAvailableare now part ofcircuit-runtime, so presenters can use them throughcircuit-runtime-presenter.NavigableCircuitContentcontinues to provide result delivery. Without it,rememberAnsweringNavigatorreturns the supplied fallback navigator.AnsweringResultHandlerhas moved tocircuit-runtime.rememberAnsweringResultHandlerremains incircuit-foundationto provide saveable-state persistence without adding Compose runtime-saveable tocircuit-runtime.
Fixed
- When
CircuitRetainedSettings.useFirstPartyis enabled,retain {}values removed from conditional UI now retire normally instead of surviving for the navigation record's entire lifetime.
Deprecated
- The Foundation
answeringNavigationAvailablefunction andrememberAnsweringNavigatoroverloads that take a fallbackNavigatorare deprecated. Use the runtime versions. - IntelliJ IDEA and Android Studio versions before the 2026.2 platform may fail to update imports for these same-named replacements or leave a literal
Tin a reified call. Update the import manually if this occurs (KTIJ-12093). - The experimental Foundation
AnsweringResultHandlertype is deprecated in favor of its runtime replacement. ItsSaverAPIs have been removed. UserememberAnsweringResultHandlerfor a saveable handler.
Changed
- circuit-retained: Added the key-based
retain(key = ...)andretainSaveable(...)APIs. Non-saveablerememberRetained(key = ...)calls are now deprecated in favor ofretain(key = ...). Unkeyed and saveablerememberRetainedvariants andrememberRetainedSaveableremain supported but will eventually be deprecated.
Contributors
Special thanks to the following contributors for contributing to this release!
- @JessalynWang
What's Changed
- Update jb.lifecycle to v2.11.0 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2807
- Update dependency erb to v6.0.5 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2808
- Update dependency mkdocs-material to v9.7.7 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2810
- Fix code gen docs render of supported DI framework list by @JessalynWang in https://github.com/slackhq/circuit/pull/2809
- Update roborazzi to v1.70.0 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2811
- Update dependency erb to v6.0.6 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2812
- Add serialization to samples in prep for removed parcelable by @ZacSweers in https://github.com/slackhq/circuit/pull/2813
- Move AnsweringResult* APIs to circuit-runtime by @ZacSweers in https://github.com/slackhq/circuit/pull/2815
- Update okio to v3.18.0 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2814
- Update agp to v9.3.1 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2816
- Update ZacSweers/kempt action to v0.3.1 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2818
- Update okio to v3.18.1 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2817
- Update dependency androidx.loader:loader to v1.2.0 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2820
- Docs - Add missing artifact for shared elements by @stagg in https://github.com/slackhq/circuit/pull/2824
- Update benchmark to v1.5.0-beta01 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2819
- Update dependency Markdown to v3.10.3 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2822
- Update dependency dev.zacsweers.metro:runtime to v1.4.0 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2823
- Update dependency org.jsoup:jsoup to v1.23.1 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2821
- Update ktor monorepo to v3.5.2 by @slack-oss-bot in https://github.com/slackhq/circuit/pull/2828
- Fix subcircuit android unit tests not running by @ZacSweers in https://github.com/slackhq/circuit/pull/2827
- Split off keyed and saveable retain APIs for longer term by @ZacSweers in https://github.com/slackhq/circuit/pull/2825
- Remove RecordRetainedValuesStores workaround by @ZacSweers in https://github.com/slackhq/circuit/pull/2826
- Couple small doc/changelog cleanups by @ZacSweers in https://github.com/slackhq/circuit/pull/2829
- Introduce CircuitSaver code gen by @ZacSweers in https://github.com/slackhq/circuit/pull/2831
New Contributors
- @JessalynWang made their first contribution in https://github.com/slackhq/circuit/pull/2809
Full Changelog: https://github.com/slackhq/circuit/compare/0.35.1...0.36.0