June 18, 2025
androidx.activity:activity:1.12.0-alpha03
, androidx.activity:activity-compose:1.12.0-alpha03
, and androidx.activity:activity-ktx:1.12.0-alpha03
are released. Version 1.12.0-alpha03 contains these commits.
Bug Fixes
OnBackPressedDispatcher
and NavigationEventDispatcher
are now both initialized lazily in ComponentActivity
. (I710e6)
Fixed issues with OnBackPressedDistpatcher
that caused the following:
OnBackPressedCallback
was added to being notified of its enabled state (b/418715930)OnBackPressedDispatcher
removes the wrong callback when using the addCallback
function that takes a lifecycle. (b/422714753)OnBackPressedDispatcher.remove()
does not remove all instances of a registered OnBackPressedCallback
. (b/423024414)June 18, 2025
androidx.benchmark:benchmark-*:1.4.0-rc01
is released. Version 1.4.0-rc01 contains these commits.
Bug Fixes
CompilationMode.None()
to not measure worst case performance after first iteration. Unfortunately this workaround requires a delay of 5 seconds to intentionally corrupt the runtime image at the beginning of each macrobenchmark suite (I4a4f1).June 18, 2025
androidx.browser:browser:1.9.0-alpha05
is released. Version 1.9.0-alpha05 contains these commits.
API Changes
June 18, 2025
androidx.car.app:app-*:1.8.0-alpha02
is released. Version 1.8.0-alpha02 contains these commits.
New Features
Action.MEDIA_PLAYBACK
which displays an indicator based on media playback state.SectionedItemTemplate
.API Changes
SectionedItemTemplate
between refreshes. (Ia4c51)MEDIA_PLAYBACK
action to enable it for row end action (I05cc4)CarAppExtender#addAction(Action)
so that any type of action can be added to the CarAppExtender
. (Idc4d7)SectionedItemTemplate
accessible for API 8 and above. (I9a079)June 18, 2025
androidx.compose.animation:animation-*:1.8.3
is released. Version 1.8.3 contains these commits.
June 18, 2025
androidx.compose.animation:animation-*:1.9.0-beta01
is released. Version 1.9.0-beta01 contains these commits.
June 18, 2025
androidx.compose.foundation:foundation-*:1.8.3
is released. Version 1.8.3 contains these commits.
June 18, 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01
is released. Version 1.9.0-beta01 contains these commits.
Breaking Changes
background
and border
modifier nodes now implement SemanticsModifierNode
. This can result in new SemanticsNodes
added to the semantics tree and, therefore, lead to test failures in tests that make assumptions about the semantics tree structure. For example, tests that use onChild
, onParent
, onSibling
, and other similar methods to make assertions can fail if a new node is added between the current and target nodes. The preferred way to fix these failures is to add a testTag
to the target node directly. Another approach is to use a looser matcher, such as onNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”))
. (I638b5)API Changes
Modifier.addTextContextMenuComponents
to appendTextContextMenuComponents
. (I4c43f)AnnotatedOutputTransformation
and carried addStyle
functions to TextFieldBuffer
. addStyle
can still only be called from OutputTransformation
. (I9930a, b/417991824)ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled
. (I85b65)isFlingCancellationWithNestedScrollFixEnabled
to fix an issue with fling propagation in nested scrolling. In this CL we are restoring the fling continuation behavior removed in aosp/3260391. We will still cancel the fling animation in case the child is removed from composition. (I467f4, b/405910180, b/419049142, b/416784125)WindowInsetsRulers
: changed rulersIgnoringVisibility
to maximum. Changed getDisplayCutoutBounds()
to be an extension function of PlacementScope
. WindowInsetsAnimationProperties
has been changed to WindowInsetsAnimation
and the getAnimationProperties()
has been changed to getAnimation()
. (I3816f)InsetsRulers
to be in common code with the name WindowInsetsRulers
. Simplified the API so all insets are WindowInsetsRulers
. Extracted non-rulers animation properties to an AnimationProperties
class. WindowInsetsRulers.innermostOf()
can be used to merge multiple WindowInsetsRulers
. (I2f0c6, b/415012444)Bug Fixes
scrollAnimationSpec
in ContentInViewNode
. The behavior was removed during the scrollAnimationSpec
deprecation which caused use cases to be broken. (I1436a, b/403301605)June 18, 2025
androidx.compose.material:material-*:1.8.3
is released. Version 1.8.3 contains these commits.
June 18, 2025
androidx.compose.material:material-*:1.9.0-beta01
is released. Version 1.9.0-beta01 contains these commits.
Bug Fixes
Text(AnnotatedString)
now have Material styling by default. (I0e8ed, b/339843816)June 18, 2025
androidx.compose.material3:material3-*:1.4.0-alpha16
is released. Version 1.4.0-alpha16 contains these commits.
New Features
API Changes
CarouselState
(I12f8e)ComponentOverride
for ModalWideNavigationRail
(I4f440)ComponentOverride
for WideNavigationRail
(I6354f)ComponentOverride
for HorizontalFloatingToolbar
(I51116)ComponentOverride
for ShortNavigationBar
(I30e24)SwipeToDismissBoxState
references to confirmValueChange
have been marked deprecated. Users should instead leverage SwipeToDismissBox
API onDismissed
callback. (Iee780)currentItem
can now be observed from CarouselState
. (Ie87e9)Bug Fixes
FloatingToolbar
that was not applying its shadow correctly. (Icdcc9, b/423336922)LaunchedEffect
(Id9f31, b/302774166)June 18, 2025
androidx.compose.material3.adaptive:adaptive-*:1.2.0-alpha07
is released. Version 1.2.0-alpha07 contains these commits.
API Changes
currentWindowAdaptiveInfo()
function support large and extra-large window width size classes and promote calculatePosture()
and currentWindowDpSize()
functions to stable. (I92e97)June 18, 2025
androidx.compose.runtime:runtime-*:1.8.3
is released. Version 1.8.3 contains these commits.
June 18, 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01
is released. Version 1.9.0-beta01 contains these commits.
API Changes
SnapshotStateSet
now implements Parcelable
on Android, it is now supported to be used as part rememberSaveable { ... }
. (I755dd, b/378623803)SnapshotStateList
now implements Parcelable
on Android, it is now supported to be used as part rememberSaveable { ... }
. (Id18be, b/378623803)movableContentOf()
is now marked with @RememberInComposition
annotation, which allows lint to catch incorrect usages (I2738d)setDiagnosticStackTraceEnabled
to experimental to account for future development of this feature. (I11db3)currentCompositeKeyHash
is now deprecated. Use currentCompositeKeyHashCode
instead. The replacement API encodes the same hash with more bits, which exponentially reduces the chance of two random unrelated groups in the composition hierarchy from having the same hash key. (I4cb6a, b/177562901)@Stable
, @Immutable
, and @StableMarker
have been moved to runtime-annotation (in a compatible way). You can now depend on runtime-annotation if you want to use these annotations from libraries that do not depend on compose. (I23a16)rememberSaveable
overload that accepts a KSerializer
to rememberSerializable
. This change clarifies its intended use with kotlinx.serialization
. Supporting general kotlinx.Serializable
classes directly in rememberSaveable
would require a reified
type parameter, which would break source compatibility by requiring all call sites to provide reified type information at compile time. (Idb875, I38627, b/376028110)Bug Fixes
onForgotten
to remember observers when the pausable composition is disposed of. RememberObservers
in a cancelled pausable composition should only be sent an onAbandoned. (I26f54)remove()
of a list iterator produced by SnapshotStateList
after calling previous()
could removed the wrong element from the list and didn't match what the ArrayList
does for the same sequence of calls. (I05ab7, b/417493222)onForgotton
that could, for example, cause the onDispose
of disposable effects to execute in the wrong order. (Ic1c91, b/417450712)OffsetApplier
now correctly overrides apply()
which was introduced with pausable composition. Not having this could cause pausable composition to throw an exception when updating virtual nodes. (Idbf31, b/409291131)FrameClock.withFrameNanos
is cancelled while a frame is being dispatched. (I89cab, b/407027032)onReuse
and onDeactivate
could get inverted during pausable composition. They are now guaranteed to occur in order of onDeactivate
/onReuse
. (I996e4, b/404058957)LifecycleRegistry
to unsafe mode in Compose Multiplatform to disable MainThread
checks and fix threading issues. See CMP-8227 for details. (Icee87)External Contribution
RecompositionMode.Immediate
could cause missed recompositions. (I9f3a9, b/419527812)PausableComposition
isApplied
and isCancelled
getters which allow for checking the state of the PausableComposition
. (I994aa)AnnotationTarget.FUNCTION
to the FunctionKeyMeta
annotation. (I08021)June 18, 2025
androidx.compose.ui:ui-*:1.8.3
is released. Version 1.8.3 contains these commits.
Bug Fixes
isGetFocusedRectReturnEmptyEnabled
has been removed now that the feature has been fully verified. (Ife722)ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled
makes it so that when nothing is focusable in a ComposeView
, it sets the rect to an Empty value. This prevents a focus search from choosing the View to focus on. This is especially important for when an IME has a NEXT option where it might try to focus on the ComposeView
and requestFocus()
fails. (Ibd0e2, b/369256395)June 18, 2025
androidx.compose.ui:ui-*:1.9.0-beta01
is released. Version 1.9.0-beta01 contains these commits.
API Changes
ShadowContext
to be a sealed interface (I3ce40)IndirectTouchEvent.nativeEvent
experimental. (I6fda5)FrameRateCategory.NoPreference
constant. Rename Modifier.requestedFrameRate
to Modifier.preferredFrameRate
. (I2f976)WindowInsetsRulers
: changed rulersIgnoringVisibility
to maximum. Changed getDisplayCutoutBounds()
to be an extension function of PlacementScope
. WindowInsetsAnimationProperties
has been changed to WindowInsetsAnimation
and the getAnimationProperties()
has been changed to getAnimation()
. (I3816f)ShadowParams
to Shadow
(I11cca)androidx.compose.ui.ui
to androidx.compose.ui
(I8994e)InsetsRulers
to be in common code with the name WindowInsetsRulers
. Simplified the API so all insets are WindowInsetsRulers
. Extracted non-rulers animation properties to an AnimationProperties
class. WindowInsetsRulers.innermostOf()
can be used to merge multiple WindowInsetsRulers
. (I2f0c6, b/415012444)Bug Fixes
isGetFocusedRectReturnEmptyEnabled
has been removed now that the feature has been fully verified. (Ife722)performScrollToNode
, which in some cases was not reaching the target node. With this fix, it should always reach the target node in those cases. A side effect of this change is that the exact scroll position at the end of the action may now be different, which affects screenshot tests and tests that make assumptions about the exact scroll position. (I2c8a1)June 18, 2025
androidx.core:core:1.17.0-alpha01
, androidx.core:core-ktx:1.17.0-alpha01
, and androidx.core:core-testing:1.17.0-alpha01
are released. Version 1.17.0-alpha01 contains these commits.
New Features
API Changes
Parcel.use
extension function for safe handling of Parcel
resources. (I436da)June 18, 2025
androidx.credentials:credentials:1.6.0-alpha03
and androidx.credentials:credentials-play-services-auth:1.6.0-alpha03
are released. Version 1.6.0-alpha03 contains these commits.
New Features
API Changes
CreateDigitalCredentialRequest
constructor API (I6f6da)June 18, 2025
androidx.ink:ink-*:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
New Features
API Changes
InProgressStroke.enqueueInputs/updateShape
methods which returned kotlin.Result
are removed, clients should use e.g. enqueueInputsOrThrow
or enqueueInputsOrIgnore
instead. InProgressStroke.getNeedsUpdate
is renamed to isUpdateNeeded
. InProgressStroke.populateOutlinePosition
now returns its output parameter to allow call chaining, consistent with other methods in Ink. The TextureBitmapStore
interface is moved from the rendering module to the brush module. BoxAccumulator.populateFrom
is made to take a nullable immutable Box instead of a mutable BoxAccumulator
, to make it clearer what is mutated, callers should change boxAccumulator.add(other)
to boxAccumulator.add(other.box)
. BrushUtil.toBuilderWithAndroidColor/createBuilderWithAndroidColor
are removed, use the setAndroidColor
of Brush.Builder
after constructing instead. (Ia7155)InProgressStrokesView.textureBitmapStore
is now private. There are still public accessors for this property. (I1d706)Bug Fixes
June 18, 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
and androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
are released. Version 1.0.0-alpha02 contains these commits.
Dependency Updates
1.0.0-alpha02
is dependent on changes in Navigation3 1.0.0-alpha04
. (Icd0fd, b/420991203)June 18, 2025
androidx.navigation3:navigation3-*:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
API Changes
NavEntry.content
is now private. To invoke NavEntry
content, call the new NavEntry.Content()
api which no longer requires a key
parameter to invoke. (Icd0fd, b/420991203)NavEntry.key
is now a private field. The NavEntry
and its relevant states should be identified by the new contentKey
field which is generated from the new contentKeyFactory
lambda and defaults to a saveable hash generated from NavEntry.key
(I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)Dependency Changes
androidx.navigationevent.compose
artifact.June 18, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
New Features
navigationevent-compose
module to support Jetpack Compose features in the navigationevent
library. (980d78)NavigationEvent
Compose has added a new LocalNavigationEventDispatcherOwner
local composition. It returns a nullable value to better determine whether it is available in the current composition. NavigationEventHandler
will now throw an error if the underlying owner is not found. (62ffda)NavigationEvent
Compose has added a new NavigationEventHandler
Composable to handle (predictive back gesture) events. It provides a Flow
of NavigationEvent
objects that must be collected in the suspending lambda you provide c42ba6 :NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
API Changes
NavigationEventCallback
can now be registered with only one NavigationEventDispatcher
at a time; adding it to multiple dispatchers throws an IllegalStateException
. Note that this behavior differs from OnBackPressedDispatcher
, which allows multiple dispatchers. (e82c19)isPassThrough
a val
to prevent mutation during navigation, which could break NavigationEvent
's dispatching. (I0b287)June 18, 2025
androidx.room:room-*:2.7.2
is released. Version 2.7.2 contains these commits.
Bug Fixes
SQLiteException
when obtaining a connection takes too long, instead a log message will be sent by the library. Logging instead of throwing works around iOS suspending loopers causing Room to misinterpret the timeout that occurs in the Kotlin Coroutine acquiring the connection and thus preventing the exception from being thrown when an iOS app is backgrounded and later resumed in the middle of a database operation. (b/422448815)June 18, 2025
androidx.sqlite:sqlite-*:2.5.2
is released. Version 2.5.2 contains these commits.
Bug Fixes
June 18, 2025
androidx.test.uiautomator:uiautomator:2.4.0-alpha05
is released. Version 2.4.0-alpha05 contains these commits.
API Changes
UiObject2#waitForStable
as a shortcut for UiObject2#accessibilityNodeInfo#waitForStable()
June 18, 2025
androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
New Features
UiAutomation#executeShellCommandRwe
introduced in api 34.June 18, 2025
androidx.wear.compose:compose-*:1.5.0-beta04
is released. Version 1.5.0-beta04 contains these commits.
Bug Fixes
TransformingLazyColumn
, where content that fits within the screen is now aligned correctly from the top of the screen (I80115)TransformingLazyColumn
where the bottom item was incorrectly scaled when scrolling to the very bottom of a list with an EdgeButton
. The scroll progress now follows a gradient descent when restoring the layout. (Iea375)TransformingLazyColumn
now reads the item height inside the background painter, which allows custom TransformationSpecs
to implement morphing. (I022f0)SwipeToReveal
now vertically centers the revealed actions correctly. (I4419b)SwipeToReveal
that prevented it working correctly with swipe-to-dismiss if both views and compose were in use on the screen. (I5dc0e)SwipeToReveal
actions were drawn with a vertical offset when scrolling. (I29444)AlertDialog
, ConfirmationDialog
, OpenOnPhoneDialog
and SwipeToReveal
now round up paddings and sizes that are calculated as a percentage of the screen size. (I76367)ButtonDefaults.outlinedButtonBorder
now updates following enabled/disabled state changes size(If2ddd)EdgeButton
height that occurred on complex screens with Pager and ScreenScaffold
. (I946e3)HorizontalPageIndicator
and VerticalPageIndicator
performance by drawing to Canvas. (Ifae1e)LevelIndicator
that caused animations to stop, due to unnecessary recompositions. (I45d08)June 18, 2025
androidx.wear.watchfacepush:watchfacepush:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
API Changes
:wear:watchface:watchface-push
June 18, 2025
androidx.work:work-*:2.10.2
is released. Version 2.10.2 contains these commits.
Bug Fixes