Skip to content

2026-08-12

Choose a tag to compare

@github-actions github-actions released this 18 Aug 17:25
· 3 commits to main since this release

Appcompat: v1.8.0

August 12, 2026

androidx.appcompat:appcompat:1.8.0 and androidx.appcompat:appcompat-resources:1.8.0 are released. Version 1.8.0 contains these commits.

Important changes since 1.7.0:

Benchmark: v1.5.0-rc01

August 12, 2026

androidx.benchmark:benchmark-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.

CameraX: v1.7.0-alpha03

August 12, 2026

androidx.camera:camera-*:1.7.0-alpha03 is released. Version 1.7.0-alpha03 contains these commits.

API Changes

  • Deprecated legacy Camera2Interop APIs (Camera2Interop.Extender, Camera2CameraControl, Camera2CameraInfo, and CaptureRequestOptions) in favor of Camera2Interop configurator factory methods and Kotlin extension functions. (Ib0845, b/529609261)
  • Added Kotlin DSL camera2Interop extension blocks for preview, imageAnalysis, videoCapture, imageCapture, and SessionConfig.Builder, as well as CameraControl.applyCamera2InteropAsync extension function. (I51af9, b/529609261)
  • Added new Camera2Interop configurator factory methods (forUseCase, forImageCapture, forSessionConfig, forCameraControl) and corresponding setInterop / applyInteropAsync methods on Preview.Builder, ImageCapture.Builder, ImageAnalysis.Builder, VideoCapture.Builder, SessionConfig.Builder, and CameraControl. (I0007b, b/529609261)
  • Added helper methods to Camera2Interop and equivalent Kotlin extension properties (CameraInfo.cameraId, CameraInfo.cameraCharacteristics, and String.toCameraSelector()) to retrieve Camera2 camera ID and characteristics from CameraInfo. (I11803, b/529609261)
  • Added Preview.setMirrorMode, Preview.getMirrorMode and VideoCapture.setMirrorMode to public APIs, and removed the ExperimentalMirrorMode annotation. (I4ed60, b/519794349, b/470629643)
  • Added Kotlin DSL builders preview { ... }, imageCapture { ... }, imageAnalysis { ... }, and videoCapture { ... } for creating UseCases. (I91df9, b/530013719)
  • Modified ImagePlane.buffer to be non-nullable ByteBuffer. (I98593)
  • Deprecated the property getters on SessionConfig.Builder, HighSpeedVideoSessionConfig.Builder, and ExtensionSessionConfig.Builder in Kotlin DSL to enforce write-only properties. (I2875b, b/534570559)

Bug Fixes

  • Fixed an issue where binding multiple Preview use cases with an OverlayEffect caused one Preview stream delivery failure. (I7a383, b/532577546, b/532924417)
  • Fixed an issue where Recording.pause() and Recording.resume() failed when switching cameras during a persistent video recording. (I71004, b/532327691, b/367121726)
  • Fixed HAL crashes when using Zero-Shutter Lag (ZSL) while zooming across physical camera boundaries on multi-camera devices. (I1c374, b/527782712, b/514757157)
  • Fixed an issue where HDR video recording could fail on Samsung Galaxy S25, S26, and Fold 7 devices. (Ic0827, b/529618629)

Camera Feature Combination Query: v1.7.0-alpha03

August 12, 2026

androidx.camera.featurecombinationquery:featurecombinationquery:1.7.0-alpha03 and androidx.camera.featurecombinationquery:featurecombinationquery-play-services:1.7.0-alpha03 are released. Version 1.7.0-alpha03 contains these commits.

camera viewfinder: v1.7.0-alpha03

August 12, 2026

androidx.camera.viewfinder:viewfinder-compose:1.7.0-alpha03, androidx.camera.viewfinder:viewfinder-core:1.7.0-alpha03, and androidx.camera.viewfinder:viewfinder-view:1.7.0-alpha03 are released. Version 1.7.0-alpha03 contains these commits.

Bug Fixes

  • Fixed a resource leak in Viewfinder where SurfaceControl was not properly released. (If9da7, b/532595493)

Compose Animation: v1.12.0

August 12, 2026

androidx.compose.animation:animation-*:1.12.0 is released. Version 1.12.0 contains these commits.

Important changes since 1.11.0:

Compose Animation: v1.13.0-alpha01

August 12, 2026

androidx.compose.animation:animation-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains these commits.

API Changes

  • Restored EnterTransition.with as deprecated with DeprecationLevel.HIDDEN for binary compatibility. (I71214, b/535291175)
  • Annotated overridable empty base methods across Compose with @EmptySuper to denote that overriding implementations should not invoke super. (Id407b)
  • Introduced CapturedAnimatedVisibility, an alternative to AnimatedVisibility that immediately disposes child composition on exit and animates the last rendered frame via a GraphicsLayer. (I6c5b3)
  • Renamed the rememberTransition overload that accepts a DeferredTransitionState to rememberDeferredTransition to disambiguate it from the standard TransitionState variants. (I7bb7e)
  • Made EnterExitTransitionConfig public for EnterTransition and ExitTransition. (Idd5a4, b/330152398)
  • Transition.Crossfade and createChildTransition are now stable. EnterTransition.with has been removed (use togetherWith). (I38f66)
  • createChildTransition is now stable. (Ied832, b/261422996)
  • androidx.benchmark now has a minSdk of 24. (Ic2a85)
  • Exposed the current animated value on DeferredTargetAnimation. (Ie4f6e, b/434659224)
  • Replace experimental @AnimationToolingApi with @RestrictTo API that has stricter tracking guarantees. (Ia4fd1, b/524317805)
  • Made unveilIn and veilOut APIs stable (I9e3a3)

Bug Fixes

  • Optimized file-level initialization of animation top-level value class properties by using dynamic getters. (I88b86)
  • Optimized companion object initialization of compose:animation value classes (StartOffsetType, ArcMode, SlideDirection) by using dynamic getters. (I4162e)
  • Cleans up API information (Ia8066)

