Skip to content

2.5.0-alpha02

Pre-release
Pre-release
Compare
Choose a tag to compare
@Nek-12 Nek-12 released this 09 Mar 17:13
· 283 commits to master since this release
2.5.0-alpha02
f55a84d

New Features:

  • Remote Debugging! A new module family debugger-* allows to debug your stores remotely, with a dedicated app provided for Linux, MacOS, Windows. Also, the debugger app is implemented using FlowMVI and can be used as a sample app. Debugger setup explained in docs.
  • Essenty Integration! Two new modules: essenty and essenty-compose provide integration with Decompose and Essenty libraries. Essenty setup explained in docs
  • New Lifecycle Implementation for store subscription in Compose. The Compose module now provides an interface SubscriberLifecycle that has to be provided to the subscribe function to subscribe to the store. It also allows integration with Platform lifecycle (when it is made multiplatform) and Essenty lifecycle.
  • Refactoring of StoreLogging allowed to provide a more robust logging code on all supported platforms. You can now provide your own StoreLogger implementation or use the platform one as before.
  • Wasm support for core, test and compose modules! Also enables missing js support for compose module.
  • Compose 1.6.3
  • New flag atomicStateUpdates in store builders allows disabling serialization / atomicity of state updates if that is not needed, improving performance. true by default
  • Project Icon, banner, and star history
  • New overload of store.subscribe() that does not require a scope ( a with() call)

Bug Fixes:

  • Fixed file name for serializeState function using store name
  • Fix Saver s handling cancellation exceptions
  • Added a missing overload of timeTravel that would create and return the object for the user

Breaking Changes:

  • Compose's subscribe function now requires the consumer to pass a lifecycle to it as a parameter on all platforms where lifecycle is not supported to prevent the user from mistakenly subscribing to the store without using a proper lifecycle. Lifecycle implementations can be custom, provided via a composition local, or used from an integration module. To maintain a previous behavior on non-Android platforms, pass a DefaultLifecycle as a parameter to the subscribe function. Android users don't have this breaking change.
  • Store implementations now require a hashcode/equals contract
  • When store has actions disabled, it will now throw an UnrecoverableException to fail faster and avoid recover plugins
  • Deprecated parentStorePlugin in favor of a simple store.collect suspending function. It's much more flexible and allows to merge the incoming state with other data sources
  • Deprecated platformLoggingPlugin as a default loggingPlugin now uses a platform logger by default

What's Changed