⚡️ Circuit

==========

slackhq.github.io/circuit

License

--------

Copyright 2022 Slack Technologies, LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

All modules:

Link copied to clipboard

A Compose backstack implementation adapted from Adam Powell's gist here: https://gist.github.com/adamp/17b4e5cfafc7d44a0023dc2fbdb972e8

Link copied to clipboard

A Kotlin Symbol Processing (KSP) plugin that automatically generates Ui.Factory and Presenter.Factory implementations for Circuit.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

This optional artifact contains alternative implementations of rememberRetained, produceRetainedState, collectAsRetainedState(), etc. This is useful for cases where you want to retain non-saveable state across configuration changes or across a back stack. This comes at the cost of not participating in the SavedStateRegistry and thus not being able to persist across process death, but added flexibility of not requiring Saveable values. For values that should also survive process death, rememberRetainedSaveable layers an opportunistic Saver on top of retention.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

kotlinx serialization support for persisting Circuit navigation state. This artifact provides CircuitSaver implementations that encode Screens and PopResults to SavedState with androidx.savedstate. Saveable back stacks can survive configuration changes and process death without storing Parcelable values. Android screens and results must still be Parcelable. A future release will remove this requirement.

Link copied to clipboard

A JVM/Android companion to circuit-serialization that persists @Serializable screens without requiring polymorphic registration. ReflectiveSerializableCircuitSaver records each class's fully qualified name in saved state and resolves its serializer reflectively on restore.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard