Skip to content

2026-07-15

Choose a tag to compare

@github-actions github-actions released this 15 Jul 19:45
· 6 commits to main since this release

Annotation: v1.11.0-alpha01

July 15, 2026

androidx.annotation:annotation-*:1.11.0-alpha01 is released. Version 1.11.0-alpha01 contains these commits.

API Changes

Bug Fixes

  • Add allowshrinking to @DoNotInline so that annotated methods can be removed if the function isn't reachable. (Id2c8c)

AndroidX releases Stay organized with collections Save and categorize content based on your preferences.:

Compose Material3: v1.5.0-alpha24

July 15, 2026

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

Features

  • Add new scroll variant for expressive TimePicker (I46f6b)
  • Added a new 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:
    • If you are using material3 itself, use the built-in material3 ripple configuration that integrates with the theme and uses material3-ripple internally as an implementation detail.
    • If you were using material-ripple directly or want to support inset focus rings without depending on material3, use the new material3-ripple library directly.

API Changes

  • Changed scrollbar ScrollIndicatorState parameter to be non-nullable. (Iab7c7, b/529445739)
  • Re-add @ExperimentalMaterial3Api annotation to AppBarWithSearch APIs. (I0b61a)
  • Promoted SearchBarState and slot-based SearchBar APIs to stable. Deprecated older SearchBar APIs using expanded/onExpandedChange. (Ia3793)

Bug Fixes

  • Fixed a rendering delay issue where the RichTooltip and PlainTooltip carets would appear late during the entrance animation. (I874b6, b/395753083)
  • Update margin values for Input/Scroll variant of TimePicker. (I83f00)
  • SplitButton measure trailing button first to guarantee space. (Id3a1e)
  • Fixed an accessibility issue where Switch Access users could not activate editable text fields inside ExposedDropdownMenuBox. (I0ea17)
  • Fixed talkback announcement order in TextField and OutlinedTextField when a prefix or suffix is present. (Ie79e7)
  • Update TimePicker margins and colon placement (I6bfeb)
  • Fix focus order in Talkback for ScrollField. (I4ca9f, b/526870141)
  • Updated Compose dependencies in Material 3 to 1.12.0-beta01. (Ie9417)
  • Tooltips are now clamped to the window boundaries to prevent them from being cut off on small screens or under large font configurations. (I421ff)
  • Update ScrollField with more expressive number transitions and adjust sizing/typography (Ic1614)

remote compose: v1.0.0-alpha15

July 15, 2026

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

API Changes

  • Added rememberRemoteImageBitmap(url) and exposed rememberMutableRemoteImageBitmap publicly to support non-named remote bitmaps. (I7b960)
  • Exposed RemoteStateScope.remotePath and RemotePathScope APIs for building paths via DSL. (I9e2fe, b/513228889)

Bug Fixes

Glance Wear: v1.0.0-alpha14

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

  • We have added RoundAllWidgetPreviewParams, RoundSmallWidgetPreviewParams, and RoundLargeWidgetPreviewParams preview parameter providers for fully rounded Glance Wear widgets. (If5336, b/512405233)

New features

  • We have set up and added Linter library for Glance Wear widgets.(If4218, b/527402079)
    • Added a lint check to ensure that subclasses of GlanceWearWidgetService explicitly declare their associated widget class using the @AssociateWithGlanceWearWidget annotation. (Idc575, b/477024153)
  • We have improved backwards compatiblity for widgets running on older Hosts by propagating supported operations via WearWidgetParams and adding filtering the profile of allowed operations to those. (Ib0a1b, I83cb1, [b/526716195])

Ink: v1.1.0-alpha05

July 15, 2026

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

API Changes

  • Experimental release of new eraser type, known as "partial stroke", "mesh editing", or "pixel" eraser, that edits stroke geometry and splits strokes rather than deleting entire strokes or masking them with the background color. Known issues include a lack of anti-aliasing on the cut edges, and no serialization APIs to save the erased PartitionedMesh results, which will both come in future releases.
  • Add missing Throws annotation to StrokeInputBatchSerialization.decode, requiring update from Java consumers of that method. (I83473, b/522256938)

