August 13, 2025
androidx.activity:activity:1.12.0-alpha06
, androidx.activity:activity-compose:1.12.0-alpha06
, and androidx.activity:activity-ktx:1.12.0-alpha06
are released. Version 1.12.0-alpha06 contains these commits.
MinSdk Update
minSdk
for the AndroidX has been moved from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)Documentation Updates
PredictiveBackHandler
to call out a known timing issue where it may process a gesture in the same frame it is disabled. (I5be5c, b/431534103)BackHandler
and PredictiveBackHandler
to explicitly state the 'last composed wins' behavior in addition to recommending unconditional composition with the enabled
flag. (I7ab94)Dependency update
1.0.0-alpha06
.August 13, 2025
androidx.appfunctions:appfunctions-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
New Features
AppFunction
descriptionsAppFunctionIntValueConstraint
and AppFunctionStringValueConstraint
annotations, respectively.AppFunctionUriGrant
class.AppFunctionTestRule
for testing your app function setup.API Changes
AppFunctionStringValueConstraint
(I10e3f)AppFunctionIntValueConstraint
(Ifda13)AppFunctionPrimitiveTypeMetadata
to specific data type classes. (I1a3b2)AppFunctionResponseMetadata
(I2332b)setAppFunctionEnabled
API (I1b92a)AppFunctionParameterMetadata
(I40a67)AppFunctionUriGrant
(I67ca9)resolveAppFunctionAppMetadata
API. (I17408)isDescribedByKdoc
in @AppFunctionSerializable
annotation (Ie14e7)AppFunctionDataTypeMetadata
(I1bcac)AppPackageMetadata
from observeAppFunctions
API. (I68c7e)AppFunctionMetadata
(I060e2)AppFunctionTestRule
(Id5ed0)isDescribedByKdoc
in @AppFunction
annotation (Ia84d2)Bug Fixes
AppFunctionManagerCompat
only supports U+ devices (Ifa8d0)AppFunction
's metadata xml (I2aab2)AppFunction
's metadata xml (Ie5bf6)August 13, 2025
androidx.browser:browser:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
display_override
TWA manifest property (Ib036b)@RequiresApi(21)
annotations (Ic4792)@RequiresApi(21)
annotations (I9103b)pageUrl
in ContentActionSelectedData
(Ifed54)Bug Fixes
minSdk
from API 21 to API 23. (Ibdfca, b/380448311, b/435705964, b/435705223)pageUrl
in ContentActionSelectedData
. (Id9349)August 13, 2025
androidx.camera:camera-*:1.5.0-rc01
is released. Version 1.5.0-rc01 contains these commits.
Bug Fixes
UniSoc
chipsets to hang when capturing an image. The problem occurred when VideoCapture
, Preview
, and ImageCapture
were used simultaneously with all streams set to a 1280x720 resolution. (Ia00c4, b/380802479)getViewportAspectRatioInt
(82fca18)August 13, 2025
androidx.camera.featurecombinationquery:featurecombinationquery:1.5.0-rc01
and androidx.camera.featurecombinationquery:featurecombinationquery-play-services:1.5.0-rc01
are released. Version 1.5.0-rc01 contains these commits.
August 13, 2025
androidx.camera.media3:media3-effect:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
Bug Fixes
androidx.camera.media3.effect
with media3 1.7 or later (I450a6)August 13, 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0-rc01
, androidx.camera.viewfinder:viewfinder-core:1.5.0-rc01
, and androidx.camera.viewfinder:viewfinder-view:1.5.0-rc01
are released. Version 1.5.0-rc01 contains these commits.
Bug Fixes
minSdk
from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)August 13, 2025
androidx.compose.animation:animation-*:1.9.0
is released. Version 1.9.0 contains these commits.
August 13, 2025
androidx.compose.animation:animation-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
New Features
LayoutCoordinates
of a LookaheadScope
. (I18dd4, b/409819304, b/395670637)Modifier.skipToLookaheadPosition
in SharedTransitionScope
for anchoring a layout at the target position during a shared transition. (I88734)API Changes
renderInSharedTransitionOverlay
by removing the clipInOverlayDuringTransition
lambda as this has been rarely used. Introduced new factory method for SharedContentConfig
. (Id01b2)renderInSharedTransitionOverlay
configurations. These defaults are now accessible through public APIs. (Id23cc)ScaleToBounds
ResizeMode has been renamed to scaleToBounds
(I5ac50)Bug Fixes
August 13, 2025
androidx.compose.foundation:foundation-*:1.9.0
is released. Version 1.9.0 contains these commits
Important changes since 1.8.0
android.experimental.lint.version=8.8.2
(or a newer version) in your gradle.properties
. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required.clickable
, combinedClickable
,selectable
, toggleable
, and triStateToggleable
overloads without an Indication parameter now only support IndicationNodeFactory
instances provided using LocalIndication
. This change will apply when you recompile your usages of these modifiers using this version of Compose. Binary / transitive dependencies are not affected. If you are providing a deprecated Indication implementation to LocalIndication
, and using these APIs, this will introduce a crash at runtime. This behavior change is needed to enable improved performance, and allow Composable functions using these modifiers to skip during recomposition. You can use ComposeFoundationFlags.isNonComposedClickableEnabled=false
to temporarily opt-out of this behavior change, to enable upgrading Compose without being blocked on this migration. This flag will be removed after one stable release. To resolve, migrate any deprecated Indication implementations to use IndicationNodeFactory
instead. You can also use the overloads with an explicit Indication parameter - these overloads will continue to support non-IndicationNodeFactory
instances of Indication, although this is not recommended for performance reasons. (I6bcdc, b/316914333)isFlingCancellationWithNestedScrollFixEnabled
to fix an issue with fling propagation in nested scrolling. In this CL we are restoring the fling continuation behavior removed in I9326a. We will still cancel the fling animation in case the child is removed from composition. (I467f4, b/405910180, b/419049142, b/416784125)scrollAnimationSpec
in ContentInViewNode
. The behavior was removed during the scrollAnimationSpec
deprecation which caused use cases to be broken. (I1436a, b/403301605)LazyLayout
. (If5db4), LazyLayoutPrefetchState
and it's scheduling method schedulePrecomposition
and schedulePrecompositionAndPremeasure
. (I4362f, b/252853717) and LazyLayoutItemProvider
(Icce09,b/261565751)ViewTreeObserver.OnScrollChanged
. This behavior is introduced under the flag isOnScrollChangedCallbackEnabled
. We also introduced an extension function of DelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286)Modifier.scrollable2D
, Scrollable2DState
and companion APIs for state creation. Also introduced common scroll extension functions. (Ic61c8, b/214410040)PrefetchScheduler
and customisation have been deprecated in favor of the internal implementation that does all the work automatically. (I3a9a6, b/420551535)TextFieldState.edit { }
no longer clears the undo history. Instead it creates a standalone undo entry. If the desired behavior is to clear the undo stack after an edit call, please use TextFieldState.undoState.clearHistory()
. (I12c14)OutputTransformation
to allow styling the output of TextField
using the state
overload.TextField
: Support context menu (right click menu).SelectionContainer
now will have a line separator \n added between text coming from the separate Text composables. (I25332, b/285036739)AnnotatedString
(I1d066, b/383269496, b/139326648)state
overload of BasicTextField
will keep the cursor scrolled into view when its size changes. (I0eb41, b/406187741)August 13, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled
flag has been added to allow disabling a WindowInsets
performance optimization should the new implementation cause a behavioral change. (I8e912)SnapFlingBehavior
now allows snap animation specs to overshoot during snapping. This allows enables e.g. a bouncy spring spec as the snapAnimationSpec
to produce a bouncy snap animation. Overshooting values continue to be ignored when performing an approach with the snap spec. (I373c2)ComposeView
will now clear focus automatically if the pointer down doesn't occur in the bounds of the focused node. This results in a "tap-to-clear focus" UX that is more expected than current behavior when using pointer input devices. This behavior can be opt-ed out of with a new AbstractComposeView.isClearFocusOnPointerDownEnabled
API. (I6322b, b/282963174)MouseInjectionScope
. We also introduced a new overload for scroll methods in MouseInjectionScope
and a flag to control the new behavior called isMouseWheel1DAxisLockingEnabled
(I136df)DragGestureNode
to use raw pointer input instead of suspending pointer input for optimization. The changes are added behind the flag isNonSuspendingPointerInputInDraggableEnabled
(I0fa4b)AnchoredDraggable
APIs with @FrequentlyChangingValue
. offset
, requireOffset
and progress
change often and should not be read in composition. Please access these values from the layout and draw phases, effects or otherwise outside of composition instead. (I05539)isOnScrollChangedCallbackEnabled
, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
, isFlingContinuationAtBoundsEnabled
, isAutomaticNestedPrefetchEnabled
, DragGesturePickUpEnabled
, isPointerInteropFilterDispatchingFixEnabled
, isNestedScrollInteropPostFlingFixEnabled
, isNestedScrollDispatcherNodeFixEnabled
(I36c18)CompositionLocal
that can be used to modify the brush of Autofill's successful filling highlight. (I52329)FocusProperties
. You can now define a custom focus area instead of defaulting the bounding box of the focusable. This information is used by the focus traversal system and the keep in view logic of scrollable containers. (Id6555, b/368378073)LineHeightStyle.Mode
called Tight
. This mode helps enforce smaller line heights even when they may possibly cut taller glyphs. (Id3849)WindowInsets.cutoutPath
API to get the path for the display cutout (Ib90b1, b/279636456)isWindowInsetsDefaultPassThroughEnabled
flag has been removed, defaulting WindowInsets to not consuming so that child Views can receive WindowInsets
by default. (I888e0, b/412469666)Bug Fixes
isNonSuspendingPointerInputInDraggableEnabled
should be disabled for now. (Ia41c4)DraggableAnchors
' minPosition/maxPosition
documentation to indicate these APIs should return Float.NaN in line with other DraggableAnchors
APIs. (I0460a)DraggableAnchors#closestAnchor
would crash if the anchors were empty (I4e646)DraggableAnchors
(If4065, I0460a)TextFieldState.edit { }
no longer clears the undo history. Instead it creates a standalone undo entry. If the desired behavior is to clear the undo stack after an edit
call, please use TextFieldState.undoState.clearHistory()
. (I12c14)SelectionContainer
and BasicTextField(value, onValueChange)
overload. (Ibb06a)AutoboxingStateValuePropertyDetector
compatible for both K1 and K2 (Ie81c1)requestRectangleOnScreen
requests made by AndroidViews now properly propagates to Compose. This helps views like EditText
to stay on screen when interacted with. (Ibbf4c)Alignment.Vertical.align
and Alignment.Horizontal.align
, resolving an issue where custom alignment implementations received an incorrect 0 value. (I3e460, b/349722072)August 13, 2025
androidx.compose.material:material-*:1.9.0
is released. Version 1.9.0 contains these commits.
Important changes since 1.8.0
Behavior Changes
android.experimental.lint.version=8.8.2
(or a newer version) in your gradle.properties. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required.API Changes
Bug Fixes
ExposedDropdownMenu
is binary compat with older versions. (I133f7)August 13, 2025
androidx.compose.material:material-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
Bug Fixes
minSdk
from API 21 to API 23. (Ibdfca, b/380448311, b/435705964, b/435705223)August 13, 2025
androidx.compose.material3:material3-*:1.4.0-beta02
is released. Version 1.4.0-beta02 contains these commits.
Dependency Changes
graphics-shapes
dependency (I219e0, b/436230765)API Changes
PullToRefreshDefaults
, renamed shape
to indicatorShape
and containerColor
to indicatorContainerColor
and added indicatorMaxDistance
for indicator use. (Ib6cbe)PullToRefreshDefaults.indicatorColor
(Iaaee2)BasicAlertDialogOverrideScope
was accidentally promoted to stable and had its experimental annotation removed in aosp/3701846. Marking it as internal. It will stay as public experimental in 1.5.0-alpha (I9182a)Bug Fixes
August 13, 2025
androidx.compose.material3:material3-*:1.5.0-alpha02
is released. Version 1.5.0-alpha02 contains these commits.
API Changes
PullToRefreshDefaults
, renamed shape
to indicatorShape
and containerColor
to indicatorContainerColor
and added indicatorMaxDistance
for indicator use. (Ib6cbe)PullToRefreshDefaults.indicatorColor
(Iaaee2)AppBarWithSearch
, replacing TopSearchBar
and supporting navigation/action icons. (I213a5)Bug Fixes
SwipeToDismissBox
now falls back to a settled targetValue
if no other anchors exist. BottomSheetScaffold
now falls back to an Expanded targetValue
if no other anchors exist. (I73d5e, b/428856426)AlertDialog
when stacked vertically. (Ia2118)Modifier.animateFloatingActionButton
hides it (I8ea6c, b/430336834)August 13, 2025
androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha11
is released. Version 1.2.0-alpha11 contains these commits.
API Changes
PaneScaffoldRole
interface to improve API readability (I1b757)AdaptStrategy.Levitated.Strategy
class (I6f798)Modifier.preferredWidth/Height
's proportion parameter from Int percentage values to Float ranges from 0 to 1. (Ib2de2)Bug Fixes
August 13, 2025
androidx.compose.runtime:runtime-*:1.9.0
is released. Version 1.9.0 contains these commits.
Important changes since 1.8.0
android.experimental.lint.version=8.8.2
(or a newer version) in your gradle.properties. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required.@Stable
, @Immutable
, and @StableMarker
have been moved to runtime-annotation, to allow annotating non-Compose modules@FrequentlyChangingValue
and @RememberInComposition
have been added to runtime-annotation. @FrequentlyChangingValue
marks declarations that can cause frequent recompositions, and @RememberInComposition
marks declarations that should be remembered in composition. Corresponding lint checks warn for incorrect usage.August 13, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
rememberSaveable
, retain can persist and save remembered values that leave the composition hierarchy. Retained values are not serialized and have a shorter lifespan than saved values, and behave similarly to an androidx ViewModel
. See the documentation for more details. (Ia3105, b/177562901)awaitOrScheduleNextCompositionEnd()
API, which issues a callback when the Recomposer finishes composing the current frame. If the Recomposer isn't currently composing a frame, this API suspends until the next frame's composition finishes and schedules a new frame to be composed. (Ib873c)isMovableContentUsageTrackingEnabled
, that allows tracking the usage of movable content to avoid some overhead when initially creating the content. This feature flags is currently disabled by default. (Ia713d)Bug Fixes
AutoboxingStateValuePropertyDetector
compatible for both K1 and K2. (Ie81c1)External Contribution
August 13, 2025
androidx.compose.ui:ui-*:1.9.0
is released. Version 1.9.0 contains these commits.
Important changes since 1.8.0
android.experimental.lint.version=8.8.2
(or a newer version) in your gradle.properties
. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required.August 13, 2025
androidx.compose.ui:ui-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
ComposeView
will now clear focus automatically if the pointer down doesn't occur in the bounds of the focused node. This results in a "tap-to-clear focus" UX that is more expected than current behavior when using pointer input devices. This behavior can be opt-ed out of with a new AbstractComposeView.isClearFocusOnPointerDownEnabled
API. (I6322b, b/282963174)FillableData
interface to support various autofill component types, in addition to Text. (If9bd2)LayoutCoordinates
of a LookaheadScope
. (I18dd4, b/409819304, b/395670637)isNestedScrollInteropIntegerPropagationEnabled
to control the experiment of dispatching correct integers to nested scroll interop. (If8316)requestFocusForChildInRootBounds()
to DelegatableNode
to move focus to a child that overlaps with the given rect. (I001ef)isOnScrollChangedCallbackEnabled
, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
, isFlingContinuationAtBoundsEnabled
, isAutomaticNestedPrefetchEnabled
, DragGesturePickUpEnabled
, isPointerInteropFilterDispatchingFixEnabled
, isNestedScrollInteropPostFlingFixEnabled
, isNestedScrollDispatcherNodeFixEnabled
(I36c18)@CheckResult
annotation on the SemanticsNode
finder and selector functions to enforce usage of returned values. (I6f86e, b/201652748)CompositionLocal
that can be used to modify the brush of Autofill's successful filling highlight. (I52329)MouseInjectionScope
. We also introduced a new overload for scroll methods in MouseInjectionScope
and a flag to control the new behavior called isMouseWheel1DAxisLockingEnabled
(I136df)DeviceConfigurationOverrides
for keyboard type & state, navigation type and state, touchscreen state, and UI mode type (I282f0)LineHeightStyle.Mode
called Tight
. This mode helps enforce smaller line heights even when they may possibly cut taller glyphs. (Id3849)BaselineShift
now has an Unspecified value to prevent boxing BaselineShift
, Hyphens
, LineBreak
, TextAlign
, and TextDirection
now have isSpecified
helper functions Hyphens
, TextAlign
, TextDecoration
, and TextDirection
now have valueOf()
and value methods enabling efficient serialization/deserialization. (I8d44c)getDisplayName
method interface to allow custom display names for preview parameter instances. (I19bdf, b/241699422)Dp.compareTo(Unspecified)
always returns 0. Setting the flag ComposeUiUnitFlags.isDpCompareToChanged
to false will return Dp.compareTo()
to is former behavior, where comparing Unspecified with less-than and greater-than don't always return false, and compareTo()
with Unspecified matches the behavior of Float.compareTo()
. (Ifa88b, b/429221319)Bug Fixes
AndroidComposeViews
while a transition is ongoing. (I2e23e, b/340894487, b/287484338)fillColor
is neither fully opaque nor fully transparent. (I3b041, b/328677973)painterResource
with theme-specific colors didn't update on theme changes. (I85ea0, b/424416571)onFillData
and fillableData
semantics (I45d9e)StateRestorationTester
. This aligns test behavior with real application state restoration, such as Parcelization on Android. (I38211, b/408154192, b/382294247)August 13, 2025
androidx.core:core:1.17.0
, androidx.core:core-ktx:1.17.0
, and androidx.core:core-testing:1.17.0
are released. Version 1.17.0 contains these commits.
Important changes since 1.16.0
August 13, 2025
androidx.core:core-backported-fixes:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
New Features
The Core Backported Fixes library lets you check if a critical bug fix has been applied to a device. This is useful because it can take a long time for bug fixes to be rolled out to all devices, and this API provides a way for you to know when it is safe to use features that depend on a fix.
val fixManager = BackportedFixManager()
if (fixManager.isFixed(KnownIssues.KI_1234)) {
Offer_experience_that_needs_fix()
} else {
Offer_experience_that_avoids_the_bug()
}
This release includes
KnownIssues.KI_398591036
: Abnormal color tone when capturing JPEG-R
images on some Pixel devices. Fix by using JPEG
outputs until this KI is resolved.August 13, 2025
androidx.credentials:credentials:1.6.0-alpha05
and androidx.credentials:credentials-play-services-auth:1.6.0-alpha05
are released. Version 1.6.0-alpha05 contains these commits.
API Changes
Bug Fixes
August 13, 2025
androidx.credentials.providerevents:providerevents:1.0.0-alpha02
and androidx.credentials.providerevents:providerevents-play-services:1.0.0-alpha02
are released. Version 1.0.0-alpha02 contains these commits.
API Changes
GetCapabilitiesRequest
(Ia6ee3)ExportCredentialsResponse
such that the metrics reported are grouped by the credential type (I3a088)Bug Fixes
August 13, 2025
androidx.emoji2:emoji2-*:1.6.0-rc01
is released. Version 1.6.0-rc01 contains these commits.
New Features
API Changes
@RequiresApi(21)
annotations (Ic4792)@RequiresApi(21)
annotations (I9103b)August 13, 2025
androidx.fragment:fragment-*:1.8.9
is released. Version 1.8.9 contains these commits.
Bug Fixes
setMaxLifecycle
and popBackStack
could fail to move the top fragment to RESUMED. (I3448b, b/406127576)August 13, 2025
androidx.games:games-activity:4.3.0-alpha01
and androidx.games:games-text-input:4.3.0-alpha01
are released. Version 4.3.0-alpha01 contains these commits.
New Features
Bug Fixes
onDestroy
and onCreate
lifecycle events.GameActivity
touch handling.GameTextInput
generating as a shared library incorrectly.August 13, 2025
androidx.games:games-controller:2.3.0-alpha01
, androidx.games:games-memory-advice:2.3.0-alpha01
, and androidx.games:games-performance-tuner:2.3.0-alpha01
are released. Version 2.3.0-alpha01 contains these commits.
New Features
August 13, 2025
androidx.graphics:graphics-path:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
Bug Fixes
August 13, 2025
androidx.hilt:hilt-*:1.3.0-beta01
is released. Version 1.3.0-beta01 contains these commits.
August 13, 2025
androidx.ink:ink-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
New Features
API Changes
InProgressStrokesView
, finish geometry APIs, emoji highlighter, remove factory functions from MutableParallelogram
in favor of populate methods, support seed for randomized brush behaviors. (I38280)Bug Fixes
August 13, 2025
androidx.input:input-motionprediction:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
New Features
API Changes
@RequiresApi(21)
annotations (I9103b)August 13, 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02
is released. Version 2.10.0-alpha02 contains these commits.
New Features
The LifecycleOwner
composable can now create a standalone root lifecycle. By (explicitly) setting parent = null
, the new lifecycle operates independently of any host (like an Activity
, Fragment
or NavBackStackEntry
). It starts as soon as the composable enters the composition and is automatically destroyed when it leaves. (I8dfbe, b/433659048)
@Composable
fun IndependentComponent() {
// Create a standalone lifecycle, not tied to the parent Activity/Fragment.
LifecycleOwner(parent = null) {
val rootLifecycle = LocalLifecycleOwner.current.lifecycle
}
}
API Changes
LifecycleOwner
composable, the parentLifecycleOwner
parameter has been renamed to parent
. (I080bc)Bug Fixes
LifecycleOwner
composable now correctly moves its lifecycle to DESTROYED
upon disposal. This prevents potential leaks for external code that holds a reference to the lifecycle. (I9e5b7, b/433659048)External Contribution
LifecycleOwner
. Thanks Jake Wharton for the contribution. (Ideddb)August 13, 2025
androidx.media:media:1.7.1
is released. Version 1.7.1 contains these commits.
Bug Fixes
MediaSession.setMetadata()
by reducing the number of intermediate allocations and removing unnecessary parceling/unparceling of bitmaps.August 13, 2025
androidx.navigation3:navigation3-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
MinSdk Update
API Changes
SavedStateNavEntryDecorator
now uses the SaveableStateRegistry
built into SaveableStateProvider
to save and restore states. (If8d9a)predictivePopTransitionSpec
is now provided the swipe edge as a parameter, allowing you to customize the transition based on what edge the user started the Predictive Back gesture from. (I753a8)Bug Fixes
Dependency update
1.0.0-alpha06
.August 13, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
New Features
Passive Listeners API
You can now pass custom contextual information from any navigation host and passively listen to gesture state changes from anywhere in your UI. This enables context-aware animations for predictive back and other gesture-driven navigation.
This feature has two parts:
NavigationEventInfo
to carry custom data.dispatcher.state
(NavigationEventState
) to observe gesture progress and context.NavigationEventCallback
now exposes setInfo(currentInfo, previousInfo)
method to set gesture context in one call (I1d5e7, b/424470518).NavigationEventHandler
adds a new overload that accepts currentInfo
and previousInfo
, making it the primary API for supplying context in Compose apps (I6ecd3, b/424470518).Example:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcher
now exposes dispatcher.state
and dispatcher.getState<T>()
(If7fae, Ia90ca, b/424470518). These StateFlow
-based APIs let any UI observe gesture progress and contextual data without handling the event directly.Example:
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
Add progress
property to NavigationEventState
(I7b196) that returns latestEvent.progress
when in progress, or 0F
otherwise:
val progress = state.progress
Add NavigationEventDispatcherOwner
composable to create, link, and dispose of NavigationEventDispatcher
instances hierarchically. Enable dynamic control of the dispatcher's enabled state and automatic cleanup.
@Composable
fun Sample() {
NavigationEventDispatcherOwner(enabled = true) {
val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current
}
}
API Changes
isPassthrough
parameter has been removed from the NavigationEventCallback
. (I99028, b/424470518)NavigationEventState
constructors are now internal. For testing, update the state (defaults to Idle
) via the DirectNavigationEventInputHandler
. Call handleOnStarted
or handleOnProgressed
to set state to InProgress
, and handleOnCompleted
or handleOnCancelled
to return it to Idle
. To update NavigationEventInfo
, use NavigationEventCallback.setInfo
. (I93dca, b/424470518)NavigationEvent
to allow for easier instantiation and to simplify testing which should be used in place of TestNavigationEvent
. (I5dc49, I232f4)TestNavigationEventCallback
for testing navigation events with specific current/previous states. (Idd22e, b/424470518)NavigationEventInputHandler
has been made into an abstract class to replace the previous AbstractNavigationEventInputHandler
with an implementation in DirectNavigationEventInputHandler
(Iadde5, Ifed40I3897c, b/432616296, b/435416924)send*
functions in NavigationEventInputHandler
have had their prefixes renamed to handle*
. (Iffcaf)OnBackInvokedInputHandler
now extends the newly abstract
NavigationInputHandler
. (Ib45aa)NavigationEventDispatcherOwner
to require a parent dispatcher where you must explicitly pass null
to create a root dispatcher. (Ia6f64, b/431534103)Bug Fixes
NavigationEventDispatcher.dispose()
. (I4ab09)NavigationEventHandler
did not correctly respond to changes in its enabled state. (Ia5268,I19bec, I5be5c, b/431534103)Docs Updates
NavigationEvent
expanded to clarify its role as a unified event wrapper and detail property behavior across different navigation types (gestures, clicks). (I91e8d)BackHandler
, PredictiveBackHandler
, NavigationEventHandler
) to call out behavior specifically around callback order. (I7ab94, )Dependency Update
NavigationEvent
now depends on Compose Runtime 1.9.0-beta03 which allows the navigationevent-compose
artifact to support all KMP targets. (Ia1b87)August 13, 2025
androidx.room:room-*:2.8.0-rc01
is released. Version 2.8.0-rc01 contains these commits.
API Changes
Bug Fixes
August 13, 2025
androidx.savedstate:savedstate-*:1.4.0-alpha02
is released. Version 1.4.0-alpha02 contains these commits.
August 13, 2025
androidx.sqlite:sqlite-*:2.6.0-rc01
is released. Version 2.6.0-rc01 contains these commits.
August 13, 2025
androidx.test.uiautomator:uiautomator:2.4.0-alpha06
is released. Version 2.4.0-alpha06 contains these commits.
New Features
UiDevice#findWindow
can now be used to find a specific UiWindow
according to a ByWindowSelector
built with By.Window
factory methods. (I359c4, I40528, I8c963)August 13, 2025
androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
August 13, 2025
androidx.wear.compose:compose-*:1.5.0-rc02
is released. Version 1.5.0-rc02 contains these commits.
Bug Fixes
TimePicker
where long, internationalised strings for the period (AM/PM) could break the layout. (I0fa81)August 13, 2025
androidx.window:window-*:1.5.0-beta02
is released. Version 1.5.0-beta02 contains these commits.
New Features
External Contribution
window-core
(If3d7c)August 13, 2025
androidx.xr.compose:compose:1.0.0-alpha06
and androidx.xr.compose:compose-testing:1.0.0-alpha06
are released. Version 1.0.0-alpha06 contains these commits.
Bug Fixes
ComposeXrOwnerLocals
when the lifecycle owner is destroyed. (9123ce1)August 13, 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06
, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06
, and androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06
are released. Version 1.0.0-alpha06 contains these commits.
API Changes
SceneCore
's BaseEntity
and BaseScenePose
APIs (88c0ff6)