Releases: arkivanov/Decompose
2.0.0-compose-experimental
This is the same release as 2.0.0, but with Compose for iOS and Web (Canvas, js
only) support.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.1.0
parcelize-darwin: 0.1.4
JetBrains Compose: 1.4.0
2.1.0-compose-experimental-alpha-02
This is the same release as 2.1.0-alpha-02, but with Compose for iOS and Web (Canvas, js
only) support.
⚠️ If you are targeting Android, this version will only compile against the Android 14 (Upside Down Cake) Beta 1 SDK or higher.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.2.0-alpha-02
parcelize-darwin: 0.1.4
JetBrains Compose: 1.4.0
2.1.0-alpha-02
- Separate Modifiers for exiting and entering children in
predictiveBackAnimation
(#410) - Allow configuring swipe edges in
PredictiveBackGestureOverlay
(#411) - Fixed predictive back gesture doesn't restore the UI state of the previous screen (#409)
⚠️ If you are targeting Compose for iOS or Web, please use Decompose version 2.1.0-compose-experimental-alpha-02.
⚠️ If you are targeting Android, this version will only compile against the Android 14 (Upside Down Cake) Beta 1 SDK or higher.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.2.0-alpha-02
parcelize-darwin: 0.1.4
extensions-compose-jetpack
Jetpack Compose: 1.4.0
Jetpack Compose Compiler: 1.4.5
extensions-compose-jetbrains
JetBrains Compose: 1.4.0
2.1.0-compose-experimental-alpha-01
This is the same release as 2.1.0-alpha-01, but with Compose for iOS and Web (Canvas, js
only) support.
⚠️ If you are targeting Android, this version will only compile against the Android 14 (Upside Down Cake) Beta 2 SDK.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.2.0-alpha-01
parcelize-darwin: 0.1.4
JetBrains Compose: 1.4.0
2.1.0-alpha-01
- Support Predictive Back Gesture (#398)
⚠️ If you are targeting Compose for iOS or Web, please use Decompose version 2.1.0-compose-experimental-alpha-01.
⚠️ If you are targeting Android, this version will only compile against the Android 14 (Upside Down Cake) Beta 2 SDK.
The new Predictive Back Gesture
This release adds support for the new Android Predictive Back Gesture. Please see the updated docs.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.2.0-alpha-01
parcelize-darwin: 0.1.4
extensions-compose-jetpack
Jetpack Compose: 1.4.0
Jetpack Compose Compiler: 1.4.5
extensions-compose-jetbrains
JetBrains Compose: 1.4.0
2.0.0-beta-01
- Added new experimental Child Pages navigation model (#396)
- Added
StackNavigator#popTo
extension function (#387) - Destroy components after destroying their retained instances (#388, fix for #383)
- Fixed
MergedLifecycle
not destroyed when one lifecycle is destroyed before another is created (#394)
⚠️ If you are targeting Compose for iOS or Web, please use Decompose version 2.0.0-compose-experimental-beta-01.
The new Child Pages navigation model
This release introduces the new experimental Child Pages navigation model, which can be used for a pager-like navigation. Please see the related discussion, the API design, and the updated docs.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.1.0
parcelize-darwin: 0.1.4
extensions-compose-jetpack
Jetpack Compose: 1.4.0
Jetpack Compose Compiler: 1.4.5
extensions-compose-jetbrains
JetBrains Compose: 1.4.0
2.0.0-compose-experimental-beta-01
This is the same release as 2.0.0-beta-01, but with Compose for iOS and Web (Canvas, js
only) support.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.1.0
parcelize-darwin: 0.1.4
JetBrains Compose: 1.4.0
2.0.0-alpha-02
- Updated Kotlin to
1.8.20
and other dependencies (#370) - Use
NSRecursiveLock
instead ofNSLock
(#365 by @M0Coding) - Added
policy
argument tosubscribeAsState
function (#371)
Breaking changes
The new policy
argument in subscribeAsState
function breaks the binary compatibility of both extensions-compose-jetbrains
and extensions-compose-jetpack
modules. However, they are still source compatible. Please mind and transitive dependencies using an old version.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.1.0
parcelize-darwin: 0.1.4
extensions-compose-jetpack
Jetpack Compose: 1.4.0
Jetpack Compose Compiler: 1.4.5
extensions-compose-jetbrains
JetBrains Compose: 1.4.0
2.0.0-compose-experimental-alpha-02
This is the same release as 2.0.0-alpha-02, but with Compose for iOS and Web (Canvas, js
only) support.
Versions and dependencies
Kotlin: 1.8.20
Essenty: 1.1.0
parcelize-darwin: 0.1.4
JetBrains Compose: 1.4.0
2.0.0-alpha-01
Value
andMutableValue
are now thread-safe (#344)- Error handling and main thread checks (#354)
- Avoid using
movableContentOf
in some animation APIs (#350) - Always recreate components in Child Stack (#351)
- Introduced
Child Slot
, deprecatedChild Overlay
(#360) - Fixed a bug when state is not saved for initially inactive components (#353)
- Updated Jetpack Compose to
1.4.0
and JB Compose to1.3.1
(#358, #361)
Thread-safe Value
and MutableValue
This change addresses the issue #343. All default implementations of Value
and MutableValue
are now thread-safe, and won't crash when accessed on a non-UI thread.
⚠️ Please note that the navigation still should be performed on the UI thread. There will be no crash when navigating on a non-UI thread, and the navigation events will be synchronzed. However, instantiating components on a non-UI thread is error-prone.
Error handling and main thread checks
As mentioned above, Decompose won't crash when the navigation is performed on a non-UI thread. By default, Decompose will print such events with stack traces in the logs. It is also possible to override this behaviour using the new experimental error handling API, if you prefer to crash or report such errors instead. Please see the updated docs for more information.
Avoid using movableContentOf
in some animation APIs
This change addresses the following issues: #326, #330, #348. Turned out Compose movableContentOf
API has some bugs. Decompose used this API for all Child Stack
animations (the Children
function). Now Decompose uses movableContentOf
only in one case, when different animations are required for different transition directions or when animations also depend on the other child being animated - Children(animation = stackAnimation { child, otherChild, direction -> ... })
. movableContentOf
is not used when you supply one single animator - Children(animation = stackAnimation(<some animator here>))
, or when using the simple selector - Children(animation = stackAnimation { child -> ... })
.
Always recreate components in Child Stack (#351)
Now Child Stack
always instantiates all components in the stack, e.g. when you supply multiple components for the initial stack, or when the hosting component is recreated due to configuration changes or process death. Components are created in the original order from older to newer, and destroyed from newer to older. The backStackCreateDepth
argument is removed from the childStack
function. The ChildStack#backStack
and ChildStack#items
properties are now of type List<Child.Created>
. See the updated docs for more information.
Introduced Child Slot
, deprecated Child Overlay
(#360)
Turned out the Child Overlay
naming causes confusions sometimes. One may assume that Child Overlay
only suitable for displaying dialogs, popups, modal sheets, etc. However, it may be also used for showing and hiding parts of the UI. The new name Child Slot
is there to resolve that confusion. Child Overlay
is now deprecated and will be removed in stable version 2.0.0
. Please use the new Child Slot
API, see the updated docs for more information.
Binary ans source compatibility with version 1.0.0
This version is binary and source incompatible with version 1.0.0
. Please mind any transitive dependencies that may use the old version of Decompose.
Versions and dependencies
Kotlin: 1.8.0
Essenty: 1.0.0
parcelize-darwin: 0.1.3
extensions-compose-jetpack
Jetpack Compose: 1.4.0
Jetpack Compose Compiler: 1.4.1
extensions-compose-jetbrains
JetBrains Compose: 1.3.1