July 15, 2026
androidx.annotation:annotation-*:1.11.0-alpha01 is released. Version 1.11.0-alpha01 contains these commits.
API Changes
@DoNotInline to be applied to fields. (I99120, b/521434897)Bug Fixes
allowshrinking to @DoNotInline so that annotated methods can be removed if the function isn't reachable. (Id2c8c)July 15, 2026
androidx.compose.material3:material3-*:1.5.0-alpha24 is released. Version 1.5.0-alpha24 contains these commits.
Features
TimePicker (I46f6b)material3-ripple library (I1b3a3), which adds support for drawing ripples that visually display focus using inset focus rings instead of an opacity layer. This new library acts as a replacement for material-ripple, and expected usage is similar:
material3 itself, use the built-in material3 ripple configuration that integrates with the theme and uses material3-ripple internally as an implementation detail.material-ripple directly or want to support inset focus rings without depending on material3, use the new material3-ripple library directly.API Changes
ScrollIndicatorState parameter to be non-nullable. (Iab7c7, b/529445739)@ExperimentalMaterial3Api annotation to AppBarWithSearch APIs. (I0b61a)SearchBarState and slot-based SearchBar APIs to stable. Deprecated older SearchBar APIs using expanded/onExpandedChange. (Ia3793)Bug Fixes
RichTooltip and PlainTooltip carets would appear late during the entrance animation. (I874b6, b/395753083)TimePicker. (I83f00)SplitButton measure trailing button first to guarantee space. (Id3a1e)ExposedDropdownMenuBox. (I0ea17)TextField and OutlinedTextField when a prefix or suffix is present. (Ie79e7)TimePicker margins and colon placement (I6bfeb)ScrollField. (I4ca9f, b/526870141)ScrollField with more expressive number transitions and adjust sizing/typography (Ic1614)July 15, 2026
androidx.compose.remote:remote-*:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.
API Changes
rememberRemoteImageBitmap(url) and exposed rememberMutableRemoteImageBitmap publicly to support non-named remote bitmaps. (I7b960)RemoteStateScope.remotePath and RemotePathScope APIs for building paths via DSL. (I9e2fe, b/513228889)Bug Fixes
rememberRemoteDocument. (Ifd9b4, b/532022244, b/532022244)July 15, 2026
androidx.glance.wear:wear:1.0.0-alpha14, androidx.glance.wear:wear-core:1.0.0-alpha14, and androidx.glance.wear:wear-tooling-preview:1.0.0-alpha14 are released. Version 1.0.0-alpha14 contains these commits.
API Changes
RoundAllWidgetPreviewParams, RoundSmallWidgetPreviewParams, and RoundLargeWidgetPreviewParams preview parameter providers for fully rounded Glance Wear widgets. (If5336, b/512405233)New features
GlanceWearWidgetService explicitly declare their associated widget class using the @AssociateWithGlanceWearWidget annotation. (Idc575, b/477024153)WearWidgetParams and adding filtering the profile of allowed operations to those. (Ib0a1b, I83cb1, [b/526716195])July 15, 2026
androidx.ink:ink-*:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.
API Changes
PartitionedMesh results, which will both come in future releases.StrokeInputBatchSerialization.decode, requiring update from Java consumers of that method. (I83473, b/522256938)Bug Fixes
BrushTipExtruder (469b629)RejectedExecutionException in InProgressStrokesView (b/526696762)July 15, 2026
androidx.loader:loader:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.
July 15, 2026
androidx.navigation3:navigation3-*:1.2.0-alpha06 is released. Version 1.2.0-alpha06 contains these commits.
Bug Fixes
UriDeepLinkMatcher documentation on uri fragments to clarify that fragments with wildcards will match any input but the input does not get extracted as arguments. (I5ad9b, b/524677091)UriDeepLinkMatcher failing to match with a request if the uri pattern does not contain a scheme or does not start with double slash. For example, www.example.com/home will now match with http://www.example.com/home. (Ia6b65, b/522791926)July 15, 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.
API Changes
hasEnabledHandlers property to NavigationEventInput to allow developers to query the current handler state directly without relying on callbacks. (I8ecec)Bug Fixes
NavigationEventDispatcher. (I015f8, b/531988076)July 15, 2026
androidx.tracing:tracing-*:2.0.0-beta01 is released. Version 2.0.0-beta01 contains these commits.
API Changes
PerfettoCapture and PerfettoTraceRule can now capture in-process traces and merge them for a target package. (I9a00b, b/497959820)androidx.benchmark now has a minSdk of 24. (Ic2a85)Bug Fixes
June 23, 2026
androidx.tracing:tracing-*:2.0.0-alpha09 is released. Version 2.0.0-alpha09 contains these commits.
API Changes
Tracer to diambiguate between instant(...) and writeInstant(...). (I0935a)BufferedSink and ProtoWriter in TraceSink. (Ibd098)Tracer discovery simple and pluggable for both Java and Android Libraries. (I99111)TraceDriver that can be used for in-process tracing. (Ia503e)May 19, 2026
androidx.tracing:tracing-*:2.0.0-alpha08 is released. Version 2.0.0-alpha08 contains these commits.
API Changes
TraceDriver to be used process wide. (I3f715)Tracer.recordException to Tracer.recordExceptionAndThrow. (I4411f, b/503092450)May 06, 2026
androidx.tracing:tracing-*:2.0.0-alpha07 is released. Version 2.0.0-alpha07 contains these commits.
API Changes
Bug Fixes
tracing-perfetto) which ensures that the Perfetto SDK can be enabled. (I1d227)flush() events. (I38014, b/495852704)April 22, 2026
androidx.tracing:tracing-*:2.0.0-alpha06 is released. Version 2.0.0-alpha06 contains these commits.
API Changes
File.createPerfettoFile() so others can safely create sinks. When a block() throws an exception in trace / traceCoroutine create an instant event for the exception with the metadata representing the corresponding stack trace elements. (I682e5, b/501536851, b/437166283)setCounter(...) overload that takes a Java Long type. (Ic0469, b/356082604)Long for platform specific Thread identifiers. (I67277)Bug Fixes
AttributeEntry.reset(). (I5d3a1, b/496079439)April 08, 2026
androidx.tracing:tracing-*:2.0.0-alpha05 is released. Version 2.0.0-alpha05 contains these commits.
API Changes
TraceSink factory functions now return TraceSink and not AbstractTraceSink. Files now have a unique suffix. We make sure that we can atomically create a new file that will be used to store trace packets. (I4c4aa, b/496298726)attributes() when constructing a TraceDriver that provides a way to add metadata pertaining to a trace. (Ia147e)Bug Fixes
java.lang.NullPointerException: Cannot invoke "androidx.tracing.ThreadTrack.flush$tracing()" because "threadTrack" is nullMarch 25, 2026
androidx.tracing:tracing-*:2.0.0-alpha04 is released. Version 2.0.0-alpha04 contains these commits.
API Changes
AbstractTraceDriver really abstract, and move the Perfetto implementation into the tracing-wire module. (Ie2f59)androidx.tracing.Trace{Sink|Driver} they will now need to switch to using AbstractTrace{Sink|Driver}. (I9b46d)March 11, 2026
androidx.tracing:tracing-*:2.0.0-alpha03 is released. Version 2.0.0-alpha03 contains these commits.
API Changes
InMemoryRingBufferTraceSink implementation which allows setting a capacity restriction and avoids writing to disk unless explicitly asking for it. (I1dc44, b/484409653, I65a37, b/484409653)Bug Fixes
androidx.tracing no longer attempts to draw connections from parent to child coroutines in traces by default. This has been confusing, since the underlying trace format doesn't support 1:N and N:1 connections, resulting in a nest of arrows due to ambiguity about which coroutine slice connects to what. You can still manually opt-in to propagation with the tokenForManualPropagation() API when it's important for your use case. (Ib2cf9)February 25, 2026
androidx.tracing:tracing-*:2.0.0-alpha02 is released. Version 2.0.0-alpha02 contains these commits.
New Features
suspendCoroutineUninterceptedOrReturn intrinsic (2ea97b).January 28, 2026
androidx.tracing:tracing-*:2.0.0-alpha01 is released. Version 2.0.0-alpha01 contains these commits.
New Features
AndroidX Tracing 2.0 introduces a significant new API surface for low-overhead, in-process tracing, as a complement to the existing android.os.Tracing-based APIs in Tracing 1.0. The new APIs are available both on Android and host JVM, which enables host tools to emit low overhead traces for performance analysis, using the same standard Perfetto trace format.
Emitted traces are supported both by Android Studio and Perfetto, and can be recorded with an expanded feature set including tagging slices with metadata (such as function arguments!), and coroutine context trace propagation.
This initial alpha is only meant for in-process tracing workflows, and does not yet integrate with Android OS tracing or Studio Profiler System Tracing - these will be coming in a future alpha.
/**
* A [TraceSink] defines how traces are serialized.
*
* [androidx.tracing.wire.TraceSink] uses the `Perfetto` trace packet format.
*/
fun createSink(): TraceSink {
val outputDirectory = File(/* pathname = */ "/tmp/perfetto")
// We are using the factory function defined in androidx.tracing.wire
return TraceSink(
sequenceId = 1,
directory = outputDirectory
)
}
/**
* Creates a new instance of [androidx.tracing.TraceDriver].
*/
fun createTraceDriver(): TraceDriver {
// We are using a factory function from androidx.tracing.wire here.
// `isEnabled` controls whether tracing is enabled for the application.
val driver = TraceDriver(sink = createSink(), isEnabled = true)
return driver
}
fun main() {
val driver = createTraceDriver()
driver.use {
driver.tracer.trace(category = CATEGORY_MAIN, name = "basic") {
Thread.sleep(100L)
}
}
}
API Changes
Tracer a property of the TraceDriver. (Iabd9b)androidx.tracing APIs. (I5102b)@DelicateTracingApi. Nothing in the top level API should require the use of @DelicateTracingApi. (I565e0)PropagationTokens. (Iab839)BlackHole APIs in androidx.benchmark. (I2b67e, b/451749438)MetadataHandleCloseable to EventMetadataCloseable, and MetadataHandle to EventMetadata. Also added an optional CoroutinePropagationToken argument to Tracer.traceCoroutine to allow the developer to explicitly specify the propagation token to use. (I219f7, b/454147392)Tracer entry point which gives developers a lot more control on how to trace. (I24a7b)SliceTrack. (Ieb8fc)fillCount in PooledTracePacketArray is now correctly marked volatile. (I75d2c)MetadataEntry @DelicateTracingApi. (I8c723)TraceSink to be able to handle lost trace events (when the pool is exhausted). (I3b374)TraceEvent, PooledTracePacketArray as DelicateTracingApi. (Iaac6d)ProcessTrack.id, ThreadTrack.id, ThreadTrack.name, CounterTrack.name and CounterTrack.parent public. (I81210)SliceTrack.traceFlow() API to traceCoroutine(). (I79ad0)WireTraceSink with a File / OutputStream. (Iecea0)@RequiresApi(21) annotations (Ic4792)July 15, 2026
androidx.wear.compose:compose-*:1.7.0-alpha06 is released. Version 1.7.0-alpha06 contains these commits.
API Changes
ButtonContent, AppCardContent and TitleCardContent composables for Material3 into ButtonDefaults and CardDefaults objects respectively. (I8d589, b/527889640)Modifier.oneHandedGesture gestureLabel parameter (Ica100, b/527068051)gestureLabel to onGestureLabel in Modifier.oneHandedGesture and make it nullable, for consistency with other contentDescription parameters (I952a8, b/527068051)OneHandedGestureIndicatorState to coordinate visibility and animation between Modifier.oneHandedGesture() and gesture indicators. Replace InteractionSource with this state-driven approach for improved lifecycle control. Add wrapAround parameter to OneHandedGestureDefaults.scrollToNextPage for consistency with other default gesture scroll functions. (I9e1e3, b/522761843)Bug Fixes
interactionSource documentation for Modifier.oneHandedGesture to state which interactions are emitted (I2dc8d)AlertDialog by default has been removed temporarily, due to issues with the dependency on the Wear SDK in consumers that are otherwise not using the Wear SDK or one-handed gestures. (Ib19e0, b/503841738)TransformingLazyColumn to support placement animations for items moving out of the viewport, allowing them to slide off-screen instead of fading out. Also fixed a visual snapping issue where dynamically scaled items would instantly snap to their target height during placement animations (I89d84, b/525071281)ItemInfo in firstVisibleItemLayoutItemInfo. (I256e3, b/527881678)TimePicker animation behavior when Reduce Motion is enabled. (Ic9150, b/467288916)July 15, 2026
androidx.work:work-*:2.12.0-alpha01 is released. Version 2.12.0-alpha01 contains these commits.
API Changes
WorkMetricsQuery API to filter metric info (I132b4, b/522338412)workerDurationMillis and totalRuntimeMillis in WorkMetricsInfo to track worker execution duration and total cumulative runtime. (I57f65, b/507212208)retentionDuration (Duration, API 26+) and retentionTime/retentionTimeUnit (API 23+) constructors to WorkMetricsInfoRepository to allow pruning old metrics, defaulting to 7 days. (Ifdf2e, b/522338412)WorkMetricsInfo (I11ec2, b/507212999)work-analytics classes (I1a055, b/528112001)androidx.benchmark now has a minSdk of 24. (Ic2a85)stopReasonCounts, explicitRetryCount, and runAttemptCount in WorkMetricsInfo. (I95498, b/507212225)WorkMetricsInfo APIs and database schema to track work execution history, including enqueue, unblock, first start and finish timestamps. (I163e9, b/479123623, b/507212482)WorkManager scheduling events (I14487, b/448485695)WorkInfo (I57da1, b/448485695)Data class (I78bc3, b/383071402)work-analytics artifact (Idc7c2, b/465357612)Bug Fixes
Dispatchers.Default instead of custom thread pool for the default WM configuration (Ic2c42, b/506239869)ConcurrentModificationException in WorkManager's execution listener dispatch. (I4cc18, b/506239869)WorkManager when registering network constraint callbacks due to missing ACCESS_NETWORK_STATE permissions. (I7045a, b/446013734)Configuration.Provider reference doc link (Ieedb7, b/340913210)WorkManager now retries initialization on generic SQLiteException. (I98436, b/485368721)WorkInfo.STOP_REASON_UNKNOWN. (I0b175, b/479314734)NetworkStateTracker. (I4b7ca, b/480123154)WorkInfo snapshot (I25ebb, b/448485695)WorkRequests that fail due to an uncaught exception would not be rescheduled. (Ia6b92, b/443879071)July 15, 2026
androidx.xr.arcore:arcore-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
API Changes
ResizePolicy instead of two modifiers (I7fb0f, b/496257436, b/519672992)movePolicy param and deprecate transformingMovable and movable (Ic88c1, b/481781189)TrackingState.TRACKING_DEGRADED from public API surface and map runtime degraded states to PAUSED instead. Update TrackingState to use enums instead of int values for string conversion and runtime conversion. (I3eb5b, b/524326338)ProjectedPermissionsResultContract (I141d5, b/515699436)AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)July 15, 2026
androidx.xr.compose:compose:1.0.0-alpha16 and androidx.xr.compose:compose-testing:1.0.0-alpha16 are released. Version 1.0.0-alpha16 contains these commits.
API Changes
ComponentOverride APIs (I820c4)GltfAnimation and SpatialGltfModelAnimation APIs have been marked as experimental. Some properties were turned into getters. (I8d689, b/524771027)Session.scene.virtualPixelDensity can now be used as an alternative. (I122ff, b/430097855, b/474168798)ResizePolicy instead of two modifiers (I7fb0f, b/496257436, b/519672992)Dp = Dp(0.5f) parameter to all public floating-point dimension and position equality assertions in SubspaceAssertions.kt. The default tolerance behavior (0.5.dp) is fully documented. (I266cb, b/521491915)movePolicy param and deprecate transformingMovable and movable (Ic88c1, b/481781189)allowUnboundedSubspace parameter is now deprecated and hidden. Unbounded behavior should now be achieved by using SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) on the Subspace modifier. The allowUnboundedSubspace parameter has been removed from FollowingSubspace. (Ia72ae, b/433624021)Session.create to a suspend function. (I5d27f)SubspaceModifier.spatializedAudioOutput which allows spatializing audio playback through ExoPlayer or through a SoundEffectPlayer (I46697, b/489421980, b/497867019)ComponentActivity.requestHomeSpace() and requestFullSpace() to return SpaceRequestResult for status verification. (If1672)AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)fromResource method from SpatialGltfModelSource (I1f5a1, b/503047416)SubspaceSemanticsMatcher members are public: the description property, companion factory methods (expectValue, keyIsDefined, keyNotDefined), member functions (matches, matchesAny), and operators (and, or, not). (I972a4, b/460427288)SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo, SubspaceSemanticsModifierNode to use curated spatial semantics types. (I80dea, b/460427288)position to align in SpatialAlignment and removed individual directional offset methods in favor of a unified align API. (I9bdb2, b/479805937)SpatialConfiguration. (I1ef5c, b/458712461)SubspaceSemanticsConfiguration. This is a configuration of semantics properties for a Spatial node. This class safely exposes query methods for 3D semantics without leaking foundational 2D semantic capabilities to external consumers. (Id025e, b/460427288)SubspaceSemanticsPropertyReceiver: a dedicated wrapper that limits 3D layout container properties to valid fields (initially testTag and contentDescription). (I5cf5c, b/460427288)Bug Fixes
hasContentDescription to default to substring matching. (I08214)FollowBehavior.ExponentialDecay() which provides a soft follow behavior guided by elastic physics. (I7449c, b/485639909, b/500493335)Most APIs will be affected by this. Specifically, the LocalSession CompositionLocal and all CompositionLocals that are dependent on LocalSession (e.g. LocalSpatialConfiguration, LocalSpatialCapabilities, etc.) will now resolve to null or its non-XR versions before the Session is initialized.
Once the Session is available, recomposition will be triggered with the correct state. (I0cfa4, b/514712835, b/514712835)
ComponentActivity.requestHomeSpace and ComponentActivity.requestFullSpace regarding suspend behavior, cancellation, and concurrency. Updated tests to verify CancellationException propagation. (I22f75, b/493289528)July 15, 2026
androidx.xr.projected:projected:1.0.0-alpha10, androidx.xr.projected:projected-binding:1.0.0-alpha10, and androidx.xr.projected:projected-testing:1.0.0-alpha10 are released. Version 1.0.0-alpha10 contains these commits.
API Changes
ProjectedPermissionsResultContract. Use ProjectedActivityCompat.requestPermissions() instead. (I141d5, b/515699436)requestPermissions() API to the ProjectedActivityCompat (I2edb5, b/433523713, b/508189550)July 15, 2026
androidx.xr.runtime:runtime-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
API Changes
SessionTestRule to runtime-testing. This API (I672bc, b/516876144)XrDeviceTestRule (I2319c, b/512140272)ExperimentalXrDeviceLifecycleApi experimental opt-in annotation. (I46d95)toString() for a number of runtime types. These types are intended to provide additional information to developers for debugging purposes and are not intended to be used in production or shipped applications.Bug Fixes
fromLookAt forward direction alignment, corrected scale extraction in Matrix3, and prevented numerical NaNs in normalization, axis-angle conversion, and angleBetween calculations. (I7a3b5, b/367780918)June 17, 2026
androidx.xr.runtime:runtime-*:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.
API Changes
isProjectedServiceAvailable() (I44ba1)DeviceTrackingMode.INERTIAL as a public experimental API under the new @ExperimentalInertialTrackingApi annotation. (Ic3df3)Config.Builder. Apps can create custom configurations by calling setter functions on the builder object and then calling Builder.build. (I13142)androidx.xr.runtime.FieldOfView has been removed. Apps should use androidx.xr.runtime.math.FieldOfView instead. (I621ef)Session.create is now required to be ran on a @WorkerThread. (I2169e)isProjectedServiceAvailable() to the XrDevice (I507e9)DeviceTrackingMode.SPATIAL_LAST_KNOWN to DeviceTrackingMode.SPATIAL and DeviceTrackingMode.INERTIAL_LAST_KNOWN to DeviceTrackingMode.INERTIAL (I96f8b)Vector3.angleBetween and Vector4.angleBetween now return degrees rather than radians. (Ica8bc)QrCode API (Ia0bbe)July 15, 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
API Changes
GltfAnimation and SpatialGltfModelAnimation APIs have been marked as experimental. Some properties were turned into getters. (I8d689, b/524771027)MovableComponent.createTrackingMovable factory method. (I00912, b/477169015)ActivitySpace and AnchorSpace now extend a common SpaceEntity class which contains common behavior for entities whose positions are controlled by the system (I506ec, b/513619219)AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)SoundEffectPoolComponentTester. (I87df7, b/498104417)cornerRadius parameter to the SurfaceEntity.Shape.Quad constructor and made the cornerRadius property public. Developers can now specify a corner radius when creating a Quad shape to render SurfaceEntity canvases with rounded corners, and query the radius of existing Quads. (Ia7809, b/474681085)SpatialAudioTrackBuilderTester, SpatialAudioTrackTester and SceneCoreTestRule.getTester overloads. (I378c6, b/496333938)toString() for a number of ARCore types. These types are intended to provide additional information to developers for debugging purposes and are not intended to be used in production or shipped applications.