Compose Foundation: v1.12.0

August 12, 2026

androidx.compose.foundation:foundation-*:1.12.0 is released. Version 1.12.0 contains these commits.

Important changes since 1.11.0:

Compose Foundation: v1.13.0-alpha01

August 12, 2026

androidx.compose.foundation:foundation-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains these commits.

Breaking Changes

  • Following on from the announcement in the previous release, Modifier.onFocusedBoundsChanged has had its implementation fully removed. Using this modifier now no-ops. Migrate to using FocusTargetModifierNode.getFocusedRect() to query this information on demand as needed. (Ia39db, b/220030968)

API Changes

  • Providing LazyLayoutCacheWindow and LazyGridPrefetchStrategy via LazyGridState has been deprecated in favour of providing a LazyLayoutCacheWindow to the composable function. (I3f31e)
  • Remove isSkipItemPlacementAnimationFixEnabled flag (I890f3, b/493183465)
  • Remove isClearNestedScrollCoroutineScopeFixEnabled flag (Iedfd7, b/506963276)
  • Changed flag isCacheWindowVisibleItemCountCheckEnabled to isCacheWindowLookaheadCheckEnabled (I2ea06)
  • TextFieldState now saves and restores text style information. AnnotatedString.Annotation.Saver is now public to allow saving and restoring of AnnotatedString.Annotation objects. (I8b533, b/135556699)
  • Adds a cache window to lazy staggered grid layout. To revert to the old prefetch behaviour, set isUsingCacheWindowInStaggeredGrids to false. (I1c70d)
  • FlexBox and its related configuration APIs have been promoted to stable and are no longer experimental. (I209ed, b/475491619)
  • Added maxItemsInEachLine configuration to FlexBox to allow limiting the number of items per line when wrapping is enabled. (I2744b, b/475491619)
  • Annotated overridable empty base methods across Compose with @EmptySuper to denote that overriding implementations should not invoke super. (Id407b)
  • Promoted WindowInsets visibility and animation APIs to stable. (I37441, b/537329254)
  • Clicks on clickable elements now automatically play interaction sound effects on Android. (Ia72f8)
  • The cache window now refils the ahead window if the number of visible items change without having scrolled. Set the isCacheWindowVisibleItemCountCheckEnabled flag to false to disable this check and revert to old behaviour. (I67b5a)
  • Updated NestedScrollDispatcher.coroutineScope property to safely return a cancelled CoroutineScope when unattached or detached. (I9b112, b/535290281)
  • Renamed enableNonScrollCaching to isNonScrollCachingEnabled (I7a54b, b/535290282)
  • Added @CheckResult to SemanticsNodeInteraction.isDisplayed() and isNotDisplayed() to ensure their return values are asserted, preventing silent test failures when developers mistakenly use them instead of assertion APIs. (I1b447, b/508178494)
  • Make LazyLayoutCacheWindow stable (I2cda3)
  • Added the bringIntoViewSpec param for Horizontal and Vertical Pager to allow overriding Pager's default implementation. (Icdcbf, b/505052292)
  • Fixes a bug in the lazy layout prefetch scheduler's idle detection. Previously, the scheduler might have incorrectly considered itself idle when a frame is severely delayed, potentially leading to jank when scrolling. To revert to the old behaviour set the isLazyPrefetchSchedulerIdleTimeFixEnabled compose flag to false. (If0594, b/458024295)
  • Introduce coroutineScopeOrNull() in NestedScrollDispatcher, an alternative API to access the dispatcher's parent coroutine scope. (I18c0f)
  • Fixed horizontal text shifting during overscroll in Compose. Can be disabled via AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled. (Ica169, b/532079110, b/532081619)
  • Introduce the flag isDraggableZeroDeltaConsumptionEnabled to control the rollout of this fix in Draggable. Zero delta events are now processed correctly. (I50eb1, b/524163413)
  • Text selection is now safely constrained to the text length during concurrent text updates to prevent crashes. (I64fd7)
  • androidx.benchmark now has a minSdk of 24. (Ic2a85)
  • The links are now better handling the clicks when span multiline. The touch target has been override to 0 to support this. If this is not a desirable behavior, use ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabled flag to override it. (Ide41b, b/361106057)
  • Fixed a low-volume exception when writing to a mutable state object. (I48194, b/503110696)
  • Expose observable keys on SaveableStateHolder to simplify navigation/back stack state management and remove the need for external key tracking. Access via holder.keys; remove with removeState. (I9bbbb, b/398887924)
  • Removes experimental outdated IndirectPointerEvent helper function. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • Make LocalBringIntoViewSpec stable on Android. (Ibcb97)
  • Add isMultiLaneCacheWindowEnabled flag (I3d997)
  • Created a new SelectionState API, to be passed to SelectionContainer for observing selected text and programmatically updating selection." into androidx-main am: 929401883c am: c02871cac4 (I15bd4)
  • Added LocalTextFieldContentObserverRegistrationExecutor that offers a way to delegate the implicit ContentObserver registration that happens in TextFields to a background thread. (Ib4fa6, b/505287297, b/509842675)
  • Renamed TextObfuscationMode.Default to System. TextObfuscationMode.RevealLastTyped now acts as an absolute override and always reveals the last typed character. The default argument of BasicSecureTextField is updated to System. (If26d3, b/425658491, b/453647378)

