Skip to content

0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 02:54

Added

  • Liquid Glass buttons (iOS 26)NativeButton / NativeIconButton gain
    ios = NativeButtonIosOptions(background = Glass | ProminentGlass): a real UIGlassEffect capsule
    that refracts the content beneath the button and morphs on press. Glass is the clear adaptive
    flavor (content adopts the system label color); ProminentGlass tints the glass with the variant's
    container color. Silent fallback to the flat variant below iOS 26; documented no-op on Android;
    NativeSplitButton accepts the option but renders Automatic this release. Demo: sample app →
    Settings → Developer → "Liquid glass buttons".
  • NativeCollapsible — the platform-safe way to collapse/expand content containing native
    controls (use instead of AnimatedVisibility around Native* components). A real
    AnimatedVisibility on Android; on iOS it animates the container's size while content enters and
    leaves in one clean step, and NativeText inside renders through Compose (no interop cut-out
    flash during the animation).
  • "Interop churn test" screen in the sample app (Settings → Developer) — regression harness for
    the interop synchronization behaviors below, with the pathological AnimatedVisibility pattern
    reproducible behind an off-by-default toggle.

Fixed

  • iOS: ghost / doubled / stale native controls after interop churn. Compose Multiplatform queues
    every UIKit-side interop mutation (insert, position update, removal, onRelease) into a
    transaction executed only when the next rendered frame is presented; actions can execute with
    severe delay (visibly desynced controls during animated visibility) and, in a narrower window, be
    lost outright. Every kit-hosted UIKitView now detaches its native view synchronously at node
    disposal (removal delay bounded to zero — no lingering/doubled controls), and settled positions
    self-heal against the Compose-side layout truth. The remaining delay on the insert side is a
    Compose Multiplatform engine limitation, documented with hard usage rules in
    docs/interop-notes.md §4 and reported upstream (docs/upstream/cmp-interop-transaction-lag.md).