Releases: arkivanov/Decompose
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
2.0.0-compose-experimental-alpha-01
This is the same release as 2.0.0-alpha-01, but with Compose for iOS and Web (Canvas) support.
Versions and dependencies
Kotlin: 1.8.0
Essenty: 1.0.0
parcelize-darwin: 0.1.3
JetBrains Compose: 1.3.1
1.0.0
Changes since 1.0.0-beta-04
-
- Kotlin
1.8.0
- JB Compose
1.3.0
- Jetpack Compose compiler
1.4.0
- Essenty
1.0.0
parcelize-darwin
0.1.3
- Kotlin
-
Added
defaultComponentContext
extension for AndroidFragment
(#305) -
Generic Navigation is promoted to stable (#313)
-
Stack animation API is promoted to stable (#314)
-
ViewContext
now extendsLifecycleOwner
interface (extensions-android
module) (#322)
The new defaultComponentContext
extension function
This release adds a new extension function for Android Fragments - Fragment#defaultComponentContext
. Now integrating a root component into a Fragment is as easy as with Activity. Plus it's now possible to use OnBackPressedDispatcher
from the hosting Activity. See the updated docs for more information.
Generic Navigation is promoted to stable
Generic Navigation API is now stable and is no longer annotated with @ExperimentalDecomposeApi
. The ComponentContext#children
function got a new callback - onStateChanged
. Also most of the arguments were renamed and reordered. See the updated docs for more information.
Stack animation API is promoted to stable
Stack animation API is now stable and is no longer annotated with @ExperimentalDecomposeApi
. There are no changes in the API.
Versions and dependencies
Kotlin: 1.8.0
Essenty: 1.0.0
parcelize-darwin: 0.1.3
extensions-compose-jetpack
Jetpack Compose: 1.2.1
Jetpack Compose Compiler: 1.4.0
extensions-compose-jetbrains
JetBrains Compose: 1.3.0
1.0.0-compose-experimental
This is the same release as 1.0.0, but with Compose for iOS and Web (Canvas) support.
Versions and dependencies
Kotlin: 1.8.0
Essenty: 1.0.0
parcelize-darwin: 0.1.3
JetBrains Compose: 1.3.0