Bug Fixes

  • Fixed an issue where fast scrolling in Compose nested inside an Android scroll container (like ScrollView or CoordinatorLayout) would sometimes calculate incorrect velocity. (I0f017)
  • Fixed an issue in FlexBox where focus traversal did not match the visual order of items when using reverse directions, reverse wrap, or custom item order. (I4cc61, b/521609263)
  • Fixed an issue where standard layout modifiers like Modifier.fillMaxWidth() and Modifier.fillMaxHeight() had no effect on items inside FlexBox unless an explicit flex grow factor was specified. (Ib0ac3, b/515657458)
  • Optimized file-level initialization of foundation top-level value class properties by using dynamic getters. (I570d7)
  • Optimized companion object initialization of foundation-layout value classes (WindowInsetsSides, etc.) by using dynamic getters. (I01c2b)
  • Fixed an issue where Compose text selection context menu items displayed stale strings after an in-app locale switch when Activity restarts were disabled via android:configChanges. (Ic910b, b/515156417)
  • Optimized companion object initialization of compose:foundation value classes (KeyModifiers, MarqueeAnimationMode, Source, etc.) by using dynamic getters. (I78455)
  • Fixes style animations to ensure that, when transitioning to and from a value that is only conditionally set in an animation, it will be treated as animating to and from the default value of the property. (I8e41d, b/527140078)
  • Fixed an issue in Grid where auto-placed items with a span larger than the available explicit tracks in the constrained direction would bleed outside the grid's bounds when gaps were applied. (I00ce0, b/506570362)
  • Cleans up API information (Ia8066)
  • Fixed a bug in BasicTextField where it would not correctly provide extracted text updates to the IME when requested. (I746fa, b/203549026, b/492363474)

Compose Material: v1.12.0

August 12, 2026

androidx.compose.material:material-*:1.12.0 is released. Version 1.12.0 contains these commits.

Important changes since 1.11.0:

Compose Material: v1.13.0-alpha01

August 12, 2026

androidx.compose.material:material-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains these commits.

API Changes

  • androidx.benchmark now has a minSdk of 24. (Ic2a85)

Bug Fixes

  • Optimized file-level initialization of material top-level value class properties by using dynamic getters. (Iae591)
  • Optimized companion object initialization of material value classes (FabPosition and Strings) by using dynamic getters. (I0c7c0)
  • Remove requirement for compileSdk 37 (If78b4)

Compose Material3: v1.5.0-alpha26

August 12, 2026

androidx.compose.material3:material3-*:1.5.0-alpha26 is released. Version 1.5.0-alpha26 contains these commits.

API Changes

  • Added ElevatedToggleButtonDefaults, FilledTonalToggleButtonDefaults, and OutlinedToggleButtonDefaults, and cleaned up non-semantic shape properties in ToggleButtonDefaults. (Ia0a85)
  • Fixed a11y contrast issue for the horizontal NavigationItem's label in high contrast themes. The label's color is now specified via selectedTextColorTopIconPosition (vertical item's label color, which has not changed) and selectedTextColorStartIconPosition (horizontal item's label color, now set to match selectedIconColor). To revert this update, pass in ShortNavigationBarItemDefaults/WideNavigationRailItemDefaults.colors().copy(selectedTextColorStartIconPosition = MaterialTheme.colorScheme.secondary) (I85855, b/490910896)
  • Scroll offset variables have been removed from SearchBarScrollBehavior and should now be accessed via the new class SearchBarScrollState. (Ib24e4)
  • Promoted BottomAppBar and its associated methods to stable. These APIs no longer require the @ExperimentalMaterial3Api opt-in. (I42c61)
  • Saved active selection mode in TimePickerState across state restorations and added initialSelection parameter to TimePickerState factory function. (Iad905)
  • ExposedDropdownMenu is now an extension function on ExposedDropdownMenuBoxScope instead of a member. You may need to update your code with a new import. (Ie8a65, b/356452026)

Bug Fixes

  • Fixed an issue where partial color customization in MenuDefaults.itemColors overwrote unprovided colors with Color.Unspecified. (Iea847)
  • Fixed TalkBack announcements to read formatted time values in the scrollable TimePicker. (Ice981)
  • Fixed a crash in ExposedDropdownMenu when screen height is smaller than menu height. (I6adf1)
  • Fixed wrong content padding of wide navigation rail. Bottom padding is now 0. To revert this update you can set contentPadding = PaddingValues(0.dp,44.dp,0.dp,44.dp). (I572bb)
  • Updated the public API surface to align with recent API review feedback. (I71aff, b/532657001)

External Contribution

  • Fixed Material3 Slider Label not showing while dragging the slider by its thumb with a mouse. (I97a6d, b/533483487)

Compose Material3 Adaptive: v1.3.0

August 12, 2026

androidx.compose.material3.adaptive:adaptive-*:1.3.0 is released. Version 1.3.0 contains these commits.

New Features

  • We are excited to announce the release of the adaptive-navigation3 library. This new library, part of the Material Adaptive and Navigation3 ecosystem, is designed to help you build adaptive Material UIs integrated with the Navigation3 library.

    Use scene strategies to implement a canonical list-detail pane scaffold (ListDetailSceneStrategy, rememberListDetailSceneStrategy) or a supporting pane scaffold (SupportingPaneSceneStrategy, rememberSupportingPaneSceneStrategy). For more information about scenes, scene strategies, and other new concepts introduced in Navigation 3, refer to the Navigation3 guide.

  • ListDetailPaneScaffold and SupportingPaneScaffold are now supporting margins and edge-to-edge.

Important changes since 1.2.0:

  • Support RTL with pane expansion anchors (I0770b)

remote compose: v1.0.0-alpha17

August 12, 2026

androidx.compose.remote:remote-*:1.0.0-alpha17 is released. Version 1.0.0-alpha17 contains these commits.

API Changes

  • Promoted several RemoteCompose unit and type conversion APIs to public, including toRemoteFloat(), toRemoteLong(), toPx(density), asRdp(), toRemoteDp(), asRemoteTextUnit(), and toRsp(). (Idca36, b/465743273)
  • Promoted drawCircle, drawOval, and drawLine in RemoteDrawScope to public. (Iccf34, b/465743273)
  • Added arithmetic and comparison operations to RemoteDp. (I4b712, b/467023174)
  • Exposed RemoteBrush, radialGradient, and sweepGradient as public APIs in remote-creation-compose. (I24695, b/465743273)

Other

Compose Runtime: v1.12.0

August 12, 2026

androidx.compose.runtime:runtime-*:1.12.0 is released. Version 1.12.0 contains these commits.

Important changes since 1.11.0:

Updates to the Experimental Slot Table

  • We've made progress towards stabilizing the experimental LinkTable implementation introduced in 1.11. The new implementation is designed to improve recomposition performance, especially with small random changes. We encourage users to try the new SlotTable and report any issues you encounter. See ComposeRuntimeFlags.isLinkBufferComposerEnabled for more information.

Side Effect with Keys API

  • Added an overload to SideEffect that accepts key arguments. The new API can be used to fire one-shot SideEffects without the need for a LaunchedEffect or DisposableEffect whose CoroutineScope or onDispose block are unused. (I528b2, b/476108743)

Compose Runtime: v1.13.0-alpha01

August 12, 2026

androidx.compose.runtime:runtime-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains these commits.

API Changes

  • We've adjusted the LinkTable feature flag to reduce contention in merged proguard rule sets and to increase compatibility when an app is minified outside of Gradle. The proguard syntax used to configure the flag has changed slightly. See below, and note the added parenthesis (I419da): -assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }

  • produceState() and Flow.collectAsState() now accept a SnapshotMutationPolicy argument to control the equality and merging policy of the underlying State object. (I0c167, b/405128869)

  • Made @ComposableTarget repeatable. See the updated documentation for more information. (I99a89, b/481422057)

  • Added RecompositionTracer to record recomposition invalidation flow (I1dbc1, Ia991d, b/531813367)

  • Exposed observable keys on SaveableStateHolder to simplify navigation/back stack state management and remove the need for external key tracking. Access via holder.keys; remove with removeState. (I9bbbb, b/398887924)

  • Added staticCompositionLocalWithComputedDefaultOf to create ProvidableCompositionLocals that act as static when provided, or computed when unprovided. (I844e4)

Bug Fixes

  • Fixed an issue in the GapComposer that can cause RememberObserver instances after a withCompositionLocal block to incorrectly execute their forget callbacks before RememberObservers in the block. (I4d54c)
  • Fixed a low-volume exception when writing to a mutable state object. (I48194, b/503110696)
  • Fixed a bug in SnapshotStateSet.writeToParcel where it was only serializing the first entry. (I64f4c, b/537461421)
  • The CancellationExceptions used to cancel LaunchedEffects and remembered CoroutineScopes have been tweaked for clarity when appearing in stack traces. (I89840, b/449897855)
  • Optimized companion object initialization of compose:runtime value classes (ComposeStackTraceMode, GroupKind) by using dynamic getters. (I50640)
  • Remove requirement for compileSdk 37 (If78b4)

External Contribution

  • Fixed parent compositions becoming unresponsive when erroring subcomposition is removed during Live Edit. (I3717c)
  • Fixed Live Edit recovery after an error in a subcomposition so parent compositions continue observing state changes. (I63fb5)

Compose UI: v1.12.0

August 12, 2026

androidx.compose.ui:ui-*:1.12.0 is released. Version 1.12.0 contains these commits.

### Downloadable Variable Fonts & Zero-Config Setup (ui-text-google-fonts)

• Variable Fonts & Zero-Config GMS certificates!

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
<span class="devsite-syntax-n">val</span> <span class="devsite-syntax-n">fontFamily</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">FontFamily</span><span class="devsite-syntax-p">(</span>                                                                                                                                                                                            
    <span class="devsite-syntax-n">Font</span><span class="devsite-syntax-p">(</span>                                                                                                                                                                                                               
        <span class="devsite-syntax-n">googleFont</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">GoogleFont</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s2">"Google Sans Flex"</span><span class="devsite-syntax-p">),</span>                                                                                                                                                                    
        <span class="devsite-syntax-o">//</span> <span class="devsite-syntax-n">Automatically</span> <span class="devsite-syntax-n">uses</span> <span class="devsite-syntax-n">default</span> <span class="devsite-syntax-n">GMS</span> <span class="devsite-syntax-n">certificates</span><span class="devsite-syntax-err">!</span>                                                                                                                                                                 
        <span class="devsite-syntax-n">variationSettings</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">FontVariation</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">Settings</span><span class="devsite-syntax-p">(</span>                                                                                                                                                                     
            <span class="devsite-syntax-n">FontVariation</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">weight</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-mi">900</span><span class="devsite-syntax-p">),</span>                                                                                                                                                                                  
            <span class="devsite-syntax-n">FontVariation</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">slant</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-mi">0</span><span class="devsite-syntax-n">f</span><span class="devsite-syntax-p">)</span>                                                                                                                                                                                     
        <span class="devsite-syntax-p">)</span>                                                                                                                                                                                                               
    <span class="devsite-syntax-p">)</span>                                                                                                                                                                                                                   
<span class="devsite-syntax-p">)</span>


──────                                                                                                                                                                                                                  

### Wide Color Gamut (WCG) Support (ui-graphics)

WCG Preservation: * Non-sRGB color spaces (e.g., AdobeRgb, DisplayP3) set on Paint or Shader are preserved on API 29+. * Falls back to sRGB on older API levels.

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
<span class="devsite-syntax-n">val</span> <span class="devsite-syntax-n">wcgColor</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">Color</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-mf">0.9</span><span class="devsite-syntax-n">f</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-mf">0.5</span><span class="devsite-syntax-n">f</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-mf">0.1</span><span class="devsite-syntax-n">f</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-n">colorSpace</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">ColorSpaces</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">AdobeRgb</span><span class="devsite-syntax-p">)</span>                                                                                                                                               
<span class="devsite-syntax-n">val</span> <span class="devsite-syntax-n">paint</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">Paint</span><span class="devsite-syntax-p">()</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">apply</span> <span class="devsite-syntax-p">{</span>                                                                                                                                                                                             
    <span class="devsite-syntax-n">color</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">wcgColor</span> <span class="devsite-syntax-o">//</span> <span class="devsite-syntax-n">Preserved</span> <span class="devsite-syntax-n">on</span> <span class="devsite-syntax-n">API</span> <span class="devsite-syntax-mi">29</span><span class="devsite-syntax-o">+</span>                                                                                                                                                                            
<span class="devsite-syntax-p">}</span>