Bug Fixes

  • Fix native crash from numerical precision issue (I2e1f0, 6618e69, b/523190724)
  • Discard degenerate extrusions in BrushTipExtruder (469b629)
  • Fix RejectedExecutionException in InProgressStrokesView (b/526696762)

Loader: v1.2.0-rc01

July 15, 2026

androidx.loader:loader:1.2.0-rc01 is released. Version 1.2.0-rc01 contains these commits.

Navigation3: v1.2.0-alpha06

July 15, 2026

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

Bug Fixes

  • Fixed 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)
  • Fixed 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)

navigationevent: v1.2.0-alpha02

July 15, 2026

androidx.navigationevent:navigationevent-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.

API Changes

  • Add hasEnabledHandlers property to NavigationEventInput to allow developers to query the current handler state directly without relying on callbacks. (I8ecec)

Bug Fixes

Tracing: v2.0.0-beta01

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

  • Tracing 2.0-beta01 release. (I1b162)
  • Use platform specific thread identifiers when generating track information. (I6ba64)

Version 2.0.0-alpha09

June 23, 2026

androidx.tracing:tracing-*:2.0.0-alpha09 is released. Version 2.0.0-alpha09 contains these commits.

API Changes

  • Minor API change in Tracer to diambiguate between instant(...) and writeInstant(...). (I0935a)
  • Add support for propagation tokens in instant events. (I99f81)
  • Allow full usage of Perfetto flows in the experimental manual context propagation API. (I20cb6)
  • Defer creation of the BufferedSink and ProtoWriter in TraceSink. (Ibd098)
  • Make Tracer discovery simple and pluggable for both Java and Android Libraries. (I99111)
  • Make it easy for library developers to discover an instance of TraceDriver that can be used for in-process tracing. (Ia503e)

Version 2.0.0-alpha08

May 19, 2026

androidx.tracing:tracing-*:2.0.0-alpha08 is released. Version 2.0.0-alpha08 contains these commits.

API Changes

  • Add the ability to discover and override instances of TraceDriver to be used process wide. (I3f715)
  • Rename Tracer.recordException to Tracer.recordExceptionAndThrow. (I4411f, b/503092450)

Version 2.0.0-alpha07

May 06, 2026

androidx.tracing:tracing-*:2.0.0-alpha07 is released. Version 2.0.0-alpha07 contains these commits.

API Changes

  • Add a API to obtain a stub tracer that can be used when tracing is disabled. (I84c98)
  • Make tracing lifecycle consistent with system tracing. (Ib391b)
  • Counter APIs are now entirely allocation free. (I5e73a)

Bug Fixes

  • Fixed a keep rule for the Perfetto SDK (tracing-perfetto) which ensures that the Perfetto SDK can be enabled. (I1d227)
  • Add the ability to trace flush() events. (I38014, b/495852704)

Version 2.0.0-alpha06

April 22, 2026

androidx.tracing:tracing-*:2.0.0-alpha06 is released. Version 2.0.0-alpha06 contains these commits.

API Changes

  • Unrestrict 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)
  • Add a setCounter(...) overload that takes a Java Long type. (Ic0469, b/356082604)
  • Tracing 2.0 now uses Long for platform specific Thread identifiers. (I67277)

Bug Fixes

Version 2.0.0-alpha05

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)
  • Simplify and make coroutine context propagation faster. (Ia62db)
  • Introduce the optional attributes() when constructing a TraceDriver that provides a way to add metadata pertaining to a trace. (Ia147e)

Bug Fixes

  • Process threads and counter tracks are now synchronized. This fixes exceptions of the form: java.lang.NullPointerException: Cannot invoke "androidx.tracing.ThreadTrack.flush$tracing()" because "threadTrack" is null
  • Avoid emitting sink events when tracing is disabled.

Version 2.0.0-alpha04

March 25, 2026

androidx.tracing:tracing-*:2.0.0-alpha04 is released. Version 2.0.0-alpha04 contains these commits.

API Changes

  • Make AbstractTraceDriver really abstract, and move the Perfetto implementation into the tracing-wire module. (Ie2f59)
  • Give more descriptive names to base implementations to avoid using the wrong one. For developers previously extending androidx.tracing.Trace{Sink|Driver} they will now need to switch to using AbstractTrace{Sink|Driver}. (I9b46d)

