Arch Toolkit no longer builds or publishes State Handle starting with 2.0.0-rc18.
Use event-observer-state:3.0.0 from
Arch Event Observer.
Existing rc17 artifacts remain historical releases; rc18 does not publish a compatibility shim
or relocation POM for their coordinates.
| Before | After |
|---|---|
io.github.matheus-corregiari:state-handle:2.0.0-rc17 |
io.github.matheus-corregiari:event-observer-state:3.0.0 |
br.com.arch.toolkit.stateHandle |
br.com.arch.toolkit.eventObserver.state |
SavableObject inheritance |
@Serializable models or an explicit serializer |
| Native objects with a JSON fallback | JSON saved under one key |
Replace dependencies and imports explicitly. Align Event Observer core, Compose and State to the same Event Observer version, independent of Splinter.
commonMain.dependencies {
implementation("io.github.matheus-corregiari:event-observer-state:3.0.0")
}
Apply Kotlin serialization in each module declaring serializable models.
Remove SavableObject inheritance. Use the holder APIs from
br.com.arch.toolkit.eventObserver.state in applications adopting State Handle.
The current showcase owns its GitHub UI state independently in its ViewModel.
Old native/shadow snapshots are not decoded by the new library. Choose a new key when starting fresh instead of interpreting an old native snapshot as JSON. Applications requiring continuity must convert old values before initializing the new holder.
flow() exposes a stable state flow; load starts a new operation and returns a job.
Payloads restore as success; loading and errors are transient. Defaults do not replace
restored values. Use a SavedStateHandle from a restoring owner; simply constructing a handle
does not add platform restoration.
Event Observer 3.0 privately owns each holder’s saved-state key. Update active holders
with set or setAsync; writing directly to SavedStateHandle[key] no longer updates them.
Keep one active holder per key. Existing JSON payloads remain readable.
The Compose builder API was replaced with DataResultContent for snapshots and
ComposableDataResult for flows; animations and side effects require explicit configuration.
See the upstream migration guide for API differences and platform limitations.