──────                                                                                                                                                                                                                  

### Hardware-Accelerated Mesh Gradients (ui)

• Painter API: Modifier.meshGradient is replaced by MeshGradientPainter, which uses hardware-accelerated Canvas.drawMesh.
• Usage: Use MeshGradientPainter inside Modifier.paint.

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {
MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {
setVertex(0, 0, Offset(0f, 0f), Color.Red)
setVertex(0, 1, Offset(1f, 0f), Color.Blue)
setVertex(1, 0, Offset(0f, 1f), Color.Green)
setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
}
Box(Modifier.fillMaxSize().paint(meshPainter))
──────


### 4. Credential Manager Integration (ui)

Autofill: * Adds low level credentialRequest semantics property for API 34+ text fields.

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
<span class="devsite-syntax-n">BasicTextField</span><span class="devsite-syntax-p">(</span>                                                                                                                                                                                                         
    <span class="devsite-syntax-n">value</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">value</span><span class="devsite-syntax-p">,</span>                                                                                                                                                                                                      
    <span class="devsite-syntax-n">onValueChange</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">onValueChange</span><span class="devsite-syntax-p">,</span>                                                                                                                                                                                      
    <span class="devsite-syntax-n">modifier</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">Modifier</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">semantics</span> <span class="devsite-syntax-p">{</span>                                                                                                                                                                                     
        <span class="devsite-syntax-k">if</span> <span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">Build</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">VERSION</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">SDK_INT</span> &gt;<span class="devsite-syntax-o">=</span> <span class="devsite-syntax-mi">34</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-p">{</span>                                                                                                                                                                              
            <span class="devsite-syntax-n">credentialRequest</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">CredentialRequestData</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">request</span><span class="devsite-syntax-p">,</span> <span class="devsite-syntax-n">callback</span><span class="devsite-syntax-p">)</span>                                                                                                                                                
        <span class="devsite-syntax-p">}</span>                                                                                                                                                                                                               
    <span class="devsite-syntax-p">}</span>                                                                                                                                                                                                                   
<span class="devsite-syntax-p">)</span> 


──────                                                                                                                                                                                                                  

### 5. Automatic Interaction Sounds (ui)

Click and Nav sounds: * Support Android-compatible click and nav sounds using platform sound configuration. * Opt-out: Use SoundEffectOnInteraction wrapper to disable sounds for a subtree.

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
<span class="devsite-syntax-o">//</span> <span class="devsite-syntax-n">Opt</span><span class="devsite-syntax-o">-</span><span class="devsite-syntax-n">out</span> <span class="devsite-syntax-n">of</span> <span class="devsite-syntax-n">sounds</span> <span class="devsite-syntax-k">for</span> <span class="devsite-syntax-n">everything</span> <span class="devsite-syntax-n">inside</span>                                                                                                                                                                              
<span class="devsite-syntax-n">SoundEffectOnInteraction</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">enabled</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">false</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-p">{</span>                                                                                                                                                                             
    <span class="devsite-syntax-n">Button</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">onClick</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-p">{})</span> <span class="devsite-syntax-p">{</span>                                                                                                                                                                                              
        <span class="devsite-syntax-n">Text</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s2">"Silent Button"</span><span class="devsite-syntax-p">)</span>                                                                                                                                                                                           
    <span class="devsite-syntax-p">}</span>                                                                                                                                                                                                                   
<span class="devsite-syntax-p">}</span>                                                                                                                                                                                                                       


### 6. Espresso Integration for Hybrid UIs (ui-test)
Scope Compose interactions to the View hierarchy matched by an Espresso ViewInteraction.

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
<span class="devsite-syntax-o">//</span> <span class="devsite-syntax-n">Match</span> <span class="devsite-syntax-n">RecyclerView</span> <span class="devsite-syntax-n">row</span> <span class="devsite-syntax-n">using</span> <span class="devsite-syntax-n">Espresso</span>                                                                                                                                                                                
<span class="devsite-syntax-n">val</span> <span class="devsite-syntax-n">specificRow</span> <span class="devsite-syntax-o">=</span> <span class="devsite-syntax-n">onView</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">allOf</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">withId</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">R</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">id</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">row</span><span class="devsite-syntax-p">),</span> <span class="devsite-syntax-n">hasDescendant</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">withText</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s2">"Item #5"</span><span class="devsite-syntax-p">))))</span>                                                                                                                                   
                                                                                                                                                                                                                        
<span class="devsite-syntax-o">//</span> <span class="devsite-syntax-n">Scope</span> <span class="devsite-syntax-n">Compose</span> <span class="devsite-syntax-n">interactions</span> <span class="devsite-syntax-n">to</span> <span class="devsite-syntax-n">that</span> <span class="devsite-syntax-n">row</span>                                                                                                                                                                               
<span class="devsite-syntax-n">composeTestRule</span><span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">onRootWithViewInteraction</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">specificRow</span><span class="devsite-syntax-p">)</span>                                                                                                                                                                  
    <span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">onNodeWithTag</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s2">"fav_icon"</span><span class="devsite-syntax-p">)</span>                                                                                                                                                                                          
    <span class="devsite-syntax-o">.</span><span class="devsite-syntax-n">performClick</span><span class="devsite-syntax-p">()</span>


Compose UI: v1.13.0-alpha01

August 12, 2026

androidx.compose.ui:ui-*:1.13.0-alpha01 is released. Version 1.13.0-alpha01 contains these commits.

