Compose 1.13 has been in alpha since August. Beta01 landed on October 7, 2026 and beta02 followed on October 21, and the beta01 API notes are where the real work is: several source-breaking renames, a Slider parameter that is now mandatory, a PolygonShape API that was restructured, and a Kotlin 2.2 floor. Beta02 is bug-fix only, but it quietly swaps in a new Modifier.border implementation you should test.
1. Toolchain: Kotlin 2.2 Is the Floor
Beta01 libraries target Kotlin 2.2 and require kotlinc 2.2. If your project is still on an older compiler, the Compose upgrade is also a Kotlin upgrade. Do that first, in its own commit, so a compiler regression isn't confused with a Compose one.
2. Slider: onValueChange Is Now Required
onValueChange is now a required parameter on Slider, VerticalSlider and RangeSlider. The previously hidden deprecated APIs were also removed, including the DraggableState implementation on SliderState, the legacy Saver overloads and isVertical on SliderState. The SliderDefaults.Thumb overload taking SliderState is deprecated; use the overload with isVertical.
var volume by remember { mutableFloatStateOf(0.5f) }
Slider(
value = volume,
onValueChange = { volume = it },
valueRange = 0f..1f
)
Any code that built a slider from a SliderState without supplying a change callback, or that treated SliderState as a DraggableState, will stop compiling. Grep for both before you bump.
3. PolygonShape Was Restructured
Two API changes in Foundation and UI hit anyone using PolygonShape:
CornerRoundingmoved to the top level, withdp()andfraction()factories.- The
transformed()andscaledToFit()extensions were replaced by an in-placePolygonShape.transform(PolygonShapeTransformScope.() -> Unit)andPolygonShape.copy(). - Factory parameters now carry
@FloatRange/@IntRange, andinnerRadiusRatioonPolygonShape.starandPolygonShape.pillStaris restricted to(0f, 1f).
Because transform is in place, call copy() first when the original shape is shared. The notes describe it as an in-place mutable transform, so don't assume the old return-a-new-shape behavior.
4. Modifier.blur, MediaQuery and Interaction Barrier
- Modifier.blur: the
radiusparameter is nowblurRadiusSpec, as isBlurScope.radius.BlurStop.fractiongains@FloatRange, and the defaultfallOffRadiusinBlurRadiusSpec.radialGradientchanged toDp.Unspecified. - Posture in MediaQuery: replaced by
WindowPosture, which exposes physicalWindowFolds (FoldStateandFoldOrientation). It addsisTabletopandisFlat, and the explicit Book posture is gone. - Modifier.interactionBarrier(): removed from the public API surface for 1.13.
Pattern: most of these are renames or removals of things that were still experimental or previously hidden. They fail at compile time, which is the good kind of breakage: bump the version on a branch and let the compiler produce your worklist.
5. Beta02: A New Modifier.border
Beta02 is documented as bug fixes only, but the first entry is significant: Modifier.border uses a new, more performant implementation, and it can now render generic and polygon shapes using a runtime shader. A separate fix addresses an edge case when rendering certain rounded rectangle outlines.
Both have escape hatches in case of visual diffs:
// Foundation flags from the 1.13.0-beta02 notes
ComposeFoundationFlags.isNewBorderImplementationEnabled = false
ComposeFoundationFlags.isRoundedRectangleBorderRenderingFixEnabled = false
If you need either flag, the release notes ask you to file a bug. Run your screenshot tests over bordered cards, chips and text fields before shipping this.
6. Smaller Fixes Worth Knowing
- BasicTextField focus: it now waits for the window to gain focus before starting the text input session. This fixes the keyboard not appearing when focus was requested before the window was focused, for example in
onCreate. Revert withComposeFoundationFlags.isTextFieldWaitWindowFocusForInputSessionEnabled = false. - FlexBox:
alignContent(FlexAlignContent.Stretch)no longer forces children to stretch with their line, and a single wrapped line is no longer expanded to the minimum cross-axis constraint. - Lazy layouts: the cache window no longer re-prefetches items when a previously prefetched item becomes visible.
- Insets: an
IllegalStateExceptionwhen updatingconsumeWindowInsets,windowInsetsPaddingoronConsumedWindowInsetsChangedon detached modifier nodes (such as duringmovableContentmovement) is fixed. - VectorPainter: now shares internal
ImageBitmapresources when the sameImageVectoris drawn in multiple composables; disable withComposeUiFlags.isVectorDrawCacheSharingEnabled. - Accessibility and crashes: TalkBack touch exploration no longer jumps to an
AndroidView(such as a WebView) covered by Compose content, and a crash fromColor.toColorLong()on colors composited overColor.Unspecifiedis fixed. - Styles API:
CommonStyle.styleLayer()was added; properties in a layer override lower layers, andstate()helpers such aspressed()now create a layer implicitly.
Should You Move Now?
Beta means the API surface is meant to be settled, so this is the right time to compile against it and see what breaks, not to ship it. My order: Kotlin 2.2 first, then the Compose bump on a branch, fix slider and shape call sites, then run screenshot tests specifically for borders and text field focus. If a flag is needed, file the bug before stable ships while it can still be fixed.
Sources: the Compose Foundation and Compose UI release notes on developer.android.com (1.13.0-beta01 and 1.13.0-beta02).
No comments yet. Be the first to leave one!