November 19, 2025
androidx.activity:activity:1.12.0, androidx.activity:activity-compose:1.12.0, and androidx.activity:activity-ktx:1.12.0 are released. Version 1.12.0 contains these commits.
Important changes since 1.11.0:
Androidx Activity library is now dependent on the new NavigationEvent library. This includes support for the NavigationEventDispatcher in ComponentActivity and ComponentDialog. The OnBackPressed APIs have also been rewritten on top of the NavigationEvent APIs to ensure it is backward compatible with the previous library.November 19, 2025
androidx.appfunctions:appfunctions-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
API Changes
AppFunction (I39229, b/454661174)Bug Fixes
November 19, 2025
androidx.car.app:app-*:1.8.0-alpha03 is released. Version 1.8.0-alpha03 contains these commits.
New Features
SectionedItemTemplate#alphabeticalIndexingStrategy to allow different alphabetic indexing for list accelerators.API Changes
endImageType for endImages in Rows (I8865b)SectionedItemTemplate#alphabeticalIndexingStrategy. This is a replacement to #isAlphabeticalIndexingAllowed and gives developers more options for alphabetical indexing. (Ia164d, b/410092683)CarIcon MediaPlayback to simplify use of standard action MediaPlayback. (Ib6cb7)Bug Fixes
minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)November 19, 2025
androidx.compose.animation:animation-*:1.10.0-rc01 is released. Version 1.10.0-rc01 contains these commits.
API Changes
unveilIn and veilOut options are now available for EnterExitTransitions. This allows to animate an overlay layer in front of the entering or exiting content. (If26fe)Bug Fixes
sharedElement (be0e9e)November 19, 2025
androidx.compose.animation:animation-*:1.9.5 is released. Version 1.9.5 contains these commits.
November 19, 2025
androidx.compose.foundation:foundation-*:1.10.0-rc01 is released. Version 1.10.0-rc01 contains these commits.
Bug Fixes
isCacheWindowForPagerEnabled flag. (Iffdec, b/458193632)November 19, 2025
androidx.compose.foundation:foundation-*:1.9.5 is released. Version 1.9.5 contains these commits.
November 19, 2025
androidx.compose.material:material-*:1.10.0-rc01 is released. Version 1.10.0-rc01 contains these commits.
November 19, 2025
androidx.compose.material:material-*:1.9.5 is released. Version 1.9.5 contains these commits.
November 19, 2025
androidx.compose.material3:material3-*:1.5.0-alpha09 is released. Version 1.5.0-alpha09 contains these commits.
New Features
MenuDefaults. (I5cdd4, b/417731597, b/448646125, b/448646896, b/448646891)Modifier.minimumInteractiveComponentSize now provides two new public AlignmentLines: MinimumInteractiveTopAlignmentLine and MinimumInteractiveLeftAlignmentLine. These lines mark the visual edges of a component before extra space is added to meet minimum touch target requirements. (I7f485, b/458124197)ExpandedDockedSearchBarWithGap. (Idb7f8)API Changes
Modifier.align to ButtonGroupScope (I03890, b/416590906)ModalBottomSheet APIs that have been in at least one stable release. (Ifbe1d, b/449757604)ButtonGroup overload with verticalAlignment parameter. (I23a37, b/416590906)Bug Fixes
WideNavigationRail's indicator being cut if its set to a larger width via a larger label size. (I9d740, b/444728723)November 19, 2025
androidx.compose.material3.adaptive:adaptive-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits.
Bug Fixes
ThreePaneScaffold crashes when margins are set. (2df348)November 19, 2025
androidx.compose.runtime:runtime-*:1.10.0-rc01 is released. Version 1.10.0-rc01 contains these commits.
Bug Fixes
SnapshotStateObserver (I7b862, b/435655844, b/456249373, b/402535073)November 19, 2025
androidx.compose.runtime:runtime-*:1.9.5 is released. Version 1.9.5 contains these commits.
Bug Fixes
November 19, 2025
androidx.compose.ui:ui-*:1.10.0-rc01 is released. Version 1.10.0-rc01 contains these commits.
Bug Fixes
visibilityChanged callbacks with false when minDurationMs is not zero. (2ac08b8, b/456384555)onVisibilityChanged callback when the node is initially not visible. (3969e8d, b/447364998)November 19, 2025
androidx.compose.ui:ui-*:1.9.5 is released. Version 1.9.5 contains these commits.
November 19, 2025
androidx.datastore:datastore-*:1.2.0 is released. Version 1.2.0 contains these commits.
November 19, 2025
androidx.datastore:datastore-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
New Features
DataStore by using the sessionStorage API. This feature allows DataStore to persist data temporarily within a single browser tab. (I60fad, b/316376114)November 19, 2025
androidx.emoji:emoji:1.2.0-beta01, androidx.emoji:emoji-appcompat:1.2.0-beta01, and androidx.emoji:emoji-bundled:1.2.0-beta01 are released. Version 1.2.0-beta01 contains these commits.
API Changes
EmojiMetadata typeface specified as non null. (Ic727f, b/236341259)EmojiCompat correctly sets EditorInfo.extras on Android R (I1ea9b, b/196452690)EditText may call EmojiCompat.updateEditorInfo to inform IME that they support EmojiCompat processing. (I1ea9b, b/196452690)Bug Fixes
minSdk from API 21 to API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ibb74c, b/326456246)EmojiCompat init callbacks will now use the handler from each view, respecting views not on the main thread. (Iccbcf, b/278897602)November 19, 2025
androidx.games:games-activity:4.4.0-beta01 is released. Version 4.4.0-beta01 contains these commits.
androidx.games:games-activity from alpha to beta.November 19, 2025
androidx.games:games-text-input:4.3.0-beta01 is released. Version 4.3.0-beta01 contains these commits.
androidx.games:games-text-input from alpha to beta.November 19, 2025
androidx.ink:ink-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
API Changes
Bug Fixes
StrokeInputBatch serialization, fixing a drift in the values from repeated encoding and decodingInProgressStrokes composableNovember 19, 2025
androidx.input:input-motionprediction:1.0.0 is released. Version 1.0.0 contains these commits.
November 19, 2025
androidx.lifecycle:lifecycle-*:2.10.0 is released. Version 2.10.0 contains these commits.
Important changes since 2.9.0:
Add a rememberLifecycleOwner composable to enable creating scoped lifecycles directly within the UI. This is useful for components that need to manage their own lifecycles independently such as a HorizontalPager that wants to only make the current page RESUMED or libraries like Navigation3:
@Composable
fun MyComposable() {
// This LifecycleOwner is automatically moved to DESTROYED when
// it leaves composition and its maxLifecycle is the maximum of either
// the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner
val lifecycleOwner = rememberLifecycleOwner(
maxLifecycle = RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
)
CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) {
val childLifecycleOwner = LocalLifecycleOwner.current
}
}
The lifecycle-viewmodel-navigation3 artifact provides a prebuilt integration for Navigation3, allowing you to enable scoping ViewModel instances to individual screens (‘entries’) by using the rememberViewModelStoreNavEntryDecorator() API:
@Composable
fun MyComposable() {
NavDisplay(
backStack = backStack,
entryDecorators =
listOf(
rememberSaveableStateHolderNavEntryDecorator(),
// Add this line to automatically scope ViewModels to each entry
rememberViewModelStoreNavEntryDecorator(),
),
entryProvider = entryProvider {
// Add your entries here
}
}
}
Add a builder factory function for CreationExtras, providing a more convenient and idiomatic Kotlin API.
override val defaultViewModelCreationExtras: CreationExtras
// Use the CreationExtras builder to add in a custom value to the default
// CreationExtras in your Activity or Fragment
get() = super.defaultViewModelCreationExtras + CreationExtras {
this[CustomKey] = "customValue"
}
Add native support for nullable types in SavedStateHandle.saved, simplifying saving and restoring nullable properties.
Mark SavedStateHandle constructors as @VisibleForTesting.
The minSdk has changed from API 21 to API 23.
November 19, 2025
androidx.navigation3:navigation3-*:1.0.0 is released. Version 1.0.0 contains these commits.
Introducing Navigation3!
November 19, 2025
androidx.navigationevent:navigationevent-*:1.0.0 is released. Version 1.0.0 contains these commits.
Major features of 1.0.0:
The Navigation Event library is now stable! Navigation Event is the AndroidX library for handling system level interactions such as system-back and predictive back in Android (and other platforms).
To handle NavigationEvents, you can implement your own NavigationEventHandler that overrides the desired functions. You then need to add the handler to a NavigationEventDispatcher. Starting with the Activity 1.12.0 release, ComponentActivity implements the new NavigationEventDispatcherOwner interface, which provides a dispatcher that is ready to use :
// The NavigationEventInfo provides information about a navigation state
object CurrentInfo : NavigationEventInfo()
// you can retrieve this from any component that is a NavigationEventDispatcherOwner
// or you can instantiate your own custom dispatcher
val dispatcher = myActivity.navigationEventDispatcher
val myHandler = object : NavigationEventHandler<NavigationEventInfo>(
initialInfo = CurrentInfo,
isBackEnabled = true
) {
override fun onBackStarted(event: NavigationEvent) {
// Prepare for the back event
}
override fun onBackProgressed(event: NavigationEvent) {
// Use event.progress for predictive animations
}
// This is the required method for final event handling
override fun onBackCompleted() {
// Complete the back event
}
override fun onBackCancelled() {
// Cancel the back event
}
}
dispatcher.addHandler(myHandler)
The navigationevent:navigationevent-compose module provides a convenient compose function NavigationBackHandler that automatically hooks up the handler to the closest LocalNavigationEventDispatcherOwner’s NavigationEventDispatcher and allows developers to provide the desired behavior as parameters:
object CurrentInfo : NavigationEventInfo()
object PreviousInfo : NavigationEventInfo()
val navEventState = rememberNavigationEventState(
currentInfo = CurrentInfo,
backInfo = PreviousInfo
)
// Inside composition
NavigationBackHandler(
State = navEventState,
isBackEnabled = true,
// optional
onBackCancelled = { // Cancel the back event },
// required
onBackCompleted = { // Complete the back event } ,
)
Using this pattern in Compose makes it very easy to hoist the NavigationEventState and allow it to be observed by different Composable (i.e. in the case of Navigation3, where you can hoist the state out of the NavDisplay).
Each NavigationEventDispatcher has the ability to provide a parent dispatcher, for both the compose and non-compose cases. This allows developers to create a hierarchical structure where several dispatchers can be managed by a single parent. Having a parent makes handling groups of dispatchers that might need to be disabled or disposed, relatively simple:
// Non-Compose
val parentDispatcher = NavigationEventDispatcher()
val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher)
// Compose
val composeChildDispatcher = rememberNavigationEventDispatcher(
// This defaults to `LocalNavigationEventDispatcherOwner.current`
// Must explicitly provide null to have an unparented dispatcher created here
parent = NavigationEventDispatch()
)
The library also makes it possible to provide signals directly to the NavigationEventDispatcher via a NavigationEventInput. NavigationEventInputs acts as the "input" side of the navigation system, translating platform-specific events (like system back gestures or button clicks) into standardized events that can be sent to a NavigationEventDispatcher. The navigationevent:navigationevent module currently provides 2 NavigationEventInputs: a more generic DirectNavigationEventInput to allow any event to be dispatched and an Android specific OnBackInvokedInput that allows a NavigationEventDispatcher to support system back and the predictive back gesture. If you implement your own dispatcher (instead of using the one provided by ComponentActivity) you must manually add your input:
val dispatcher = NavigationEventDispatcher()
dispatcher.addInput(DirectNavigationEventInput())
dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
November 19, 2025
androidx.remotecallback:remotecallback:1.0.0-alpha03 and androidx.remotecallback:remotecallback-processor:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.
API Changes
November 19, 2025
androidx.room:room-*:2.8.4 is released. Version 2.8.4 contains these commits.
Bug Fixes
SQLiteDriver that does not internally have a pool, such as the BundledSQLiteDriver. This improves performance on repeated execution of the same SQL statement. (5f43bc, b/319653917)@Transaction DAO functions with type variables. (a8365d, b/251316420)SupportSQLite Wrapper performance by avoiding thread hops maintaining the same blocking behaviour as the SupportSQLiteDatabase APIs. (fc70e4)November 19, 2025
androidx.sqlite:sqlite-*:2.6.2 is released. Version 2.6.2 contains these commits.
Bug Fixes
BundledSQLiteDriver performance by using @FastNative to improve JNI calls. (952b92, b/313895287)SQLite connections created by BundledSQLiteDriver. This means error messages coming from SQLite will have a more detailed code which is useful for diagnosing I/O issues and constraint violations. (f1ec6f)November 19, 2025
androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.
November 19, 2025
androidx.tracing:tracing-perfetto:1.0.1, androidx.tracing:tracing-perfetto-binary:1.0.1, and androidx.tracing:tracing-perfetto-handshake:1.0.1 are released. Version 1.0.1 contains these commits.
Bug Fixes
FastNative/CriticalNative in the library, and use the stable platform copies. (I8238a, b/35664282, b/280878596)November 19, 2025
androidx.wear.compose:compose-*:1.6.0-alpha05 is released. Version 1.6.0-alpha05 contains these commits.
API Changes
RotarySnapSensitivity for rotary snap behavior and PagerSensitivity for pager fling behavior, to allow applications to adjust the sensitivity level of rotary and fling behavior, especially for pagers. (Ic3a83, b/449949891)rememberTransformingLazyColumnState that were made with the introduction of reverse layout for TransformingLazyColumn, consolidating to a single function and using a sentinel value to use the default anchor index. (I09302, b/453731755)GenericFailureIcon to be used in FailureConfirmationDialog, which shows a generic error icon. Renamed existing FailureIcon to ConnectionFailureIcon. (I8e965, b/453730430)Bug Fixes
TimePicker more robust when parsing complex locale patterns. (I7b169, b/456538838)TransformingLazyColumn layout when verticalArrangement is Arrangement.Center. (Id18ef, b/451481233)TransformingLazyColumnState constructor with rememberTransformingLazyColumnState function (I36d6a, b/453731755)CheckboxButton to be rounded. (Ie645e, b/378645751)SwitchButton to be rounded. (I31fbf, b/378642590)scrollToItem offset in TransformingLazyColumn which was inverting the scrolling direction. (Ib2c93, b/451481233)SwitchButton and SplitSwitchButton performance. (I708de, b/448781327)November 19, 2025
androidx.webkit:webkit:1.15.0-beta01 is released. Version 1.15.0-beta01 contains these commits.
API Changes
WebViewBuilder APIs (I06828, b/409740828)UiThreadStartupMode for async startup that stops isMultiProcessEnabled() call from startup up Chromium (I524ee, b/397372092)UserAgent form factor until 1.16 release (Ibac8a, b/430554841, b/454438418)NavigationListener instances, which can optionally be configured with a custom Executor for background thread callbacks. Multiple NavigationListener instances can now be added to a single WebView.
onFirstContentfulPaint callback, providing the time information from navigation start to the paint event. (I6aa8e, b/448580228)Profile#addQuicHints which allows apps to tell WebView to prefer QUIC / HTTP3 when connecting to the provided origins. (I8e364, b/445339041)Bug Fixes
androidx.webkit:webkit:1.15.0-beta01 (I0b1bd, b/417241552)November 19, 2025
androidx.window:window-*:1.6.0-alpha01 is released. Version 1.6.0-alpha01 contains these commits.
New Features
WindowSizeClassSets in a grid form.API Changes
WindowSizeClassSets in a grid form. (I4d623, b/444174274)November 19, 2025
androidx.window:window-*:1.5.1 is released. Version 1.5.1 contains these commits.
Bug Fixes
ClassCastException that occurs on certain devices (4d58979)November 19, 2025
androidx.xr.arcore:arcore-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
New Features
ARCore for Jetpack XR now supports devices where Google Play Services for AR is available.November 19, 2025
androidx.xr.projected:projected:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
New Features
November 19, 2025
androidx.xr.runtime:runtime-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
New Features
XrDevice added to provide information about device capabilities. (Ic9d1f)ConfigMode.isSupported API for querying session capabilities. (Iff7af)XrDisplay.BlendMode API. (I484e4)API Changes
November 19, 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
New Features
ScenePose that represents the composition of the perception space origin pose and a pose with respect to the perception space origin. (I5b50a)getGravityAlignedPose function. The gravity aligned pose ignores the Pitch and Roll of rotation. (I5ae21)AnchorEntity.State constant types have been changed from Ints to State subtypes. (Ib0c49)getChildren() to Entity interface. Updated MainPanelEntity lifecycle. (Ia69d6)API Changes
PointerCaptureComponent.PointerCaptureState constant types have been changed from Ints to PointerCaptureState subtypes. (Ic888a)Scene.spatialCapabilities is now of type Set<SpatialCapability> instead of an Int field. The SpatialCapability constants have been renamed. (I9c109)SurfaceEntity constant types have been renamed and changed from Ints to SurfaceEntity subtypes. (I419ed)SpatializerConstant constant types have been renamed and changed from Ints to SpatializerConstant subtypes. (Ia0e18)TextureSampler constant types have been renamed and changed from Ints to TextureSampler subtypes. (I44078)SpatialVisibility constant types have been changed from Ints to SpatialVisibility subtypes. (I70739)ResizeEvent.ResizeState constant types have been renamed and changed from Ints to ResizeState subtypes. (I384d5)InputEvent constant types have been renamed and changed from Ints to inherit from their respective enclosing type. (I82817)GltfModelEntity.AnimationState constant types have been changed from Ints to AnimationState subtypes. (I24f4e)AlphaMode constant types have been renamed and changed from Ints to AlphaMode subtypes. (I27b56)Space constant types have been changed from Ints to Space subtypes. (I9255b)ScenePose.hitTest and related methods now return null if no intersection was found, instead of a HitTestResult with a null hitPosition. HitTestResult.hitPosition is no longer nullable. (I1400a)ActivityPose to ScenePose. (I7fe43)