API Changes

  • Adds the isVelocityTrackerMinSampleSizeFixEnabled feature flag (Ic9b51, b/533444810, b/533775739, b/523705159)
  • Removed obsolete ExperimentalVelocityTrackerApi annotation class. (I6f9c6, b/483449576)
  • Remove isClearNestedScrollCoroutineScopeFixEnabled flag (Iedfd7, b/506963276)
  • TextFieldState now saves and restores text style information. AnnotatedString.Annotation.Saver is now public to allow saving and restoring of AnnotatedString.Annotation objects. (I8b533, b/135556699)
  • Introduced TestFailurePolicy and TestFailureHandler in ComposeTestConfig to support custom failure event handlers and failure artifact context in Compose UI tests. (Ib1a85, b/414802953, b/291106656, b/430644575)
  • Added SemanticsProperties.alpha to expose the resolved composite parent-child alpha values of layout nodes for testing. (Ifddb6, b/524035059)
  • Deprecated the createComposeRule, createAndroidComposeRule, and createEmptyComposeRule overloads in the ui-test-junit4 v2 package that take individual parameters. Use the overloads accepting ComposeUiTestConfig or the parameterless overloads, which use a default ComposeUiTestConfig. Note that a default ComposeUiTestConfig sets the initial input mode to InputMode.Touch at the start of each test. This might cause existing tests expecting keyboard mode (InputMode.Keyboard) to fail. To fix affected tests, pass ComposeUiTestConfig(inputMode = InputMode.Keyboard) explicitly and remove any manual setup logic for input modes. Alternatively, you can set AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false to temporarily disable setting the default input mode at the start of each test and retain legacy behavior while migrating your tests. This flag will be removed in the future, so if only a small number of tests fail, it is recommended to resolve the tests directly by changing their configuration instead. (Idfb86, b/504195741)
  • No-argument calls to createComposeRule and createAndroidComposeRule (e.g., createComposeRule() or createAndroidComposeRule<MyActivity>()) now use a default ComposeUiTestConfig, which sets the initial input mode to InputMode.Touch at the start of each test, ensuring the device is in a clean state and preventing previous input mode changes from leaking across tests. However, this new default touch mode might cause existing tests expecting keyboard mode (InputMode.Keyboard) to fail. To fix affected tests, pass ComposeUiTestConfig(inputMode = InputMode.Keyboard) explicitly and remove any manual setup logic for input modes. Alternatively, you can set AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false to temporarily disable setting the default input mode at the start of each test and retain legacy behavior while migrating your tests. This flag will be removed in the future, so if only a small number of tests fail, it is recommended to resolve the tests directly by changing their configuration instead. (Idc4dd, b/267253920, b/504195741)
  • Annotated overridable empty base methods across Compose with @EmptySuper to denote that overriding implementations should not invoke super. (Id407b)
  • ExposedDropdownMenu is now an extension function on ExposedDropdownMenuBoxScope instead of a member. You may need to update your code with a new import. (Ie8a65, b/356452026)
  • Added blurBehindRadius, backgroundBlurRadius, scrimAlpha, and windowShape properties to DialogProperties, as well as blurBehindRadius and scrimAlpha to PopupProperties. Developers can now configure background blur, window blur, and scrim opacity directly on Dialogs and Popups. Setting windowShape allows clipping dialog window background blurs to rounded corners. (I5d437)
  • Removed feature flag - Compose buttons now correctly retain accessibility focus and do not flicker when explore by touch is active, as hover events are correctly marked as handled. (Ib1c80)
  • Added merge overloads to FontVariation.Settings for merging other settings collections or overriding settings inline. (I6340c)
  • Exposed variationSettings on the Font interface, defaulting to the new FontVariation.Empty. Optimized the FontVariation.Settings vararg constructor to use asList() to avoid array copy allocations. (I9c22f)
  • Updated NestedScrollDispatcher.coroutineScope property to safely return a cancelled CoroutineScope when unattached or detached. (I9b112, b/535290281)
  • Deprecated the runComposeUiTest, runAndroidComposeUiTest, and AndroidComposeUiTestEnvironment overloads that take individual effectContext, runTestContext, and testTimeout parameters. Use the overloads accepting ComposeUiTestConfig or the parameterless overloads, which use a default ComposeUiTestConfig. Note that a default ComposeUiTestConfig sets the initial input mode to InputMode.Touch at the start of each test. This might cause existing tests expecting keyboard mode (InputMode.Keyboard) to fail. To fix affected tests, pass ComposeUiTestConfig(inputMode = InputMode.Keyboard) explicitly and remove any manual setup logic for input modes. Alternatively, you can set AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false to temporarily disable setting the default input mode at the start of each test and retain legacy behavior while migrating your tests. This flag will be removed in the future, so if only a small number of tests fail, it is recommended to resolve the tests directly by changing their configuration instead. (Ia6d55, b/504195741)
  • Calls to runComposeUiTest, runAndroidComposeUiTest, and AndroidComposeUiTestEnvironment with only a trailing lambda now use a default ComposeUiTestConfig, which sets the initial input mode to InputMode.Touch at the start of each test, ensuring the device is in a clean state and preventing previous input mode changes from leaking across tests. However, this new default touch mode might cause existing tests expecting keyboard mode (InputMode.Keyboard) to fail. To fix affected tests, pass ComposeUiTestConfig(inputMode = InputMode.Keyboard) explicitly and remove any manual setup logic for input modes. Alternatively, you can set AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false to temporarily disable setting the default input mode at the start of each test and retain legacy behavior while migrating your tests. This flag will be removed in the future, so if only a small number of tests fail, it is recommended to resolve the tests directly by changing their configuration instead. (I8c85d, b/504195741)
  • Added @CheckResult to SemanticsNodeInteraction.isDisplayed() and isNotDisplayed() to ensure their return values are asserted, preventing silent test failures when developers mistakenly use them instead of assertion APIs. (I1b447, b/508178494)
  • The flag AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled will cause the ViewGroup that contains AndroidViews to only be instantiated when an AndroidView is added to improve performance of ComposeViews that don't have AndroidViews. When the flag is disabled, the containing ViewGroup is instantiated and attached when the ComposeView is attached to the window. (I306a3, b/524283041)
  • Introduce coroutineScopeOrNull() in NestedScrollDispatcher, an alternative API to access the dispatcher's parent coroutine scope. (I18c0f)
  • Change clearCallbacks to runAndClearCallbacks to make sure that cleanup actions are always executed. (If4720, b/526700075)
  • ComposeTestConfig has been renamed to ComposeUiTestConfig and moved from the v2 package to the parent androidx.compose.ui.test package. (I1d2a1, b/504195741)
  • Added a timeoutMillis parameter (defaulting to 2000 ms) to SemanticsNodeInteraction.captureToImage() to allow configuring a custom timeout when waiting for redraw passes. (Ib7d62, b/249501063)
  • Adds historical information to indirect pointer input changes (Ie62d2, b/526961645)
  • Added a new hintText semantic property to represent hint text in text fields, improving accessibility support by mapping to AccessibilityNodeInfo.hintText. (Ib65da, b/448376876)
  • Optimized CompositionLocal resolution by resolving them dynamically from LocalOwner and LocalAndroidComposeView on-demand, which can be toggled using ComposeUiFlags.isMinimalistLocalsEnabled. (I2bf6d)
  • androidx.benchmark now has a minSdk of 24. (Ic2a85)
  • Added an experimental flag isPropagateHideFromAccessibilityToMergingChildrenEnabled to AndroidComposeUiFlags to control propagation of hideFromAccessibility to merging children. (Ie41ff, b/483506400)
  • Promoted ComposeUiTest and related testing APIs (including ComposeTestRule and waitUntil variants) from Experimental to stable. (Iaec77, b/471148519, b/485124363)
  • Fixed TalkBack navigation order in merged traversal groups. If necessary, this change can be reverted by disabling AndroidComposeUiFlags.isTraversalGroupSortingEnabled. (I5ae09, b/285043826)
  • Removes experimental outdated IndirectPointerEvent helper function. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • Replace experimental @AnimationToolingApi with @RestrictTo API that has stricter tracking guarantees. (Ia4fd1, b/524317805)
  • Added the onDescendants() selector to find all semantics nodes within the subtree of a given node. (Id6b9b, b/444588117)
  • Deprecated waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists, and waitUntilDoesNotExist helper APIs that do not accept useUnmergedTree. Added new overloads that accept useUnmergedTree to support waiting for nodes in the unmerged semantics tree. (If675f, b/268432145)
  • Added a tolerance parameter to SemanticsNodeInteraction size and position assertions (assertWidthIsEqualTo, assertHeightIsEqualTo, assertTouchWidthIsEqualTo, assertTouchHeightIsEqualTo, assertPositionInRootIsEqualTo, assertTopPositionInRootIsEqualTo, assertLeftPositionInRootIsEqualTo) to allow developers to configure the comparison threshold, improving test robustness across different screen densities. (I3a477, b/202752461)
  • Compose testing now supports main-thread synchronization. You can now safely invoke synchronization APIs (such as waitForIdle() and runOnIdle()) and execute Compose assertions or actions directly within UI/main thread callbacks. (I0247a, b/498478569)
  • Introduced a new configuration model (ComposeTestConfig) for Compose test APIs to simplify parameter management and enhance scalability. Added support for configuring input mode (Touch/Keyboard) directly via ComposeTestConfig, ensuring automatic setup and reset to prevent test flakiness due to state leakage. Added new overloads for run*ComposeUiTest and create*ComposeRule that accept the ComposeTestConfig object. (Ia3da9, b/267253920, b/504195741)
  • Fixed a crash in Compose Preview when using PreviewParameterProvider with Media Query properties (Posture, PointerPrecision, etc.) by changing their underlying representation from String to Int. (Ic8f92, b/489939558)
  • Added an includeInputText parameter to hasTextExactly and assertTextEquals to enable exact matching on raw input text alongside visual text. (Iee329, b/519026043)

