Skip to content

Releases: arkivanov/Decompose

2.1.0-compose-experimental-alpha-01

29 May 21:54
Compare
Choose a tag to compare
Pre-release

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

29 May 21:52
Compare
Choose a tag to compare
2.1.0-alpha-01 Pre-release
Pre-release
  • 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

29 May 20:50
Compare
Choose a tag to compare
  • 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

29 May 20:51
Compare
Choose a tag to compare
Pre-release

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

15 Apr 10:08
Compare
Choose a tag to compare
  • Updated Kotlin to 1.8.20 and other dependencies (#370)
  • Use NSRecursiveLock instead of NSLock (#365 by @M0Coding)
  • Added policy argument to subscribeAsState 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

15 Apr 10:09
fd83d2f
Compare
Choose a tag to compare
Pre-release

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

04 Apr 13:03
Compare
Choose a tag to compare
  • Value and MutableValue 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, deprecated Child 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 to 1.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

04 Apr 13:04
Compare
Choose a tag to compare
Pre-release

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

02 Feb 20:41
2f22432
Compare
Choose a tag to compare

Changes since 1.0.0-beta-04

  • Version updates (#311, #320):

    • Kotlin 1.8.0
    • JB Compose 1.3.0
    • Jetpack Compose compiler 1.4.0
    • Essenty 1.0.0
    • parcelize-darwin 0.1.3
  • Added defaultComponentContext extension for Android Fragment (#305)

  • Generic Navigation is promoted to stable (#313)

  • Stack animation API is promoted to stable (#314)

  • ViewContext now extends LifecycleOwner 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

02 Feb 21:49
eda866f
Compare
Choose a tag to compare
Pre-release

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