[Community](https://developer.android.com/blog/categories/community)

# Now in Android #121

9 min read ![](https://developer.android.com/static/blog/assets/Now_In_Android121_f4ff784252_ZG9AcL.webp) 20 Oct 2025 [![View Daniel Galpin's profile](https://developer.android.com/static/blog/assets/dgalpin_30033d2d42_16cSIX.webp)](https://developer.android.com/blog/authors/daniel-galpin) [Daniel Galpin](https://developer.android.com/blog/authors/daniel-galpin) Developer Advocate Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development.

Read on for coverage of [Android 16 QPR2 beta 1](http://android-developers.googleblog.com/2025/08/android-16-qpr2-beta-1-is-here.html), the [Android Studio Narwhal feature drop](http://android-developers.googleblog.com/2025/07/android-studio-narwhal-feature-drop-stable-agent-mode.html), [Jetpack Compose 1.9](http://android-developers.googleblog.com/2025/08/whats-new-in-jetpack-compose-august-25-release.html), [Media 3 1.8](http://android-developers.googleblog.com/2025/08/media3-180-whats-new.html), [Shape Morphing](https://www.youtube.com/watch?v=0moEXBqNDZI) and [Autofill in Compose](https://www.youtube.com/watch?v=Tb6bGiha6xg), and much more.

You can watch a video summary:

[Video](https://www.youtube.com/watch?v=WZioeVSgc24)

And we also have a [podcast](https://nowinandroid.libsyn.com/122-android-studio-narwhal-android-16-qpr2-beta-and-more).

But this post has the most in-depth information, so read on!

## [**Android 16 QPR2 Beta 1 is here ✨**](http://android-developers.googleblog.com/2025/08/android-16-qpr2-beta-1-is-here.html)

The first beta of Android 16 QPR2 is now available, the inaugural Android release with an Android minor SDK version. Minor SDK versions can include new APIs that extend platform features but cannot introduce `targetSdkVersion` gated behavior changes, minimizing the amount you need to test your apps against it.
![sdk-release-graph.webp](https://developer.android.com/static/blog/assets/sdk_release_graph_ca4f9433af_Z10wS04.webp)

You can call new APIs by checking [`SDK_INT_FULL`](https://developer.android.com/reference/android/os/Build.VERSION#SDK_INT_FULL) against the [`VERSION_CODES_FULL`](https://developer.android.com/reference/android/os/Build.VERSION_CODES_FULL) enumeration:

```kotlin
if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}
```

[`VERSION_CODES_FULL`](https://developer.android.com/reference/android/os/Build.VERSION_CODES_FULL) cannot be used in [`uses-sdk`](https://developer.android.com/guide/topics/manifest/uses-sdk-element) manifest attributes.

Here are some key updates from QPR2 Beta 1.

**UI, System Experience, and Accessibility:**

- An expanded dark theme option intelligently inverts light apps for users preferring a dark appearance.
- Auto-themed app icons can be generated by the system if your app doesn't provide a monochrome layer.
- Interactive chooser sessions keep your app UI active while the sharesheet is open, using [`ChooserManager`](https://developer.android.com/reference/android/service/chooser/ChooserManager) and [`ChooserSession`](https://developer.android.com/reference/android/service/chooser/ChooserSession).
- A new Data Transfer API enables more reliable and secure data migration between Android and iOS, requiring updates to your app's data extraction rules XML and [`BackupAgent`](https://developer.android.com/reference/android/app/backup/BackupAgent) implementation.
- The [`android.graphics.pdf`](https://developer.android.com/reference/android/graphics/pdf/package-summary) package has expanded to support annotating and editing PDF documents via [`PdfRenderer.Page`](https://developer.android.com/reference/android/graphics/pdf/PdfRenderer.Page).
- [`ViewConfiguration`](https://developer.android.com/reference/android/view/ViewConfiguration) values are now tailored to individual virtual devices; migrate to [`ViewConfiguration.get(context)`](https://developer.android.com/reference/android/view/ViewConfiguration#get(android.content.Context)) for multi-display scenarios.
- You gain more granular haptic feedback control by specifying [`VibrationAttributes`](https://developer.android.com/reference/android/os/VibrationAttributes) with [`View.performHapticFeedback(HapticFeedbackRequest)`](https://developer.android.com/reference/android/view/View#performHapticFeedback(android.os.vibrator.HapticFeedbackRequest))
- Quick Settings tiles can now be assigned to predefined categories in the `AndroidManifest.xml` file.

**Media and Audio:**

- Software decoding for Immersive Audio Model and Formats (IAMF), an open spatial audio format.
- Personal Audio Sharing for Bluetooth LE Audio devices is integrated directly into the system's Output Switcher.
- Users can control the brightness of HDR using an HDR/SDR brightness slider
- Photo Picker extras can highlight specific albums or search queries.

**Connectivity:**

- Companion Device Management (CDM) enhancements allow you to provide custom device icons, listen for [`EVENT_ASSOCIATION_REMOVED`](https://developer.android.com/reference/android/companion/DevicePresenceEvent#EVENT_ASSOCIATION_REMOVED) callback, and enable cross-app verification using DeviceId.
- Bluetooth updates include passive scanning support for [`BluetoothLeScanner`](https://developer.android.com/reference/android/bluetooth/le/BluetoothLeScanner) ([`ScanSettings.SCAN_TYPE_PASSIVE`](https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_PASSIVE)), bond loss reasons ([`BluetoothDevice.EXTRA_BOND_LOSS_REASON`](https://developer.android.com/reference/android/bluetooth/BluetoothDevice#EXTRA_BOND_LOSS_REASON)), and direct retrieval of service UUIDs ([`BluetoothDevice.EXTRA_UUID_LE`](https://developer.android.com/reference/android/bluetooth/BluetoothDevice#EXTRA_UUID_LE)).
- Wi-Fi RTT Ranging updates ([`RttStationRangingParams`](https://developer.android.com/reference/android/ranging/wifi/rtt/RttStationRangingParams)) support ranging against stations.
- A new [`PhoneNumberManager`](https://developer.android.com/reference/android/telephony/PhoneNumberManager) is available for parsing and validating phone numbers from IMS P-Associated-URI headers.
- MediaRouter Network Privacy improvements allow casting over new mediums like Bluetooth and UWB; you should use the system Output Switcher or request [`NEARBY_DEVICES`](https://developer.android.com/reference/android/Manifest.permission_group#NEARBY_DEVICES) permissions for custom in-app pickers.

**Privacy and Security:**

- A new system-level security state, Secure Lock Device, locks devices and requires primary authentication to unlock.
- A user-facing toggle is added for Phone Theft Protection to enable/disable "Failed Authentication Lock."

**Developer Productivity:**

- New [`AppWidgetManager`](https://developer.android.com/reference/android/appwidget/AppWidgetManager) APIs allow you to query for widget engagement metrics.
- Debuggable apps installed via ADB will now receive early warnings for 16KB page size compatibility.
- [`ProfilingManager`](https://developer.android.com/reference/android/os/ProfilingManager) adds support for new system-initiated profiling triggers and [`requestRunningSystemTrace`](https://developer.android.com/reference/android/os/ProfilingManager#requestRunningSystemTrace(java.lang.String)) to capture background traces.
- A "Verbose print logging" toggle in Developer Options provides additional debug information for the Android Print Framework.
- More robust testing for desktop and multi-display experiences is enabled with new [`UiAutomation`](https://developer.android.com/reference/android/app/UiAutomation) APIs for screenshots on non-default displays and public [`AccessibilityWindowInfo.refresh`](https://developer.android.com/reference/android/view/accessibility/AccessibilityWindowInfo#refresh()).
- API support is added for the new [`androidx.core:core-backported-fixes`](https://developer.android.com/jetpack/androidx/releases/core#core-backported-fixes_version_10_2) library.
- GUI apps are now supported in the Linux Terminal
- [`WindowInspector.addGlobalWindowViewsListener`](https://developer.android.com/reference/android/view/inspector/WindowInspector#addGlobalWindowViewsListener(java.util.concurrent.Executor,%20java.util.function.Consumer%3Cjava.util.List%3Candroid.view.View%3E%3E)) supports real-time root view change notifications.

You can enroll any supported Pixel device to receive Beta updates over-the-air or use 64-bit system images with the Android Emulator in Android Studio. Platform Stability is targeted for October 2025.

## [**Android Studio Narwhal Feature Drop is stable --- start using Agent Mode 🐳**](http://android-developers.googleblog.com/2025/07/android-studio-narwhal-feature-drop-stable-agent-mode.html)

![narwhal.webp](https://developer.android.com/static/blog/assets/narwhal_563c249dd3_2aTkV0.webp)

Android Studio Narwhal Feature Drop is now stable, new features and enhancements include:

- [**Gemini in Android Studio: Agent Mode**](https://developer.android.com/studio/gemini/agent-mode) is available for multi-stage coding tasks
- [**Prompt Library** **Rules**](https://developer.android.com/studio/gemini/prompt-library) customize Gemini's AI output for your project's needs.
- [**Transform UI with Gemini**](https://developer.android.com/studio/gemini/labs#transform-ui) uses natural language UI to iterate on Compose UI.
- **Immersive development support** with the embedded [XR Android Emulator](https://developer.android.com/develop/xr/jetpack-xr-sdk/studio-tools#android-xr), a new XR template, and embedded Layout Inspector for XR
- **Expanded device access** via Android Partner Device Labs in Android Device Streaming.
- **Better** [**Compose previews**](https://developer.android.com/develop/ui/compose/tooling/previews) with Improved code navigation and the New Compose preview picker
- **K2 Kotlin compiler** enabled by default for faster build performance
- [**16kb page size tooling**](https://developer.android.com/guide/practices/page-sizes) with lint warnings, analysis, and an emulator to help you prepare for upcoming 16kb page-size devices.

## [**Android Device Streaming, powered by Firebase**](https://developer.android.com/studio/run/android-device-streaming)

![device-streaming.webp](https://developer.android.com/static/blog/assets/device_streaming_7c15cea8ba_Z1agfdN.webp)

Android Device Streaming, powered by Firebase, has introduced stable support for Android Partner Device Labs, allowing you to remotely connect to physical Android devices hosted by OEM partners, including Samsung, Xiaomi, OPPO, OnePlus, and vivo.

## [**Accelerating development with monthly releases for Android Studio --- releasing 2X more often than before**](https://android-developers.googleblog.com/2025/08/accelerating-development-with-monthly-releases-android-studio-2x-more-than-before.html)

![accelarating-releases.webp](https://developer.android.com/static/blog/assets/accelarating_releases_838f00cb86_AjY6r.webp)

Android Studio is transitioning to a monthly stable release cadence to speed up getting you new features and critical bug fixes. While the Android Studio IDE will update monthly, new IntelliJ platform versions will be introduced every few months, with Feature Drops filling the interim stable releases. The Android Emulator and Android Gradle Plugin will continue to update separately every two months. This accelerated release schedule is supported by long-term investments in testing infrastructure.

## [**What's new in the Jetpack Compose August '25 release 🚀**](http://android-developers.googleblog.com/2025/08/whats-new-in-jetpack-compose-august-25-release.html)

![jetpack-compose.webp](https://developer.android.com/static/blog/assets/jetpack_compose_d464ba7360_Z7QevY.webp)

The Jetpack Compose August '25 release (version 1.9) is now stable. This release introduces [`Modifier.dropShadow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).dropShadow(androidx.compose.ui.graphics.Shape,kotlin.Function1)) and [`Modifier.innerShadow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).innerShadow(androidx.compose.ui.graphics.Shape,kotlin.Function1)) for rendering box-shadow effects. New [`onVisibilityChanged`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)) and [`onFirstVisible`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onFirstVisible(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function0)) modifiers let you track element visibility for UI updates or impression logging. You can apply rich styling within [`OutputTransformation`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/input/OutputTransformation) using [`TextFieldBuffer.addStyle`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/input/TextFieldBuffer#addStyle(androidx.compose.ui.text.ParagraphStyle,kotlin.Int,kotlin.Int)) for text transformations.

The [`LazyLayout`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/layout/package-summary#LazyLayout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchState,kotlin.Function2)) building blocks are now stable, and you can define a [`LazyLayoutCacheWindow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutCacheWindow) for improved Lazy List and Grid performance with enhanced prefetching. [`Scrollable2D`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/package-summary#(androidx.compose.ui.Modifier).scrollable2D(androidx.compose.foundation.gestures.Scrollable2DState,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.gestures.FlingBehavior,androidx.compose.foundation.interaction.MutableInteractionSource)) enables two-dimensional scrolling, including flinging and nested scrolling, with various improvements for scroll and nested scroll interop with Views. An opt-in API ([`Composer.setDiagnosticStackTraceEnabled`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composer#setDiagnosticStackTraceEnabled(kotlin.Boolean))) provides richer crash location details in stack traces, recommended for debug builds only. New [`@RememberInComposition`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/annotation/RememberInComposition) and [`@FrequentlyChangingValue`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/annotation/FrequentlyChangingValue) annotations, along with associated Lint checks, are available in a new runtime-annotation library. Context menus can be customized using [`Modifier.appendTextContextMenuComponents`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/contextmenu/modifier/package-summary#(androidx.compose.ui.Modifier).appendTextContextMenuComponents(kotlin.Function1)) and [`Modifier.filterTextContextMenuComponents`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/contextmenu/modifier/package-summary#(androidx.compose.ui.Modifier).filterTextContextMenuComponents(kotlin.Function1)). Android Gradle Plugin (AGP) / Lint version 8.8.2 or higher is now required.

## [**Media3 1.8.0 --- What's new? 🚀**](http://android-developers.googleblog.com/2025/08/media3-180-whats-new.html)

![media3.webp](https://developer.android.com/static/blog/assets/media3_9fe9c8b32e_qCHxq.webp)

Media3 1.8.0 is now available, introducing several new features and improvements. ExoPlayer gains a scrubbing mode for frequent, user-driven seeks, which you can enable via [`ExoPlayer.setScrubbingModeEnabled`](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setScrubbingModeEnabled(boolean)). [`HlsInterstitialsAdsLoader`](https://developer.android.com/media/media3/exoplayer/hls#interstitials)` `now supports live streams for server-guided ad insertion.

The [`MetadataRetriever`](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/MetadataRetriever) has been updated to allow you to retrieve media item durations without playback. For Transformer, the release introduces faster trim operations using MP4 edit lists with [`experimentalSetMp4EditListTrimEnabled`](https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer.Builder#experimentalSetMp4EditListTrimEnabled(boolean)) and chipset-specific encoder optimizations via [CodecDbLite](https://developer.android.com/reference/androidx/media3/transformer/CodecDbLite), enabled by calling [`setEnableCodecDbLite`](https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setEnableCodecDbLite(boolean)) on [`DefaultEncoderFactory.Builder`](https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder).

Additional updates include partial download support in [`Downloader`](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/offline/Downloader) with [`PreCacheHelper`](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper), automatic XR audio routing in ExoPlayer, and more efficient MediaCodec interactions. The MediaSession module now keeps notifications visible longer by default, and the media session demo app showcases playback resumption functionality. A new Composition demo app, built with Kotlin and Compose, demonstrates advanced multi-asset video editing.

## [**Articles 📚**](https://android-developers.googleblog.com/)

## [**#WeArePlay: Meet the people coding a more sustainable world**](https://android-developers.googleblog.com/2025/08/weareplay-meet-people-coding-sustainable-world.html)

![weareplay.webp](https://developer.android.com/static/blog/assets/weareplay_876ac415c7_ZHOaJd.webp)

The [**#WeArePlay**](https://play.google.com/console/about/weareplay/) initiative highlights [**Android apps and games that address environmental challenges**](https://android-developers.googleblog.com/2025/08/weareplay-meet-people-coding-sustainable-world.html). The game BoRa --- Iguaçu National Park, developed by Mayla, Flávia, Andréia, and Ariane, provides gamified and accessible interactive experiences for nature education during park visits. Louis and Justin's app, CyberTracker, allows non-literate indigenous trackers to record biodiversity data through an icon-based interface, supporting conservation efforts. Lastly, Earth5R, co-founded by Bharati and Saurabh, offers environmental education and connects users with internships and projects to develop skills for the green economy.

## [**What is HDR?**](https://android-developers.googleblog.com/2025/08/what-is-hdr.html)**🌟**

![hdr.webp](https://developer.android.com/static/blog/assets/hdr_e3904dfe4c_Z1LDvNw.webp)

[**High Dynamic Range (HDR)**](https://android-developers.googleblog.com/2025/08/what-is-hdr.html) enables increased peak brightness beyond Standard Dynamic Range (SDR) for Android developers, offering enhanced visual fidelity. Android supports HDR for video and images, including technologies like UltraHDR for backward compatibility.

**Understanding color** involves three components:

- **Bit depth:** Defines the precision of color representation, with higher depth offering smoother transitions.
- **Transfer function:** Maps numerical pixel values to displayed luminance or color, adjusting for non-linear human visual response. Examples include sRGB, HLG, and PQ.
- **Color gamut:** Represents the range of colors a device can reproduce.

**Common misconceptions about HDR:**

- **Vibrant colors:** Wider color gamuts like Display P3 and Adobe RGB were available before HDR, and most displays still clip to P3, even with BT.2020 content.
- **More contrast/better black detail:** HDR does not inherently offer darker blacks than SDR on the same display. OLED displays provide infinite contrast for both. While PQ allocates more bits to dark regions, it is not a universal HDR feature.
- **Higher bit depth:** While some HDR video profiles (e.g., HDR10) use 10- or 12-bit streams, this is specific to those profiles and not inherent to HDR itself; higher bit depths are also common in other imaging formats.

HDR primarily signifies**higher peak brightness**. This "HDR headroom" is defined as a floating region relative to SDR. While traditional HDR video often encodes fixed headroom, modern displays use dynamic headroom, which can lead to quality differences. Technologies such as Ultra HDR and gainmaps offer alternatives with efficient bit usage. Android's UI toolkit utilizes the extendedRangeBrightness API to deliver HDR experiences, even with RGBA_8888.

## **Videos 📹**

## [**Advanced shared elements with shape morphing \| Jetpack Compose Tips**](https://www.youtube.com/watch?v=0moEXBqNDZI)

Jetpack Compose now enables advanced shared element transitions, sophisticated **shape morphing** , and reveal animations. Developers can configure [`SharedTransitionLayout`](https://developer.android.com/reference/kotlin/androidx/compose/animation/package-summary#SharedTransitionLayout(androidx.compose.ui.Modifier,kotlin.Function1)) at the app's top level and use [`Modifier.sharedBounds`](https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope#(androidx.compose.ui.Modifier).sharedBounds(androidx.compose.animation.SharedTransitionScope.SharedContentState,androidx.compose.animation.AnimatedVisibilityScope,androidx.compose.animation.EnterTransition,androidx.compose.animation.ExitTransition,androidx.compose.animation.BoundsTransform,androidx.compose.animation.SharedTransitionScope.ResizeMode,androidx.compose.animation.SharedTransitionScope.PlaceHolderSize,kotlin.Boolean,kotlin.Float,androidx.compose.animation.SharedTransitionScope.OverlayClip)) to link elements.

**Shape morphing** is a key new feature, achieved by leveraging Material 3's AndroidX graphics shape library. This involves creating a Morph object with defined start/end shapes, driving its progress with animateFloat (from [`AnimatedVisibilityScope`](https://developer.android.com/reference/kotlin/androidx/compose/animation/AnimatedVisibilityScope)), and applying it as a clip via a custom [`OverlayClip`](https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope.OverlayClip). Reveal effects use [`skipToLookaheadSize`](https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope#(androidx.compose.ui.Modifier).skipToLookaheadSize()) and [`skipToLookaheadPosition`](https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope#(androidx.compose.ui.Modifier).skipToLookaheadPosition(kotlin.Function0)). All these advanced animations are also compatible with [**predictive back gestures**](https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture).
[Video](https://www.youtube.com/watch?v=0moEXBqNDZI)

## [**Multimodal Gemini in Android Studio: AI-powered UI development**](https://www.youtube.com/watch?v=hAjUByneFEg)

Gemini AI in Android Studio assists UI development by generating code from designs (including image-to-code), creating Compose Previews with synthetic data, and refining existing UI via direct commands.
[Video](https://www.youtube.com/watch?v=hAjUByneFEg)

## [**Consume a Runtime-Enabled SDK**](https://www.youtube.com/watch?v=8ocelXB1Qoc)

Android 14 introduces **SDK Runtime**, a new technology isolating third-party SDKs in a secure, separate process sandbox to enhance privacy and security.

For developers:

- **Runtime-enabled (RE) SDKs** execute in this separate process.
- **Runtime-aware (RA) SDKs** serve as intermediaries within your app.
- Load RE SDKs using [`SdkSandboxManagerCompat`](https://developer.android.com/reference/kotlin/androidx/privacysandbox/sdkruntime/client/SdkSandboxManagerCompat), observing constraints (e.g., foreground, single-load).
- Shim tooling simplifies low-level inter-process communication.
- Render UI from RE SDKs using [`SandboxedSdkView`](https://developer.android.com/reference/kotlin/androidx/privacysandbox/ui/client/view/SandboxedSdkView) and [`SandboxedUiAdapter`](https://developer.android.com/reference/kotlin/androidx/privacysandbox/ui/core/SandboxedUiAdapter).
- Launch activities from the SDK Runtime using [`SdkActivityLauncher`](https://developer.android.com/reference/androidx/privacysandbox/activity/core/SdkActivityLauncher).

[Video](https://www.youtube.com/watch?v=8ocelXB1Qoc)

## [**WearOS Material 3 shape morphing \| Jetpack Compose Tips**](https://www.youtube.com/watch?v=qEEo6AwgBjU)

Wear OS Material 3 for Compose now simplifies shape morphing. Developers can easily add animated shape changes to round buttons with [`IconButtonDefaults.animatedShapes`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes()), create button groups that animate width changes using the [`ButtonGroup`](https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#ButtonGroup(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Float,androidx.compose.foundation.layout.Arrangement.Horizontal,kotlin.Function1)) component and `Modifier.animateWidth()`, and build vertically scrolling lists ([`TransformingLazyColumn`](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/lazy/package-summary#TransformingLazyColumn(androidx.compose.ui.Modifier,androidx.wear.compose.foundation.lazy.TransformingLazyColumnState,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior,androidx.compose.foundation.OverscrollEffect,kotlin.Function1))) where items scale and morph using `TransformationSpec` as they approach the screen edges.
[Video](https://www.youtube.com/watch?v=qEEo6AwgBjU)

## [**AndroidX Releases 🚀**](https://developer.android.com/jetpack/androidx/versions/all-channel)

Here's a summary of the AndroidX changes, prioritizing those most relevant to Android app developers:

**Overall Impacting Change for Compose Libraries:**

- **Default** `minSdk`**Raised to API 23:** For `androidx.compose` `animation`, `foundation`, `material`, `runtime`, and `ui`, the default minimum SDK version has been moved from API 21 to API 23. This means that if you're using the latest alpha versions of these Compose libraries, your app will implicitly require Android 6.0 (Marshmallow) or higher.

**Key Changes for Compose Developers:**

- **New retain API (Compose Runtime):** Introduces a retain API similar to `rememberSaveable`, but for values that leave the composition hierarchy without being serialized. It has a shorter lifespan than saved values and behaves similarly to a `ViewModel`, providing a new way to manage state for composables that might go in and out of composition.
- **Enhanced Shared Element Transitions (Compose Animation \& UI):** New APIs to dynamically enable/disable shared elements, account for ongoing transitions, and set alternative target bounds when a shared element is disposed. A new `Modifier.skipToLookaheadPosition` is also available for anchoring layouts.
- **Improved Pager Prefetching (Compose Foundation):** Pager's prefetch strategy now uses a "Cache Window" (1 viewport size) instead of a single item, and initial prefetching is enabled by default. Items are also kept around longer for smoother scrolling.
- **Refined Focus Handling for Mouse/Touchpad (Compose Foundation \& UI):** `ComposeViews` will now automatically clear focus when a pointer down event (from mouse or touchpad) occurs outside the focused node. This can be opted out of.
- **Customizable Focus Rectangles (Compose Foundation):** `FocusProperties` now allows you to define a custom focus area instead of defaulting to the bounding box, improving focus traversal and "keep in view" logic in scrollable containers.
- **LifecycleOwner Composable (Lifecycle):** A new composable allows creating scoped `LifecycleOwner` instances directly within the UI tree. This is particularly useful for managing component lifecycles independently, and for libraries like Navigation.
- **Support for Nullable Types in** `SavedStateHandle`**(** `Lifecycle`**\&** `SavedState`**):** Simplified saving and restoring of nullable properties with native support in `SavedStateHandle` and `SavedStateRegistryOwner`.
- **New** `LineHeightStyle.Mode.Tight`**(Compose Foundation \& UI):** A new Tight mode helps enforce smaller line heights, even if it means potentially cutting taller glyphs, offering more precise text layout control.
- **Double-tap to Select Word (Compose Foundation):** Added support for double-tap to select words in `SelectionContainer` and `BasicTextField`.
- **WindowInsets Behavior Changes (Compose UI \& Foundation):**   
  ◦ A new `WindowInsets.cutoutPath` API to get the path for the display cutout.  
  ◦ The `isWindowInsetsDefaultPassThroughEnabled` flag has been removed, defaulting `WindowInsets` to *not* consume by default, allowing child Views to receive them.
- `AndroidView``requestRectangleOnScreen`**Fix (Compose Foundation):** Requests made by AndroidViews (e.g., `EditText` trying to stay on screen) now properly propagate to Compose.
- **Improved 2D Mouse Wheel Scrolling (Compose Foundation \& UI):** Better support for 2D mouse wheel scroll events, with new test APIs and a flag to control behavior.

**New Libraries \& Utilities:**

- `androidx.core:core-backported-fixes`**(New Library):** This new library allows developers to check if critical bug fixes (e.g., platform-level issues like specific camera bugs) have been applied to a device. This enables offering different user experiences depending on whether a known bug is resolved or not.

**Other Notable Changes:**

- **Games Activity \& Input:** Added default support for 16KB page sizes and **mouse support** for `GameActivity`.
- **Material3 Tooltip Positioning:** More position providers for tooltips, allowing placement above, below, left, or right of the anchor.
- **Material3** `DatePicker`**Fixes:** Ensures DatePicker respects its own locale for number formatting and fixes RTL display issues.
- **TWA display_override Support (Browser):** Added support for the `display_override` TWA manifest property, providing more control over TWA display.
- **Launch Initial URL in External App (Browser):** Added an Intent to allow launching the initial URL of a TWA in an external browser.

## [**Android Developers Backstage**](http://adbackstage.libsyn.com/)

Android Developers Backstage is back with another episode.

## [**Autofill in Compose**](https://www.youtube.com/watch?v=Tb6bGiha6xg)

Jetpack Compose 1.8 introduces significantly improved Autofill capabilities, leveraging Compose's semantics system. Developers can now easily integrate system-level Autofill by simply tagging text fields with relevant content type semantics (e.g., username, password), eliminating the need for manual Autofill tree management and improving performance.
[Video](https://www.youtube.com/watch?v=Tb6bGiha6xg)

Now then... 👋

That's it for this edition, with[](http://android-developers.googleblog.com/2025/03/the-third-beta-of-android-16.html)coverage of [Android 16 QPR2 beta 1](http://android-developers.googleblog.com/2025/08/android-16-qpr2-beta-1-is-here.html), the [Android Studio Narwhal feature drop](http://android-developers.googleblog.com/2025/07/android-studio-narwhal-feature-drop-stable-agent-mode.html), [Jetpack Compose 1.9](http://android-developers.googleblog.com/2025/08/whats-new-in-jetpack-compose-august-25-release.html), [Media 3 1.8](http://android-developers.googleblog.com/2025/08/media3-180-whats-new.html), [Shape Morphing](https://www.youtube.com/watch?v=0moEXBqNDZI) and [Autofill in Compose](https://www.youtube.com/watch?v=Tb6bGiha6xg), and much more.

Check back soon for your next update from the Android developer universe!
- [#Android](https://developer.android.com/blog/topics/android)
- [#Android Studio](https://developer.android.com/blog/topics/android-studio)
- [#Now In Android](https://developer.android.com/blog/topics/now-in-android)
- [#Compose](https://developer.android.com/blog/topics/compose)
Written by:

-

  ## [Daniel Galpin](https://developer.android.com/blog/authors/daniel-galpin)

  ###### Developer Advocate

  [read_more
  View profile](https://developer.android.com/blog/authors/daniel-galpin) ![View Daniel Galpin's profile](https://developer.android.com/static/blog/assets/dgalpin_30033d2d42_16cSIX.webp) ![View Daniel Galpin's profile](https://developer.android.com/static/blog/assets/dgalpin_30033d2d42_16cSIX.webp)
Continue reading
- [![View Florina Muntenescu's profile](https://developer.android.com/static/blog/assets/unnamed_27_1d76df3c3b_2gwEzo.webp)](https://developer.android.com/blog/authors/florina-muntenescu) 02 Nov 2026 02 Nov 2026 ![](https://developer.android.com/static/blog/assets/ABL_155_Strapi_1_f48145e2db_Z2jyq4w.webp) [Community](https://developer.android.com/blog/categories/community)

  ## [Developing for Today: 50+ New Developer Sessions on Building Apps Today](https://developer.android.com/blog/posts/building-apps-developer-sessions)

  [arrow_forward](https://developer.android.com/blog/posts/building-apps-developer-sessions) Over 900 attendees joined our event spaces for a keynote about our outlook on the future, demo sessions, dozens of workshops, a hackathon, and for community discussions focused on ideas and feedback on Android platform.
  [Florina Muntenescu](https://developer.android.com/blog/authors/florina-muntenescu) • 1 min read
  - [#Android](https://developer.android.com/blog/topics/android)
- [![View Matthew Forsythe's profile](https://developer.android.com/static/blog/assets/matthew_9c798f0c1d_1FlQLe.webp)](https://developer.android.com/blog/authors/matthew-forsythe) 30 Sep 2025 30 Sep 2025 ![](https://developer.android.com/static/blog/assets/lets_Talk_Security_3e0a595955_ZQycm0.webp) [Community](https://developer.android.com/blog/categories/community)

  ## [Let's talk security: Answering your top questions about Android developer verification](https://developer.android.com/blog/posts/lets-talk-security-answering-your-top)

  [arrow_forward](https://developer.android.com/blog/posts/lets-talk-security-answering-your-top) Android recently announced developer verification, an extra layer of security that deters bad actors and makes it harder for them to spread harm.
  [Matthew Forsythe](https://developer.android.com/blog/authors/matthew-forsythe) • 2 min read
  - [#Android](https://developer.android.com/blog/topics/android)
  - [#identity](https://developer.android.com/blog/topics/identity)
- [![View Jose Alcérreca's profile](https://developer.android.com/static/blog/assets/jose_21a476d0ec_Z19ypoX.webp)](https://developer.android.com/blog/authors/jose-alcerreca) 06 Aug 2026 06 Aug 2026 ![](https://developer.android.com/static/blog/assets/Inside_Android_Skills_Built_for_deprecation_Strapi_V01_8f34b79673_Z25NBy7.webp) [Community](https://developer.android.com/blog/categories/community)

  ## [Inside Android Skills - Built for deprecation](https://developer.android.com/blog/posts/inside-android-skills-built-for-deprecation)

  [arrow_forward](https://developer.android.com/blog/posts/inside-android-skills-built-for-deprecation) We released the official Android Skills in April. This blog post covers the feedback we received and explains the philosophy and methodology behind the project.
  [Jose Alcérreca](https://developer.android.com/blog/authors/jose-alcerreca) • 4 min read
  - [#AI-assisted coding](https://developer.android.com/blog/topics/ai-assisted-coding)
  - [#Android Skills](https://developer.android.com/blog/topics/android-skills)
Stay in the loop


Get the latest Android development insights delivered to your inbox
weekly.
[mail
Subscribe](https://developer.android.com/subscribe) ![A 3D illustration of the Android mascot, wearing a jetpack that's emitting a large cloud of bubbles](https://developer.android.com/static/blog/assets/rocket-android.CVJQZOf1_1zVtXW.webp)