Bug Fixes

  • Optimized SaveableStateRegistry.performSave() to prevent HashMap allocations. Uses ScatterMap internally. (I7d510)
  • Populated text colors in AccessibilityNodeInfo.ExtraRenderingInfo for Text Composables. (I11c94, b/518049030)
  • Fixed an issue where accessing NestedScrollDispatcher.coroutineScopeOrNull during layout node detachment threw an IllegalStateException instead of returning null. (I55634, b/533444810)
  • Optimized file-level initialization of compose:ui top-level value class properties by using dynamic getters. (I34184)
  • Optimized companion object initialization of ui-unit value classes (TextUnit) by using dynamic getters. (If4a99)
  • Optimized companion object initialization of ui-graphics value classes (BlendMode, Color, etc.) by using dynamic getters. (Iaa86a)
  • Optimized companion object initialization of compose:ui:ui value classes (Key, CompositingStrategy, etc.) by using dynamic getters. (I1a340)
  • Optimized companion object initialization of compose:ui text value classes (TextAlign, TextOverflow, ImeAction, etc.) by using dynamic getters. (I776e0)
  • Optimized companion object initialization of compose:ui tooling and test value classes (AnimatedVisibilityState, MouseButton, ScrollWheel) by using dynamic getters. (I23e1b)
  • Optimized companion object initialization of compose:ui unit value classes (Dp, DpOffset, TextUnitType, etc.) by using dynamic getters. (If5eb5)
  • Optimized companion object initialization of compose:ui geometry value classes (Offset, Size, CornerRadius) by using dynamic getters. (I3b110)
  • Optimized companion object initialization of compose:ui value classes (Role, FocusDirection, PointerEventType, etc.) by using dynamic getters. (Ie35dd)
  • Correctly handle BaselineShift.None and BaselineShift.Unspecified, and BaselineShift(0f) to avoid unnecessary slow layout passes. (I4350c)
  • Fixed an issue where Dp values containing negative zero (-0.0) behaves differently in comparisons or equality checks from floating point comparisons or equality checks. (I7dbcf, b/525506543)
  • Cleans up API information (Ia8066)

