2025-08-13
Activity: v1.12.0-alpha06
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
- The default
minSdk
for the AndroidX has been moved from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Documentation Updates
- Updated KDocs for
PredictiveBackHandler
to call out a known timing issue where it may process a gesture in the same frame it is disabled. (I5be5c, b/431534103) - Updated KDocs for
BackHandler
andPredictiveBackHandler
to explicitly state the 'last composed wins' behavior in addition to recommending unconditional composition with theenabled
flag. (I7ab94)
Dependency update
- Activity now depends on Navigation Event
1.0.0-alpha06
.
appfunctions: v1.0.0-alpha03
August 13, 2025
androidx.appfunctions:appfunctions-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
New Features
- Use KDoc(s) as
AppFunction
descriptions - Restrict values for Int and String types using
AppFunctionIntValueConstraint
andAppFunctionStringValueConstraint
annotations, respectively. - Specify a natural language description for large language models and a user visible description displayed within agent apps.
- Automatically grant permissions to URI(s) returned from an app function using
AppFunctionUriGrant
class. - Write Robolectric tests using
AppFunctionTestRule
for testing your app function setup.
API Changes
- Add
AppFunctionStringValueConstraint
(I10e3f) - Add
AppFunctionIntValueConstraint
(Ifda13) - Refactor
AppFunctionPrimitiveTypeMetadata
to specific data type classes. (I1a3b2) - Add description field in
AppFunctionResponseMetadata
(I2332b) - Remove permission requirement from
setAppFunctionEnabled
API (I1b92a) - Add description field in
AppFunctionParameterMetadata
(I40a67) - Add
AppFunctionUriGrant
(I67ca9) - Add
resolveAppFunctionAppMetadata
API. (I17408) - Add
isDescribedByKdoc
in@AppFunctionSerializable
annotation (Ie14e7) - Add description field in
AppFunctionDataTypeMetadata
(I1bcac) - Return
AppPackageMetadata
fromobserveAppFunctions
API. (I68c7e) - Add description field in
AppFunctionMetadata
(I060e2) - Add
AppFunctionTestRule
(Id5ed0) - Add
isDescribedByKdoc
in@AppFunction
annotation (Ia84d2)
Bug Fixes
AppFunctionManagerCompat
only supports U+ devices (Ifa8d0)- Add property descriptions of shared serializable types in
AppFunction
's metadata xml (I2aab2) - Add a description element in generated
AppFunction
's metadata xml (Ie5bf6)
Browser: v1.10.0-alpha01
August 13, 2025
androidx.browser:browser:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
- Added support for the
display_override
TWA manifest property (Ib036b) - Removing obsolete
@RequiresApi(21)
annotations (Ic4792) - Removing obsolete
@RequiresApi(21)
annotations (I9103b) - Allow Null for
pageUrl
inContentActionSelectedData
(Ifed54) - Added an Intent to allow launching the initial url in an external app (Id9349)
- Add an Intent to allow launching the initial url in an external app (Ifed54)
Bug Fixes
- Moving the default
minSdk
from API 21 to API 23. (Ibdfca, b/380448311, b/435705964, b/435705223) - Allow Null for
pageUrl
inContentActionSelectedData
. (Id9349)
Camera: v1.5.0-rc01
August 13, 2025
androidx.camera:camera-*:1.5.0-rc01
is released. Version 1.5.0-rc01 contains these commits.
Bug Fixes
- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Removed the 10-bit output restriction for the low-light boost auto-exposure mode. Applications can now simultaneously enable both features on supported devices. (I5a638)
- Resolved an issue that caused devices with
UniSoc
chipsets to hang when capturing an image. The problem occurred whenVideoCapture
,Preview
, andImageCapture
were used simultaneously with all streams set to a 1280x720 resolution. (Ia00c4, b/380802479) - Fixed preview black screen when no high-speed frame rate is set for high-speed/slow-motion recording. (cdf0ff2e9)
- Improve error handling and logging in
getViewportAspectRatioInt
(82fca18)
camera featurecombinationquery: v1.5.0-rc01
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.
camera media3: v1.0.0-alpha04
August 13, 2025
androidx.camera.media3:media3-effect:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
Bug Fixes
- Fixed the crash in
androidx.camera.media3.effect
with media3 1.7 or later (I450a6)
camera viewfinder: v1.5.0-rc01
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
- Moving the default
minSdk
from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Compose Animation: v1.9.0
August 13, 2025
androidx.compose.animation:animation-*:1.9.0
is released. Version 1.9.0 contains these commits.
Compose Animation: v1.10.0-alpha01
August 13, 2025
androidx.compose.animation:animation-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
New Features
- New API to allow dynamically enable and disable shared elements that also allows accounting for whether there is already an ongoing shared element transition.
- New API to set up an alternative target bounds when the target shared element is disposed during the transition.
- New API to obtain the
LayoutCoordinates
of aLookaheadScope
. (I18dd4, b/409819304, b/395670637) - New modifier
Modifier.skipToLookaheadPosition
inSharedTransitionScope
for anchoring a layout at the target position during a shared transition. (I88734)
API Changes
- Simplified
renderInSharedTransitionOverlay
by removing theclipInOverlayDuringTransition
lambda as this has been rarely used. Introduced new factory method forSharedContentConfig
. (Id01b2) - Added a set of Defaults for shared element, shared bounds,
renderInSharedTransitionOverlay
configurations. These defaults are now accessible through public APIs. (Id23cc) ScaleToBounds
ResizeMode has been renamed toscaleToBounds
(I5ac50)
Bug Fixes
- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Compose Foundation: v1.9.0
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
- Lint checks shipped with Compose now require a minimum AGP version of 8.8.2. If you are unable to upgrade AGP, you can instead upgrade Lint on its own by using
android.experimental.lint.version=8.8.2
(or a newer version) in yourgradle.properties
. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required. - Breaking change:
clickable
,combinedClickable
,selectable
,toggleable
, andtriStateToggleable
overloads without an Indication parameter now only supportIndicationNodeFactory
instances provided usingLocalIndication
. 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 toLocalIndication
, 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 useComposeFoundationFlags.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 useIndicationNodeFactory
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) - Introduced
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) - Re-add usage of
scrollAnimationSpec
inContentInViewNode
. The behavior was removed during thescrollAnimationSpec
deprecation which caused use cases to be broken. (I1436a, b/403301605) - Stabilized
LazyLayout
. (If5db4),LazyLayoutPrefetchState
and it's scheduling methodschedulePrecomposition
andschedulePrecompositionAndPremeasure
. (I4362f, b/252853717) andLazyLayoutItemProvider
(Icce09,b/261565751) - Allow Compose to trigger
ViewTreeObserver.OnScrollChanged
. This behavior is introduced under the flagisOnScrollChangedCallbackEnabled
. We also introduced an extension function ofDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) - Introduce
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 useTextFieldState.undoState.clearHistory()
. (I12c14)- Context Menu and Selection toolbar now both support Smart Items (Smart Selection)
- Added styled text
OutputTransformation
to allow styling the output ofTextField
using thestate
overload. TextField
: Support context menu (right click menu).- Text copied from multiple Text composables in a
SelectionContainer
now will have a line separator \n added between text coming from the separate Text composables. (I25332, b/285036739) - Introduce API for creating custom bullet lists through
AnnotatedString
(I1d066, b/383269496, b/139326648) - The
state
overload ofBasicTextField
will keep the cursor scrolled into view when its size changes. (I0eb41, b/406187741)
Compose Foundation: v1.10.0-alpha01
August 13, 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
- Update Pager's prefetch strategy to use Cache Window instead of the default 1 item in the direction of the scroll. Now initial prefetching is enabled by default in Pager and prefetching will be based on the size of the window worth 1 viewport, that is, we will try to fill 1 whole view port with prefetched items. Items will be kept around longer as well. (I4d45e, b/292136289)
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled
flag has been added to allow disabling aWindowInsets
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 thesnapAnimationSpec
to produce a bouncy snap animation. Overshooting values continue to be ignored when performing an approach with the snap spec. (I373c2)- Pointer downs with a mouse or touchpad in a
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 newAbstractComposeView.isClearFocusOnPointerDownEnabled
API. (I6322b, b/282963174) - Now Scrollable supports 2 dimensional mouse wheel scroll events better. A new test API landed to help test use cases in
MouseInjectionScope
. We also introduced a new overload for scroll methods inMouseInjectionScope
and a flag to control the new behavior calledisMouseWheel1DAxisLockingEnabled
(I136df) - Updated
DragGestureNode
to use raw pointer input instead of suspending pointer input for optimization. The changes are added behind the flagisNonSuspendingPointerInputInDraggableEnabled
(I0fa4b) - Annotated some
AnchoredDraggable
APIs with@FrequentlyChangingValue
.offset
,requireOffset
andprogress
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) - Removed flags
isOnScrollChangedCallbackEnabled
,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
,isFlingContinuationAtBoundsEnabled
,isAutomaticNestedPrefetchEnabled
,DragGesturePickUpEnabled
,isPointerInteropFilterDispatchingFixEnabled
,isNestedScrollInteropPostFlingFixEnabled
,isNestedScrollDispatcherNodeFixEnabled
(I36c18) - Introduce
CompositionLocal
that can be used to modify the brush of Autofill's successful filling highlight. (I52329) - Added customizable focus rect to
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) - Added a new
LineHeightStyle.Mode
calledTight
. This mode helps enforce smaller line heights even when they may possibly cut taller glyphs. (Id3849) - Introduced new Interpolatable interface which allows for automatic interpolation between different types, assuming one type knows how to convert from the other. This interface is leveraged in several compose types like Brush and Shape, but can be utilized externally as well. (I58eab)
- Adds indirect input events and a way to specify coordinate axis to use for scrolling. (I58e7c)
- Adds new
WindowInsets.cutoutPath
API to get the path for the display cutout (Ib90b1, b/279636456) - The
isWindowInsetsDefaultPassThroughEnabled
flag has been removed, defaulting WindowInsets to not consuming so that child Views can receiveWindowInsets
by default. (I888e0, b/412469666)
Bug Fixes
isNonSuspendingPointerInputInDraggableEnabled
should be disabled for now. (Ia41c4)- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Updated
DraggableAnchors
'minPosition/maxPosition
documentation to indicate these APIs should return Float.NaN in line with otherDraggableAnchors
APIs. (I0460a) - Fixed a bug where
DraggableAnchors#closestAnchor
would crash if the anchors were empty (I4e646) - Performance improvements for
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 anedit
call, please useTextFieldState.undoState.clearHistory()
. (I12c14)- Added support for double-tap to select word in
SelectionContainer
andBasicTextField(value, onValueChange)
overload. (Ibb06a) - Minor bug fix to make
AutoboxingStateValuePropertyDetector
compatible for both K1 and K2 (Ie81c1) requestRectangleOnScreen
requests made by AndroidViews now properly propagates to Compose. This helps views likeEditText
to stay on screen when interacted with. (Ibbf4c)- Column and Row now correctly pass the item's actual size to
Alignment.Vertical.align
andAlignment.Horizontal.align
, resolving an issue where custom alignment implementations received an incorrect 0 value. (I3e460, b/349722072)
Compose Material: v1.9.0
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
- Lint checks shipped with Compose now require a minimum AGP version of 8.8.2. If you are unable to upgrade AGP, you can instead upgrade Lint on its own by using
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
- Projects released with Kotlin 2.0 require KGP 2.0.0 or newer to be consumed. (Idb6b5)
- Text field decoration box APIs are no longer experimental. (I7480f)
Bug Fixes
ExposedDropdownMenu
is binary compat with older versions. (I133f7)
Compose Material: v1.10.0-alpha01
August 13, 2025
androidx.compose.material:material-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
Bug Fixes
- Moving the default
minSdk
from API 21 to API 23. (Ibdfca, b/380448311, b/435705964, b/435705223)
Compose Material3: v1.4.0-beta02
August 13, 2025
androidx.compose.material3:material3-*:1.4.0-beta02
is released. Version 1.4.0-beta02 contains these commits.
Dependency Changes
- Remove
graphics-shapes
dependency (I219e0, b/436230765)
API Changes
- In
PullToRefreshDefaults
, renamedshape
toindicatorShape
andcontainerColor
toindicatorContainerColor
and addedindicatorMaxDistance
for indicator use. (Ib6cbe) - Remove deprecation tag from
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
- Fix bug where backpress incorrectly updates drawer offset. (I85624, b/427778135)
Compose Material3: v1.5.0-alpha02
August 13, 2025
androidx.compose.material3:material3-*:1.5.0-alpha02
is released. Version 1.5.0-alpha02 contains these commits.
API Changes
- In
PullToRefreshDefaults
, renamedshape
toindicatorShape
andcontainerColor
toindicatorContainerColor
and addedindicatorMaxDistance
for indicator use. (Ib6cbe) - Remove deprecation tag from
PullToRefreshDefaults.indicatorColor
(Iaaee2) - Added
AppBarWithSearch
, replacingTopSearchBar
and supporting navigation/action icons. (I213a5)
Bug Fixes
- Fix bug where backpress incorrectly updates drawer offset. (I85624, b/427778135)
SwipeToDismissBox
now falls back to a settledtargetValue
if no other anchors exist.BottomSheetScaffold
now falls back to an ExpandedtargetValue
if no other anchors exist. (I73d5e, b/428856426)- Fixed button padding in
AlertDialog
when stacked vertically. (Ia2118) - [FAB] Fix bug where FAB is still clickable after
Modifier.animateFloatingActionButton
hides it (I8ea6c, b/430336834) - [Slider] Fixed keyboard navigation for Slider (I3a405)
Compose Material3 Adaptive: v1.2.0-alpha11
August 13, 2025
androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha11
is released. Version 1.2.0-alpha11 contains these commits.
API Changes
- Introduce a generic
PaneScaffoldRole
interface to improve API readability (I1b757) - Remove
AdaptStrategy.Levitated.Strategy
class (I6f798) - Changes
Modifier.preferredWidth/Height
's proportion parameter from Int percentage values to Float ranges from 0 to 1. (Ib2de2)
Bug Fixes
- Fix the issue that initial anchors are not respected (I32f5d, b/418296559)
Compose Runtime: v1.9.0
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
- Lint checks shipped with Compose now require a minimum AGP version of 8.8.2. If you are unable to upgrade AGP, you can instead upgrade Lint on its own by using
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. - A new runtime-annotation library has been created. This contains annotation definitions without a dependency on Compose runtime, so it can be used from non-Compose modules.
@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.
Compose Runtime: v1.10.0-alpha01
August 13, 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
- Introduces the retain API. Like
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 androidxViewModel
. See the documentation for more details. (Ia3105, b/177562901) - Added an
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) - Add a non-unit returning composition local provider API (I22521, b/271871288)
- Added a feature flag,
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
- Fixes a crash in movable content when it is moved between subcompositions. (I3fa1e, b/436858107)
- Fixes a bug with part of a composable stack trace missing when inside multiple nested subcompositions. (I98c6f)
- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Fixed a race condition when internal state of a pausable composition was being updated from multiple threads. (I03895)
- Updates composition registration observer to be called before initial composition. (I4adca, b/430600932)
- Minor bug fix to make
AutoboxingStateValuePropertyDetector
compatible for both K1 and K2. (Ie81c1)
External Contribution
- Make the runtime-rxjava2 artifact multiplatform and add the JVM as a supported target. (I5409e)
- Make the runtime-rxjava3 artifact multiplatform and add the JVM as a supported target. (I97e84)
Compose UI: v1.9.0
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
- Important changes in version 1.9.0 are covered in this blogpost
- Lint checks shipped with Compose now require a minimum AGP version of 8.8.2. If you are unable to upgrade AGP, you can instead upgrade Lint on its own by using
android.experimental.lint.version=8.8.2
(or a newer version) in yourgradle.properties
. To run Compose lint checks inside the IDE, Android Studio Ladybug or newer is required.
Compose UI: v1.10.0-alpha01
August 13, 2025
androidx.compose.ui:ui-*:1.10.0-alpha01
is released. Version 1.10.0-alpha01 contains these commits.
API Changes
- Pointer downs with a mouse or touchpad in a
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 newAbstractComposeView.isClearFocusOnPointerDownEnabled
API. (I6322b, b/282963174) - Introduce
FillableData
interface to support various autofill component types, in addition to Text. (If9bd2) - New API to allow dynamically enable and disable shared elements that also allows accounting for whether there is already an ongoing shared element transition. New API to set up an alternative target bounds when the target shared element is disposed during the transition. New API to obtain the
LayoutCoordinates
of aLookaheadScope
. (I18dd4, b/409819304, b/395670637) - Introduce flag
isNestedScrollInteropIntegerPropagationEnabled
to control the experiment of dispatching correct integers to nested scroll interop. (If8316) - Added
requestFocusForChildInRootBounds()
toDelegatableNode
to move focus to a child that overlaps with the given rect. (I001ef) - Removed flags
isOnScrollChangedCallbackEnabled
,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled
,isFlingContinuationAtBoundsEnabled
,isAutomaticNestedPrefetchEnabled
,DragGesturePickUpEnabled
,isPointerInteropFilterDispatchingFixEnabled
,isNestedScrollInteropPostFlingFixEnabled
,isNestedScrollDispatcherNodeFixEnabled
(I36c18) - Added
@CheckResult
annotation on theSemanticsNode
finder and selector functions to enforce usage of returned values. (I6f86e, b/201652748) - Improve the performance of the content capture process (I3c7c0)
- Introduce
CompositionLocal
that can be used to modify the brush of Autofill's successful filling highlight. (I52329) - Introduced new Interpolatable interface which allows for automatic interpolation between different types, assuming one type knows how to convert from the other. This interface is leveraged in several compose types like Brush and Shape, but can be utilized externally as well. (I58eab)
- Now Scrollable supports 2 dimensional mouse wheel scroll events better. A new test API landed to help test use cases in
MouseInjectionScope
. We also introduced a new overload for scroll methods inMouseInjectionScope
and a flag to control the new behavior calledisMouseWheel1DAxisLockingEnabled
(I136df) - Add
DeviceConfigurationOverrides
for keyboard type & state, navigation type and state, touchscreen state, and UI mode type (I282f0) - Added a new
LineHeightStyle.Mode
calledTight
. This mode helps enforce smaller line heights even when they may possibly cut taller glyphs. (Id3849) BaselineShift
now has an Unspecified value to prevent boxingBaselineShift
,Hyphens
,LineBreak
,TextAlign
, andTextDirection
now haveisSpecified
helper functionsHyphens
,TextAlign
,TextDecoration
, andTextDirection
now havevalueOf()
and value methods enabling efficient serialization/deserialization. (I8d44c)- Added a new
getDisplayName
method interface to allow custom display names for preview parameter instances. (I19bdf, b/241699422) - When Dp values are compared with Unspecified using less-than or greater-than, it now always returns false. Using
Dp.compareTo(Unspecified)
always returns 0. Setting the flagComposeUiUnitFlags.isDpCompareToChanged
to false will returnDp.compareTo()
to is former behavior, where comparing Unspecified with less-than and greater-than don't always return false, andcompareTo()
with Unspecified matches the behavior ofFloat.compareTo()
. (Ifa88b, b/429221319)
Bug Fixes
- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Fixes an issue that prevented the creation of new
AndroidComposeViews
while a transition is ongoing. (I2e23e, b/340894487, b/287484338) - Fixes a color bug when using a vector drawable that uses one color and the
fillColor
is neither fully opaque nor fully transparent. (I3b041, b/328677973) - Fixes an issue where icons loaded via
painterResource
with theme-specific colors didn't update on theme changes. (I85ea0, b/424416571) - Introduce
onFillData
andfillableData
semantics (I45d9e) - Platform-specific state encoding is now always enabled in
StateRestorationTester
. This aligns test behavior with real application state restoration, such as Parcelization on Android. (I38211, b/408154192, b/382294247) - Fixes occasional crashes when requesting focus. (57b31a11, b/431111149)
Core and Core-ktx: v1.17.0
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
- Core library has been updated to target Kotlin 2.0 language level and requires use of Kotlin Gradle Plugin 2.0.0 or newer.
Core-Backported-Fixes: v1.0.0-alpha01
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 capturingJPEG-R
images on some Pixel devices. Fix by usingJPEG
outputs until this KI is resolved.
credentials: v1.6.0-alpha05
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
- Added APIs that allow relying parties (RPs) to send credential state signals to credential providers, such that they can update the state of the credentials on their end. (Ia7a65)
Bug Fixes
- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
credentials providerevents: v1.0.0-alpha02
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
- Minor refactors to exception classes and
GetCapabilitiesRequest
(Ia6ee3) - Added APIs that allow relying parties (RPs) to send credential state signals to credential providers, such that they can update the state of the credentials on their end. (Ia7a65)
- Refactor
ExportCredentialsResponse
such that the metrics reported are grouped by the credential type (I3a088) - Added new APIs for device setup service (Icc9d5)
Bug Fixes
- Added new apis for credential exchange (I77c1c)
Emoji2: v1.6.0-rc01
August 13, 2025
androidx.emoji2:emoji2-*:1.6.0-rc01
is released. Version 1.6.0-rc01 contains these commits.
New Features
- Supported Emoji 16.0 and added “emoji” suffix to the content description.
API Changes
- Removing obsolete
@RequiresApi(21)
annotations (Ic4792) - Removing obsolete
@RequiresApi(21)
annotations (I9103b)
Fragment: v1.8.9
August 13, 2025
androidx.fragment:fragment-*:1.8.9
is released. Version 1.8.9 contains these commits.
Bug Fixes
- Fixed an issue where cancelling a predictive back gesture that pops a hide operation will cause the subsequent gesture not to animate correctly when using animators. (I0a400, b/384765586)
- Fixed an error where a combination of
setMaxLifecycle
andpopBackStack
could fail to move the top fragment to RESUMED. (I3448b, b/406127576)
Games-Activity: v4.3.0-alpha01
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
- Support 16kb page sizes by default.
- Mouse support for GameActivity.
Bug Fixes
- Fixed a race condition between
onDestroy
andonCreate
lifecycle events. - Fixed an issue where apps needed to manually preserve a symbol to initialize native code.
- Improved
GameActivity
touch handling. - Fixed
GameTextInput
generating as a shared library incorrectly.
Games-Controller: v2.3.0-alpha01
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
- Support 16kb page sizes by default.
Graphics Path: v1.1.0-alpha01
August 13, 2025
androidx.graphics:graphics-path:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
Bug Fixes
- Add implementation for conversion from conic to quadratic and use it on host platforms. f059b1
Hilt: v1.3.0-beta01
August 13, 2025
androidx.hilt:hilt-*:1.3.0-beta01
is released. Version 1.3.0-beta01 contains these commits.
ink: v1.0.0-alpha06
August 13, 2025
androidx.ink:ink-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
New Features
- Emoji highlighter stock brush: Highlight parts of a document with any emoji you choose, to add a fun flair and help stay organized.
- More helper APIs for geometry module primitive shapes
- Improve device compatibility and performance
API Changes
- Simplified API for
InProgressStrokesView
, finish geometry APIs, emoji highlighter, remove factory functions fromMutableParallelogram
in favor of populate methods, support seed for randomized brush behaviors. (I38280)
Bug Fixes
- Fix a performance issue and a wet/dry color consistency issue. (Ifcd1d)
input: v1.0.0-beta06
August 13, 2025
androidx.input:input-motionprediction:1.0.0-beta06
is released. Version 1.0.0-beta06 contains these commits.
New Features
- The library will now use the system prediction API if available.
API Changes
- Removing obsolete
@RequiresApi(21)
annotations (I9103b)
Lifecycle: v2.10.0-alpha02
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) settingparent = null
, the new lifecycle operates independently of any host (like anActivity
,Fragment
orNavBackStackEntry
). 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
- In the
LifecycleOwner
composable, theparentLifecycleOwner
parameter has been renamed toparent
. (I080bc)
Bug Fixes
LifecycleOwner
composable now correctly moves its lifecycle toDESTROYED
upon disposal. This prevents potential leaks for external code that holds a reference to the lifecycle. (I9e5b7, b/433659048)- Moving the default minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
External Contribution
- Remove unnecessary internal backing fields from
LifecycleOwner
. Thanks Jake Wharton for the contribution. (Ideddb)
Media: v1.7.1
August 13, 2025
androidx.media:media:1.7.1
is released. Version 1.7.1 contains these commits.
Bug Fixes
- Improve performance of
MediaSession.setMetadata()
by reducing the number of intermediate allocations and removing unnecessary parceling/unparceling of bitmaps.
navigation3: v1.0.0-alpha07
August 13, 2025
androidx.navigation3:navigation3-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
MinSdk Update
- The default minSdk for the AndroidX has been moved from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
API Changes
SavedStateNavEntryDecorator
now uses theSaveableStateRegistry
built intoSaveableStateProvider
to save and restore states. (If8d9a)- The
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
- Fixed an issue that would cause custom scenes to be infinitely recalculated because the most recent scene was not being remembered. (I7ba84, b/418153031)
Dependency update
- Navigation3 now depends on Navigation Event
1.0.0-alpha06
.
navigationevent: v1.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:
- Providing Info - Use
NavigationEventInfo
to carry custom data. - Consuming State - Use
dispatcher.state
(NavigationEventState
) to observe gesture progress and context.
NavigationEventCallback
now exposessetInfo(currentInfo, previousInfo)
method to set gesture context in one call (I1d5e7, b/424470518).NavigationEventHandler
adds a new overload that acceptscurrentInfo
andpreviousInfo
, 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 exposesdispatcher.state
anddispatcher.getState<T>()
(If7fae, Ia90ca, b/424470518). TheseStateFlow
-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 toNavigationEventState
(I7b196) that returnslatestEvent.progress
when in progress, or0F
otherwise:val progress = state.progress
-
Add
NavigationEventDispatcherOwner
composable to create, link, and dispose ofNavigationEventDispatcher
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
- The
isPassthrough
parameter has been removed from theNavigationEventCallback
. (I99028, b/424470518) NavigationEventState
constructors are now internal. For testing, update the state (defaults toIdle
) via theDirectNavigationEventInputHandler
. CallhandleOnStarted
orhandleOnProgressed
to set state toInProgress
, andhandleOnCompleted
orhandleOnCancelled
to return it toIdle
. To updateNavigationEventInfo
, useNavigationEventCallback.setInfo
. (I93dca, b/424470518)- Added default parameters to
NavigationEvent
to allow for easier instantiation and to simplify testing which should be used in place ofTestNavigationEvent
. (I5dc49, I232f4) - Added a
TestNavigationEventCallback
for testing navigation events with specific current/previous states. (Idd22e, b/424470518) NavigationEventInputHandler
has been made into an abstract class to replace the previousAbstractNavigationEventInputHandler
with an implementation inDirectNavigationEventInputHandler
(Iadde5, Ifed40I3897c, b/432616296, b/435416924)- The
send*
functions inNavigationEventInputHandler
have had their prefixes renamed tohandle*
. (Iffcaf) OnBackInvokedInputHandler
now extends the newlyabstract
NavigationInputHandler
. (Ib45aa)- Changed
NavigationEventDispatcherOwner
to require a parent dispatcher where you must explicitly passnull
to create a root dispatcher. (Ia6f64, b/431534103)
Bug Fixes
- Improved efficiency by avoiding collection copies in
NavigationEventDispatcher.dispose()
. (I4ab09) - Fixed an issue where the
NavigationEventHandler
did not correctly respond to changes in its enabled state. (Ia5268,I19bec, I5be5c, b/431534103)
Docs Updates
- KDocs for
NavigationEvent
expanded to clarify its role as a unified event wrapper and detail property behavior across different navigation types (gestures, clicks). (I91e8d) - Updated documentation for system back handling Compose APIs (
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 thenavigationevent-compose
artifact to support all KMP targets. (Ia1b87)
Room: v2.8.0-rc01
August 13, 2025
androidx.room:room-*:2.8.0-rc01
is released. Version 2.8.0-rc01 contains these commits.
API Changes
Bug Fixes
- Fix a race condition where Room Flows would not emit the latest query result in an asynchronous multi-query/write situation. (Ic9a3c)
Savedstate: v1.4.0-alpha02
August 13, 2025
androidx.savedstate:savedstate-*:1.4.0-alpha02
is released. Version 1.4.0-alpha02 contains these commits.
Sqlite: v2.6.0-rc01
August 13, 2025
androidx.sqlite:sqlite-*:2.6.0-rc01
is released. Version 2.6.0-rc01 contains these commits.
Test Uiautomator: v2.4.0-alpha06
August 13, 2025
androidx.test.uiautomator:uiautomator:2.4.0-alpha06
is released. Version 2.4.0-alpha06 contains these commits.
New Features
- Added window-based APIs for improved multi-window testing, i.e.
UiDevice#findWindow
can now be used to find a specificUiWindow
according to aByWindowSelector
built withBy.Window
factory methods. (I359c4, I40528, I8c963)
Test Uiautomator Shell: v1.0.0-alpha02
August 13, 2025
androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
Wear Compose: v1.5.0-rc02
August 13, 2025
androidx.wear.compose:compose-*:1.5.0-rc02
is released. Version 1.5.0-rc02 contains these commits.
Bug Fixes
- Fixed a bug in
TimePicker
where long, internationalised strings for the period (AM/PM) could break the layout. (I0fa81)
WindowManager: v1.5.0-beta02
August 13, 2025
androidx.window:window-*:1.5.0-beta02
is released. Version 1.5.0-beta02 contains these commits.
New Features
- Minor bug fixes.
External Contribution
- Add all KMP platforms to
window-core
(If3d7c)
Jetpack Compose for XR: v1.0.0-alpha06
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
- Recreate the
ComposeXrOwnerLocals
when the lifecycle owner is destroyed. (9123ce1)
Jetpack SceneCore: v1.0.0-alpha06
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
- Unrestrict
SceneCore
'sBaseEntity
andBaseScenePose
APIs (88c0ff6)