Skip to content

Releases: arkivanov/Decompose

3.5.0

Choose a tag to compare

@arkivanov arkivanov released this 15 Mar 16:27
d36078d

No changes since version 3.5.0-beta01.

Changes since version 3.4.0

  • Promoted the Duplicate Configurations feature to stable (#954, #971)
  • Changed Child#key type from Any to String and promote it to stable (#957)
  • Added support for per-child animators in Child Panels (#951, #949)
  • Added ChildPages composable functions exposing PagerState (#962, #963)
  • Added DecomposeSettings#mainThreadCheckEnabled setting (#964)
  • Added DecomposeSettings#update function (#966)
  • Added DecomposeSettings#onDecomposeError setting, deprecated onDecomposeError callback (#965)
  • Added handleDeepLink function with additional parameters for better deep link handling (#968)
  • Updated Compose to 1.9.3 (#955)
  • Fixed ChildPanels sometimes showing the Extra panel placeholder in SINGLE and DUAL modes (#948)
  • Fixed Children composable sometimes sticks when switching the stack quickly (#979)
  • Fixed web history rewriting incorrectly when started via a link (#983)

Duplicate Configurations feature is now stable

Child Stack and Child Pages navigation models now officially support duplicate configurations. The feature is disabled by default, it can be enabled via the new DecomposeSettings#duplicateConfigurationsEnabled global property. See the updated docs for Child Stack and Child Pages.

Changed Child#key type from Any to String and promote it to stable

The Child#key property is now of type String, which makes it possible to use it as a key in Compose. This fixes the occasional crash: Key XYZ was used multiple times.

The new DecomposeSettings API

This release introduces the new DecomposeSettings API for global Decompose configuration. Currently it contains the following properties:

duplicateConfigurationsEnabled - controls whether duplicate configurations are enabled or not.
mainThreadCheckEnabled - controls whether main thread checks are enabled or not.
onDecomposeError - called when a non-fatal error has occurred in Decompose. Replaces the (now deprecated) global onDecomposeError callback property.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.9.3

3.5.0-beta01

3.5.0-beta01 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 14 Feb 21:38
e637259
  • Fixed Children composable sometimes sticks when switching the stack quickly (#979)
  • Fixed web history rewriting incorrectly when started via a link (#983)

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.9.3

3.5.0-alpha01

3.5.0-alpha01 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 27 Dec 17:12
f82b212
  • Promoted the Duplicate Configurations feature to stable (#954, #971)
  • Changed Child#key type from Any to String and promote it to stable (#957)
  • Added support for per-child animators in Child Panels (#951, #949)
  • Added ChildPages composable functions exposing PagerState (#962, #963)
  • Added DecomposeSettings#mainThreadCheckEnabled setting (#964)
  • Added DecomposeSettings#update function (#966)
  • Added DecomposeSettings#onDecomposeError setting, deprecated onDecomposeError callback (#965)
  • Added handleDeepLink function with additional parameters for better deep link handling (#968)
  • Updated Compose to 1.9.3 (#955)
  • Fixed ChildPanels sometimes showing the Extra panel placeholder in SINGLE and DUAL modes (#948)

Duplicate Configurations feature is now stable

Child Stack and Child Pages navigation models now officially support duplicate configurations. The feature is disabled by default, it can be enabled via the new DecomposeSettings#duplicateConfigurationsEnabled global property. See the updated docs for Child Stack and Child Pages.

Changed Child#key type from Any to String and promote it to stable

The Child#key property is now of type String, which makes it possible to use it as a key in Compose. This fixes the occasional crash: Key XYZ was used multiple times.

The new DecomposeSettings API

This release introduces the new DecomposeSettings API for global Decompose configuration. Currently it contains the following properties:

duplicateConfigurationsEnabled - controls whether duplicate configurations are enabled or not.
mainThreadCheckEnabled - controls whether main thread checks are enabled or not.
onDecomposeError - called when a non-fatal error has occurred in Decompose. Replaces the (now deprecated) global onDecomposeError callback property.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.9.3

3.4.0

Choose a tag to compare

@arkivanov arkivanov released this 28 Sep 16:30

Changes since version 3.4.0-beta01

  • Fixed Child Stack and Child Pages incorrectly initialized when state is not restored (#938)

Earlier changes since version 3.3.0

  • Use SPDX identifier in POMs (#851 by @TheMrMilchmann)
  • Relax StrictMode with restarting the Activity stack for deep links (#853)
  • Don't restart Activity stack when there is no deep link (#854)
  • Added backHandlerPriority argument to childContext extension function (#859)
  • Updated Compose to 1.8.0-rc01 and compileSdkVersion to 35 (#870)
  • Added Child Items navigation model (#878, #882, #880)
  • Added PagesNavigator#setItems extension function (#881)
  • Deprecated Value#getValue operator overload (#885, see #877)
  • Exposed ChildPagesPager typealias (#886, see #883)
  • Avoid using Modifier.graphicLayer in predictive back animatables (#884, see #877)
  • Fixed IndexOutOfBoundsException in ChildPages (#887, see #866)
  • Added JetpackComponentContext API (#895, #896)
  • Updated Compose to 1.8.2 (#897)
  • Fixed ClassCastException in SlotNavigator#dismiss on wasmJs on Kotlin 2.2 (#888, see #879)
  • Explicit error handling in Relay (#899, see #892)
  • Expose StackAnimationScope from ChildStack instead of AnimatedVisibilityScope (#901, #925)
  • Use graphicsLayer with CompositingStrategy.Offscreen in predictive back animations (#919, see #918)
  • Renamed androidPredictiveBackAnimatable to androidPredictiveBackAnimatableV1 (#921)
  • Added androidPredictiveBackAnimatableV2 from Android Vanilla Ice Cream (#923)
  • Fixed incorrect enter shape in androidPredictiveBackAnimatable when not fullscreen (#922)
  • Fixed ChildPages animation sometimes stuck when interrupted (#924)
  • Fixed Child Slot state not saved when not active (#916)
  • Fixed CCE in SlotNavigator#dismiss on wasmJs (#915)
  • Fixed ChildPages composable discards the selected index change while not in composition (#930, see #929)
  • Fixed Web History Navigation duplicates history items when nested (#933, see #907)

The new Child Items navigation model

This release introduces a new experimental navigation model – Child Items. It's designed specifically for displaying child components in lazy lists or grids, but can also be used to organize components in an arbitrary list with flexible lifecycles. See the updated docs.

New JetpackComponentContext API

This release adds a new module jetpack-component-context that provides the JetpackComponentContext API for interop with AndroidX Architecture Components. See the updated docs for more information.

The new androidPredictiveBackAnimatableV2 animation

The androidPredictiveBackAnimatable has been renamed to androidPredictiveBackAnimatableV1. Plus the new androidPredictiveBackAnimatableV2 animation was added, resembling the standard predictive back animation from Android Vanilla Ice Cream and Baklava. See the updated docs for more information.

BackGestureAndroidV2.mp4

The new StackAnimationScope

The ChildStack composable function now exposes StackAnimationScope instead of AnimatedVisibilityScope, providing access to stackAnimationDirection: Direction? property. This allows better UI customization during stack animations.

Improved predictive back animation scaling quality

This release significantly improves the quality of scaling when performing predictive back animations with Jetpack Compose.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.2

3.4.0-beta01

3.4.0-beta01 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 12 Sep 21:56
3147421
  • Fixed Web History Navigation duplicates history items when nested (#933, see #907)

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.2

3.4.0-alpha05

3.4.0-alpha05 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 09 Sep 20:05
1e362ef
  • Fixed ChildPages composable discards the selected index change while not in composition (#930, see #929)

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.2

3.4.0-alpha04

3.4.0-alpha04 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 06 Sep 18:57
6fe25c8
  • Explicit error handling in Relay (#899, see #892)
  • Expose StackAnimationScope from ChildStack instead of AnimatedVisibilityScope (#901, #925)
  • Use graphicsLayer with CompositingStrategy.Offscreen in predictive back animations (#919, see #918)
  • Renamed androidPredictiveBackAnimatable to androidPredictiveBackAnimatableV1 (#921)
  • Added androidPredictiveBackAnimatableV2 from Android Vanilla Ice Cream (#923)
  • Fixed incorrect enter shape in androidPredictiveBackAnimatable when not fullscreen (#922)
  • Fixed ChildPages animation sometimes stuck when interrupted (#924)
  • Fixed Child Slot state not saved when not active (#916)
  • Fixed CCE in SlotNavigator#dismiss on wasmJs (#915)

The new androidPredictiveBackAnimatableV2 animation

The androidPredictiveBackAnimatable has been renamed to androidPredictiveBackAnimatableV1. Plus the new androidPredictiveBackAnimatableV2 animation was added, resembling the standard predictive back animation from Android Vanilla Ice Cream and Baklava. See the updated docs for more information.

BackGestureAndroidV2.mp4

The new StackAnimationScope

The ChildStack composable function now exposes StackAnimationScope instead of AnimatedVisibilityScope, providing access to stackAnimationDirection: Direction? property. This allows better UI customization during stack animations.

Improved predictive back animation scaling quality

This release significantly improves the quality of scaling when performing predictive back animations with Jetpack Compose.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.2

3.4.0-alpha03

3.4.0-alpha03 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 28 Jun 13:10
0c29e40
  • Added JetpackComponentContext API (#895, #896)
  • Updated Compose to 1.8.2 (#897)
  • Fixed ClassCastException in SlotNavigator#dismiss on wasmJs on Kotlin 2.2 (#888, see #879)

New JetpackComponentContext API

This release adds a new module jetpack-component-context that provides the JetpackComponentContext API for interop with AndroidX Architecture Components. See the updated docs for more information.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.2

3.4.0-alpha02

3.4.0-alpha02 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 31 May 12:18
  • Added Child Items navigation model (#878, #882, #880)
  • Added PagesNavigator#setItems extension function (#881)
  • Deprecated Value#getValue operator overload (#885, see #877)
  • Exposed ChildPagesPager typealias (#886, see #883)
  • Avoid using Modifier.graphicLayer in predictive back animatables (#884, see #877)
  • Fixed IndexOutOfBoundsException in ChildPages (#887, see #866)

The new Child Items navigation model

This release introduces a new experimental navigation model – Child Items. It's designed specifically for displaying child components in lazy lists or grids, but can also be used to organize components in an arbitrary list with flexible lifecycles. See the updated docs.

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.0-rc01

3.4.0-alpha01

3.4.0-alpha01 Pre-release
Pre-release

Choose a tag to compare

@arkivanov arkivanov released this 03 May 00:30
a53e5ef
  • Use SPDX identifier in POMs (#851 by @TheMrMilchmann)
  • Relax StrictMode with restarting the Activity stack for deep links (#853)
  • Don't restart Activity stack when there is no deep link (#854)
  • Added backHandlerPriority argument to childContext extension function (#859)
  • Updated Compose to 1.8.0-rc01 and compileSdkVersion to 35 (#870)

Versions and dependencies

Kotlin: 2.1.0
Essenty: 2.5.0
kotlinx-serialization: 1.6.3
Multiplatform Compose: 1.8.0-rc01