Version 2.0.0-alpha03

March 11, 2026

androidx.tracing:tracing-*:2.0.0-alpha03 is released. Version 2.0.0-alpha03 contains these commits.

API Changes

  • Added an experimental InMemoryRingBufferTraceSink implementation which allows setting a capacity restriction and avoids writing to disk unless explicitly asking for it. (I1dc44, b/484409653, I65a37, b/484409653)
  • Fix race condition when emitting trace events for coroutine suspends and resumes. (Ie145e)

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)

Version 2.0.0-alpha02

February 25, 2026

androidx.tracing:tracing-*:2.0.0-alpha02 is released. Version 2.0.0-alpha02 contains these commits.

New Features

  • Improved performance for the Perfetto Trace Sink implementation by using the suspendCoroutineUninterceptedOrReturn intrinsic (2ea97b).

Version 2.0.0-alpha01

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

  • Make Tracer a property of the TraceDriver. (Iabd9b)
  • Add support for manual context propagation. (I899ff)
  • Add the ability to add call stack information in a trace section. (If6a1b)
  • Introduce the new androidx.tracing APIs. (I5102b)
  • Allow instant events to contain metadata, and add counters to instants & counters. (Ia2ed3)
  • Reduce the surface area of the API annotated with @DelicateTracingApi. Nothing in the top level API should require the use of @DelicateTracingApi. (I565e0)
  • Simplify context propagation by unifying PropagationTokens. (Iab839)
  • Stabilize BlackHole APIs in androidx.benchmark. (I2b67e, b/451749438)
  • Add the ability to annotate the trace section as a root span. (Ic8365)
  • Allow the developer to explicit about propagation tokens. (I06bb1)
  • Renamed 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)
  • Introduced a new Tracer entry point which gives developers a lot more control on how to trace. (I24a7b)
  • Add the ability to control how context propagation happens in a SliceTrack. (Ieb8fc)
  • fillCount in PooledTracePacketArray is now correctly marked volatile. (I75d2c)
  • Mark MetadataEntry @DelicateTracingApi. (I8c723)
  • Add the ability for a TraceSink to be able to handle lost trace events (when the pool is exhausted). (I3b374)
  • Add the ability to conditionally emit trace events based on a predicate. (I621b4)
  • Add the ability to add categories to a trace event. (I449c2)
  • Mark TraceEvent, PooledTracePacketArray as DelicateTracingApi. (Iaac6d)
  • Make ProcessTrack.id, ThreadTrack.id, ThreadTrack.name, CounterTrack.name and CounterTrack.parent public. (I81210)
  • Renamed the SliceTrack.traceFlow() API to traceCoroutine(). (I79ad0)
  • Add the ability to add contextual information to slices via debug annotations in a Perfetto trace. (Ic2b56)
  • Make it possible to construct an instance of WireTraceSink with a File / OutputStream. (Iecea0)
  • Removing obsolete @RequiresApi(21) annotations (Ic4792)

Wear:

Wear Compose: v1.7.0-alpha06

July 15, 2026

androidx.wear.compose:compose-*:1.7.0-alpha06 is released. Version 1.7.0-alpha06 contains these commits.

API Changes

  • Move ButtonContent, AppCardContent and TitleCardContent composables for Material3 into ButtonDefaults and CardDefaults objects respectively. (I8d589, b/527889640)
  • Remove default value from Modifier.oneHandedGesture gestureLabel parameter (Ica100, b/527068051)
  • Rename gestureLabel to onGestureLabel in Modifier.oneHandedGesture and make it nullable, for consistency with other contentDescription parameters (I952a8, b/527068051)
  • Introduce 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

  • Clarify interactionSource documentation for Modifier.oneHandedGesture to state which interactions are emitted (I2dc8d)
  • Support for one-handed gestures in 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)
  • Enhanced 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)
  • Use index-based ItemInfo in firstVisibleItemLayoutItemInfo. (I256e3, b/527881678)
  • Fixed TimePicker animation behavior when Reduce Motion is enabled. (Ic9150, b/467288916)

Webkit:

WorkManager: v2.12.0-alpha01

July 15, 2026

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

API Changes

  • Added WorkMetricsQuery API to filter metric info (I132b4, b/522338412)
  • Implement workerDurationMillis and totalRuntimeMillis in WorkMetricsInfo to track worker execution duration and total cumulative runtime. (I57f65, b/507212208)
  • Added retentionDuration (Duration, API 26+) and retentionTime/retentionTimeUnit (API 23+) constructors to WorkMetricsInfoRepository to allow pruning old metrics, defaulting to 7 days. (Ifdf2e, b/522338412)
  • Add flow API for finished WorkMetricsInfo (I11ec2, b/507212999)
  • Add missing experimental annotation to work-analytics classes (I1a055, b/528112001)
  • androidx.benchmark now has a minSdk of 24. (Ic2a85)
  • Implement stopReasonCounts, explicitRetryCount, and runAttemptCount in WorkMetricsInfo. (I95498, b/507212225)
  • Implement WorkMetricsInfo APIs and database schema to track work execution history, including enqueue, unblock, first start and finish timestamps. (I163e9, b/479123623, b/507212482)
  • Add experimental API to disable in-process opportunistic scheduling (I1062d, b/513299442)
  • Add experimental API to listen to WorkManager scheduling events (I14487, b/448485695)
  • Add worker class name to WorkInfo (I57da1, b/448485695)
  • Add more granular annotation to experimental event listener API (Icaa8e, b/448485695)
  • Add a new API that allows retrieving nullable string arrays from instances of Data class (I78bc3, b/383071402)
  • Create work-analytics artifact (Idc7c2, b/465357612)
  • Add experimental API to set a listener for worker execution events (I06b38, b/448485695)

Bug Fixes

  • Use Dispatchers.Default instead of custom thread pool for the default WM configuration (Ic2c42, b/506239869)
  • Improve and add tests to manage bad workers (I500f3, b/506239869)
  • Fixed a ConcurrentModificationException in WorkManager's execution listener dispatch. (I4cc18, b/506239869)
  • Fixed process crashes in WorkManager when registering network constraint callbacks due to missing ACCESS_NETWORK_STATE permissions. (I7045a, b/446013734)
  • Improve log detail when DEBUG logs are enabled (Id9e5f, b/491209738)
  • Fix bug with retried work failing to schedule with the OS (I452fc, b/504085166, b/517339607)
  • Fixed Configuration.Provider reference doc link (Ieedb7, b/340913210)
  • Made event hooks not blocking for operations (I27cd8, b/448485695)
  • WorkManager now retries initialization on generic SQLiteException. (I98436, b/485368721)
  • Fixed an issue where developers could receive a nonexistent stop reason code of 0 by mapping it to WorkInfo.STOP_REASON_UNKNOWN. (I0b175, b/479314734)
  • Fix additional issues with network calls failing from background even when network constraint are met (Ic7f73, b/445324855)
  • Handle security exception in NetworkStateTracker. (I4b7ca, b/480123154)
  • Ensure execution hooks get an accurate WorkInfo snapshot (I25ebb, b/448485695)
  • Fixed an issue where background network requests could fail on Android 15. (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
  • Fixed an issue where periodic WorkRequests that fail due to an uncaught exception would not be rescheduled. (Ia6b92, b/443879071)

ARCore for Jetpack XR: v1.0.0-beta01

July 15, 2026

androidx.xr.arcore:arcore-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

API Changes

  • Updated resizable modifier to use a ResizePolicy instead of two modifiers (I7fb0f, b/496257436, b/519672992)
  • Added movable overload with movePolicy param and deprecate transformingMovable and movable (Ic88c1, b/481781189)
  • Removed 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)
  • Converted Session.create to a suspend function. (I5d27f)
  • Deprecated the ProjectedPermissionsResultContract (I141d5, b/515699436)
  • Updated AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)

Jetpack Compose for XR: v1.0.0-alpha16

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

  • Remove ComponentOverride APIs (I820c4)
  • GltfAnimation and SpatialGltfModelAnimation APIs have been marked as experimental. Some properties were turned into getters. (I8d689, b/524771027)
  • Fixed overall density behavior by establishing the conversion between Meter and pixels to be constant. Deprecated Meter.kt, Session.scene.virtualPixelDensity can now be used as an alternative. (I122ff, b/430097855, b/474168798)
  • Update resizable modifier to use a ResizePolicy instead of two modifiers (I7fb0f, b/496257436, b/519672992)
  • Added a tolerance: 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)
  • Added movable overload with movePolicy param and deprecate transformingMovable and movable (Ic88c1, b/481781189)
  • Added new non-interactive variants of standard list item and segmented list item which follow Material Expressive specifications. The non-expressive version has been deprecated. (Ide4de, b/491994186)
  • For Subspace, the 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)
  • Converted Session.create to a suspend function. (I5d27f)
  • Added SubspaceModifier.spatializedAudioOutput which allows spatializing audio playback through ExoPlayer or through a SoundEffectPlayer (I46697, b/489421980, b/497867019)
  • Updated ComponentActivity.requestHomeSpace() and requestFullSpace() to return SpaceRequestResult for status verification. (If1672)
  • Updated AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)
  • Unrestricted 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)
  • Updated SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo, SubspaceSemanticsModifierNode to use curated spatial semantics types. (I80dea, b/460427288)
  • Renamed position to align in SpatialAlignment and removed individual directional offset methods in favor of a unified align API. (I9bdb2, b/479805937)
  • Removed Deprecated Space Mode APIs from SpatialConfiguration. (I1ef5c, b/458712461)
  • Introduced 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)
  • Introduced SubspaceSemanticsPropertyReceiver: a dedicated wrapper that limits 3D layout container properties to valid fields (initially testTag and contentDescription). (I5cf5c, b/460427288)

Bug Fixes

  • Updated the Semantic modifier's hasContentDescription to default to substring matching. (I08214)
  • Added restricted 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)

  • Clarified documentation for ComponentActivity.requestHomeSpace and ComponentActivity.requestFullSpace regarding suspend behavior, cancellation, and concurrency. Updated tests to verify CancellationException propagation. (I22f75, b/493289528)

XR Projected: v1.0.0-alpha10

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

  • Deprecated the ProjectedPermissionsResultContract. Use ProjectedActivityCompat.requestPermissions() instead. (I141d5, b/515699436)
  • Added the requestPermissions() API to the ProjectedActivityCompat (I2edb5, b/433523713, b/508189550)

XR Runtime: v1.0.0-beta01

July 15, 2026

androidx.xr.runtime:runtime-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

API Changes

  • Added SessionTestRule to runtime-testing. This API (I672bc, b/516876144)
  • Converted Session.create to a suspend function. (I5d27f)
  • Added support for the lifecycle to the XrDeviceTestRule (I2319c, b/512140272)
  • Removed unused ExperimentalXrDeviceLifecycleApi experimental opt-in annotation. (I46d95)
  • Add specialized overrides of 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

  • Fixed Pose.fromLookAt forward direction alignment, corrected scale extraction in Matrix3, and prevented numerical NaNs in normalization, axis-angle conversion, and angleBetween calculations. (I7a3b5, b/367780918)

Version 1.0.0-alpha15

June 17, 2026

androidx.xr.runtime:runtime-*:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.

API Changes

  • Added test API for isProjectedServiceAvailable() (I44ba1)
  • Exposed DeviceTrackingMode.INERTIAL as a public experimental API under the new @ExperimentalInertialTrackingApi annotation. (Ic3df3)
  • Added 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)
  • Added isProjectedServiceAvailable() to the XrDevice (I507e9)
  • Renaming 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)
  • Added QrCode API (Ia0bbe)

Jetpack SceneCore: v1.0.0-beta01

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)
  • Removed the public MovableComponent.createTrackingMovable factory method. (I00912, b/477169015)
  • Converted Session.create to a suspend function. (I5d27f)
  • 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)
  • Updated AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)
  • Provides public test API SoundEffectPoolComponentTester. (I87df7, b/498104417)
  • Added an optional 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)
  • Provides public test API SpatialAudioTrackBuilderTester, SpatialAudioTrackTester and SceneCoreTestRule.getTester overloads. (I378c6, b/496333938)
  • Add specialized overrides of 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.