</>
Jetpack Compose · Release Notes
22 APR 2026 ● STABLE

What's new in the
April '26 release.

Compose 1.11 lands with a revamped test runtime, shared-element debug tooling, first-class trackpad support, and a fresh batch of experimental layout and styling APIs — Styles, MediaQuery, Grid, and FlexBox.

// Upgrade your BOM implementation("androidx.compose:compose-bom:2026.04.01")
1.11
Core modules
5
Stable updates
5
Experimental
Stable · Shipped in Compose 1.11

Coroutine execution
in tests, v2 by default

STABLE

v2 testing APIs are now the default; v1 is deprecated. The dispatcher swaps from UnconfinedTestDispatcher to StandardTestDispatcher — coroutines queue until the virtual clock advances.

  • Better mimics production conditions
  • Flushes out race conditions and flakes
  • Migration guide & API mappings provided
v1
v2

Shared element
visual debugging

STABLE

Wrap your SharedTransitionLayout with LookaheadAnimationVisualDebugging to see target bounds, trajectories, and match counts at a glance.

SOURCE TARGET BOUNDS TRAJECTORY

Trackpad events, finally treated like a mouse

STABLE

Basic trackpad input now reports as PointerType.Mouse instead of fake touches — clicking & dragging no longer scrolls. Two-finger swipes and pinches (API 34+) are recognized by Modifier.scrollable and Modifier.transformable out of the box.

✕ Before · PointerType.Touch drag → page scrolled
✓ After · PointerType.Mouse drag → selection

Composition host defaults

STABLE

HostDefaultProvider, LocalHostDefaultProvider, HostDefaultKey, and ViewTreeHostDefaultKey supply host-level services directly through compose-runtime.

  • No more compose-ui dependency for lookups
  • Better support for Kotlin Multiplatform
  • Use compositionLocalWithHostDefaultOf for tree-linked defaults

@PreviewWrapper
for Android Studio

STABLE

Define exactly how a Compose preview is displayed. Implement PreviewWrapperProvider and annotate to inject theming and other wrapper logic — cuts repetitive preview boilerplate.

@PreviewWrapperProvider(ThemeWrapper::class)
@Preview
@Composable
private fun ButtonPreview() {
  // JetsnackTheme in effect
  Button(onClick = {}) {
    Text(text = "Demo")
  }
}
Experimental · Try them, then file feedback

Styles API

EXPERIMENTAL

A new foundation API for customizing visual elements of components — stateful styling and animated transitions with promising performance benefits.

Button(
  onClick = { /* … */ },
  style = {
    background(Brush.linearGradient(
      listOf(lightPurple, lightBlue)
    ))
    width(75.dp)
    height(50.dp)
    externalPadding(16.dp)
    pressed {
      background(Brush.linearGradient(
        listOf(Color.Magenta, Color.Red)
      ))
    }
  }
) { Text("Login") }

mediaQuery

EXPERIMENTAL

Declarative, performant adaptation to the environment — window size, posture, keyboard, pointer precision. Recomposes only when needed.

@Composable
fun VideoPlayer() {
  if (mediaQuery {
    windowPosture == UiMediaScope.Posture.Tabletop
  }) {
    TabletopLayout()
  } else {
    FlatLayout()
  }
}
Flat
Tabletop

Grid

EXPERIMENTAL

Complex two-dimensional layouts built from tracks, gaps, and cells. Supports Dp, percentages, intrinsic sizes, and flexible Fr units — without the overhead of a scrollable list.

A · span 2
B · span 3 cols
C · span 2
D

FlexBox

EXPERIMENTAL

High-performance adaptive layouts with wrapping, multi-axis alignment, and grow / shrink based on available container dimensions.

60
60
grow 1.0
grow 0.7
0.3

New SlotTable implementation  — runtime guts, rewritten

EXPERIMENTAL · OFF

The internal data structure tracking composition hierarchy, invalidations, recompositions, and remembered values gets a new implementation designed to improve performance, primarily around random edits. Opt in with:

ComposeRuntimeFlags.isLinkBufferComposerEnabled = true
Deprecations & removals
Deprecated Modifier.onFirstVisible()
Use instead Modifier.onVisibilityChanged()
Removed flag ComposeFoundationFlags.isTextFieldDpadNavigationEnabled
Now default D-pad navigation always on for TextFields

What's coming next

1.10 · DEC '25
v2 testing opt-in
1.11 · APR '26
You are here