External Contribution

  • Alignment.topRatio, Trim.isTrimFirstLineTop() and Trim.isTrimLastLineBottom() are public APIs now (I84f62)

Fragment: v1.9.0

August 12, 2026

androidx.fragment:fragment-*:1.9.0 is released. Version 1.9.0 contains these commits.

Important changes since 1.8.0:

  • Fragment now implements the ContextAware interface and can be used to execute code when the fragment is attached.
  • The AndroidFragment composable now accepts a maxLifecycle paramater that allows you to cap the lifecycle state of the embedded Fragment.
  • Fragment library now supports system tracing of the lifecycle event via Jetpack Tracing.

Glance Wear: v1.0.0-alpha16

August 12, 2026

androidx.glance.wear:wear:1.0.0-alpha16, androidx.glance.wear:wear-core:1.0.0-alpha16, and androidx.glance.wear:wear-tooling-preview:1.0.0-alpha16 are released. Version 1.0.0-alpha16 contains these commits.

New features

  • Added Lint validation for <wearwidget-provider> XML metadata to ensure required configuration elements (such as container and previewImage) are present. (Ia9983, b/464458215)
  • Added Lint error warning for setting black or transparent background to a Wear Widget (Idedb0, b/529269573)
  • Enabled CORE_TEXT Remote Compose operation for Wear Widgets profile. This allows RemoteText to use variable font features, such as font axes, line heights, etc., on supported Host renderers, with automatic fallback when its not supported.

Fixes

  • Updated KDocs for AssociateWithGlanceWearWidget annotation per developers' feedback

Health Connect: v1.0.0-alpha04

August 24, 2022 androidx.health.connect:connect-client:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

Migration to `androidx.health.connect

As of 1.0.0-alpha04, androidx.health:health-connect-client was migrated to androidx.health.connect:connect-client. For previous versions of Health Connect, please visit the androidx.health page.

To migrate, simply change your dependency import from androidx.health:health-connect-client:1.0.0-alpha03 to androidx.health.connect:connect-client:1.0.0-alpha04.

New Features

  • Included optional debug logs builtin for API calls (link)

API Changes

  • Renamed Metadata clientId to clientRecordId, clientVersion to clientRecordVersion. (link)
  • Made Metadata uid more friendly to readers, no longer nullable. (link)
  • Added pounds to Mass unit (link)
  • Renamed DeletionChange.deleteUid to uid (link)
  • Rename Permission -> HealthPermission. This avoids ambiguity with Android Framework permissions. (link)

Bug Fixes

  • Fixed regression issues with incorrect calories unit with Energy (link)
  • Fixed regression issue with aggregation for few record types (link)

Health Connect: v1.2.0-alpha05

August 12, 2026

androidx.health.connect:connect-client:1.2.0-alpha05, androidx.health.connect:connect-client-external-protobuf:1.2.0-alpha05, and androidx.health.connect:connect-client-proto:1.2.0-alpha05 are released. Version 1.2.0-alpha05 contains these commits.

New Features

  • The minimum SDK requirement for this library is now API 24 (minSdk 24). (07cc6ea)

API Changes

  • Added @IntRange and @FloatRange annotations to ExerciseSegment repetitions, setIndex, and rateOfPerceivedExertion properties. (If7a47)

Bug Fixes

  • Secured Health Connect intents on Android versions prior to 14. (03720de)
  • Fixed a signature validation issue in Health Connect. (17957fc)

Ink: v1.1.0-alpha07

August 12, 2026

androidx.ink:ink-*:1.1.0-alpha07 is released. Version 1.1.0-alpha07 contains these commits.

API Changes

  • Fix performance regression affecting dense particle brushes, update Brush.Version constants based on API feedback (I87f0f)

Lifecycle: v2.12.0-alpha01

August 12, 2026

androidx.lifecycle:lifecycle-*:2.12.0-alpha01 is released. Version 2.12.0-alpha01 contains these commits.

Bug Fixes

  • Deprecate lifecycle-compiler annotation processor artifact. Please migrate to DefaultLifecycleObserver or LifecycleEventObserver instead of using the annotation processor. (Ibf571, b/541926513)
  • SavedStateViewModelFactory and AbstractSavedStateViewModelFactory now fail-fast immediately if the provided SavedStateRegistryOwner does not implement ViewModelStoreOwner, preventing delayed crashes during component recreation. (Icf317)
  • Add system tracing to LifecycleRegistry event dispatches. (Ie1f92, b/112161409)

Navigation: v2.10.0-rc01

August 12, 2026

androidx.navigation:navigation-*:2.10.0-rc01 is released. Version 2.10.0-rc01 contains these commits.

Behavior changes

  • The minimum SDK for Navigation has been moved to API 24 along with the rest of the AndroidX libraries. (I972da, b/474169350)

Navigation3: v1.1.6

August 12, 2026

androidx.navigation3:navigation3-*:1.1.6 is released. Version 1.1.6 contains these commits.

Bug Fixes

  • NavEntry.contentKey now defaults to a composite of key.toString() and key::class.toString(). This ensures that data objects that share the same name but implement different interfaces will no longer have the same contentKey. However, JS platform's key::class only returns simple class name instead of fully qualified name, so JS platform should still implement custom contentKey for data objects with duplicate names. (I1fbbb, b/512534342)
  • Fixed IllegalArgumentException thrown by SaveableStateHolder for key reuse when multiple pop transitions are in-flight simulatenously due to rapid popping from the back stack. (I4d728, b/516312097)

Security:

Security:

Wear Remote Compose Material 3:

Webkit: