🛰️ Compose Radar Report - Jul 19, 2026
🛰️ Compose Radar Report - Jul 19, 2026
This is the last Compose Radar issue. Compose Radar started as an experiment, but it did not receive enough attention to keep going. Your email has been removed from the list and you will not receive any additional Compose Radar emails.
Here is what Google released this week for Compose:
Material 3 Compose
Added
- Added a new
material3-rippleartifact for ripple focus rings that use inset focus instead of an opacity layer.material3now uses it internally, and apps that previously usedmaterial-rippledirectly can adopt the new artifact when they need the Material 3 focus treatment.
Changed
- Re-added
@ExperimentalMaterial3ApitoAppBarWithSearch. - Changed scrollbar APIs so the
ScrollIndicatorStateparameter is non-nullable, making scroll indicator state handling explicit.
Fixed
- Fixed
RichTooltipandPlainTooltipcaret rendering so the caret no longer appears late during entrance animations. - Fixed
TimePickermargins and colon spacing in the expressive time picker. - Clamped tooltip placement to window boundaries so tooltips are less likely to be cut off on small screens or with large font settings.
Compose Remote Creation
Added
- Added
rememberRemoteImageBitmap(url)and exposedrememberMutableRemoteImageBitmapfor remote images that are not backed by a named bitmap. - Exposed
RemoteStateScope.remotePathandRemotePathScopeso remote paths can be built through the DSL from state.
Fixed
- Removed the restricted
LIBRARY_GROUPoverload ofrememberRemoteDocumentfrom the public artifact.
Wear Material 3 Compose
Changed
- Moved
ButtonContent,AppCardContent, andTitleCardContentintoButtonDefaultsandCardDefaults, so callers now access those content helpers through defaults objects. - Renamed
gestureLabeltoonGestureLabelinModifier.oneHandedGesture, made it nullable, and removed the default value. - Replaced the one-handed gesture
InteractionSourceflow withOneHandedGestureIndicatorStatefor coordinating indicator visibility and animation.
Fixed
- Temporarily removed default one-handed gesture support from
AlertDialogto avoid pulling Wear SDK gesture dependencies into apps that otherwise do not use them. - Fixed
TimePickeranimation behavior when Reduce Motion is enabled.
Wear Foundation
Fixed
- Enhanced
TransformingLazyColumnplacement animations so items moving out of the viewport slide away instead of fading abruptly, and fixed scaling snaps during those animations. - Switched
firstVisibleItemLayoutItemInfoto index-based item info, improving viewport anchoring during reorder and shuffle updates.
XR Compose
Added
- Added
SubspaceModifier.spatializedAudioOutputfor spatializing ExoPlayer and sound-effect playback from the composable it is attached to. - Added a
movePolicyoverload formovablewithMovePolicy, and started deprecating the oldermovableandtransformingMovableAPIs. - Added
ResizePolicyto the resizable modifier so apps can choose whether the system applies resize gestures automatically or reports resize events for custom state handling.
Changed
- Removed the
ComponentOverrideAPIs from the XR Compose surface. - Marked
GltfAnimationandSpatialGltfModelAnimationAPIs experimental, with some animation properties exposed as getters. - Changed XR density behavior so meter-to-pixel conversion is constant, deprecating
Meter.ktin favor ofSession.scene.virtualPixelDensity.
Navigation 3
Fixed
- Fixed
UriDeepLinkMatchermatching for URI patterns without a scheme or leading//, so patterns likewww.example.com/homenow matchhttp://www.example.com/home. - Clarified
UriDeepLinkMatcherfragment wildcard docs: wildcard fragments match any input, but the input is not extracted as an argument.
That's all for this week.
Was this issue useful? Forward this email to a friend.
Don't miss what's next. Subscribe to Compose Radar by Composables: