Now in Android #116
Google IO program lineup, Jetpack Compose 1.8, Play Console insights Android Vitals Metrics, Testing at Scale blog series and AndroidX!
Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development.
In this edition, we’ll cover the Google IO program lineup, what’s new in Jetpack Compose 1.8, the redesigned Play Console app dashboard, new Android Vitals Metrics, the launch of the Testing at Scale blog series, and the latest in AndroidX.
Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won’t be a quiz.)
Articles 📚
Get ready for Google I/O: Program lineup revealed 🗓️
The Google I/O agenda is now available, and you can register to explore sessions on AI, Android, Web, and Cloud, taking place May 20–21. The Google Keynote will be on May 20th at 10:00 AM PT, with the Developer Keynote at 1:30 PM PT. You can join online for livestreams May 20–21, with on-demand sessions and codelabs on May 22. Sessions will cover AI advancements using Gemini models, building apps for multiple devices using Google AI, and new features for web development.
What’s new in the Jetpack Compose April ’25 release 🚀
Jetpack Compose 1.8 is out with new features, API updates, and bug fixes. You can upgrade your Compose BOM version to 2025.04.01 to use the new release.
Here are some of the key updates:
- You can now integrate
Autofill
functionality into your Compose applications. - The new
autoSize
parameter lets the text size adapt to the container size - The
onLayoutRectChanged
modifier solves many use cases that the existingonGloballyPositioned
modifier does; however, it does so with much less overhead. LookaheadScope
is stable and includes numerous performance and stability improvements, and includes a new modifier,animateBounds
Check out the post to learn everything new in Jetpack Compose 1.8.
The Fourth Beta of Android 16 🤖
Android 16 Beta 4 is out, marking the final scheduled update and platform stability. The developer APIs and app-facing behaviors are finalized.
Apps targeting Android 16 can now be made available in Google Play. This release includes the latest fixes and optimizations. Consider testing your apps against behavior changes around JobScheduler
, broadcasts, ART, intents, 16KB page size, accessibility, and Bluetooth.
Note that if you develop an SDK, library, tool, or game engine, it’s even more important to prepare any necessary updates now to prevent your downstream app and game developers from being blocked by compatibility issues and allow them to target the latest SDK features.
While the API and behaviors are final and we are very close to release, we’d still like you to report issues on the feedback page. The earlier we get your feedback, the better chance we’ll be able to address it in this or a future release.
From dashboards to deeper data: Improve app quality and performance with new Play Console insights 📱
The Google Play Console has a redesigned app dashboard that centralizes quality-focused metrics, helping you improve app performance and user experience. The dashboard groups metrics into four core developer objectives:
- test and release
- monitor and improve
- grow users
- monetize with Play
A new notification center helps you stay up to date with your account and apps. New metrics include:
- pre-review checks for incorrect edge-to-edge rendering
- a low memory kill metric
- excessive wake locks in Android vitals
To stay informed about all the latest Play Console enhancements and easily find updates relevant to your workflow, explore our new What’s new in Play Console page, where you can filter features by the four developer objectives.
Boost app performance and battery life: New Android Vitals Metrics are here 🔋
The Android Developers blog announced new Android Vitals metrics aiming to help you improve app performance and battery life. The new metrics provide fleet-wide visibility into performance and battery life, equipping you with the data needed to diagnose and resolve performance bottlenecks. We just launched the first of these new metrics in beta: excessive wake locks. This metric directly addresses one of the most significant frustrations for Android users — excessive battery drain. By optimizing your app’s wake lock behavior, you can significantly enhance battery life and user satisfaction.
We launched the excessive wake lock metric documentation to provide clear guidance on interpreting the metrics. Please check out this page and provide feedback with your use case on this new metric. Your input is invaluable in refining these metrics before their general availability.
Introducing Testing at Scale blog series
Android Developers Blog launches “Testing at Scale” series, featuring real-world testing strategies and tips from large apps. This series complements the new “Testing Strategies” documentation and offers opportunities for developers to contribute their own experiences. Check out the first two parts posted below:
Netflix App Testing At Scale
In part 1 of the “Testing at Scale” series Ken Yee, Senior Engineer at Netflix, tells us about the challenges of testing a playback app at a massive scale and how they have evolved the testing strategy.
Netflix’s Android app development prioritizes comprehensive testing, especially on physical devices due to wide device support. They’ve moved to native and are adopting Jetpack Compose. Their large team uses unit tests (Strikt, Turbine, Mockito, Hilt, Robolectric), screenshot tests (Paparazzi, Espresso accessibility), and device tests (Espresso, UIAutomator). Minimizing flakiness (state, async code) is key. They use a dedicated device lab and are exploring emulators, Roborazzi, and modular “demo apps” to improve testing efficiency. The team has created a custom toolchain to isolate and notify engineers of flaky tests. Feature developers own all aspects of testing.
How Dropbox leverages testing to maintain high level of trust at scale
In part 2 of the “Testing at Scale” series Ryan Harter, Staff Engineer at Dropbox, shares how the shape of Dropbox’s testing pyramid changed over time, and what tools they use to get timely feedback.
Dropbox’s Android app development team utilizes a multi-faceted testing approach, emphasizing unit tests with tools like JUnit and Paparazzi for screenshot testing. They’re reinvesting in end-to-end tests, leveraging their own Dropshots library for full instrumentation testing and are experimenting with Compose Preview Screenshot Testing. They also integrate manual testing with web-based tools and third-party services for scenarios difficult to automate. They are expanding Dropshots to support multiple device configurations.
AndroidX Releases 🚀
Key Highlights for Compose Developers:
We have a bunch of new Compose APIs in alpha:
Compose Animation Version 1.9.0-alpha01
TabRow
andScrollableTabRow
have been deprecated in favor of Primary and Secondary variants of each which are more performant and accurate to spec.- We added
LocalResources
composition local to query Resources. CallingLocalResources.current
will recompose when the configuration changes, so calls to APIs such asstringResource()
will return updated values.
Compose Foundation Version 1.9.0-alpha01
- Breaking change:
clickable
,combinedClickable
,selectable
,toggleable
, andtriStateToggleable
overloads without an Indication parameter now only supportIndicationNodeFactory
instances provided usingLocalIndication
. This change will apply when you recompile your usages of these modifiers using this version of Compose and is needed to enable improved performance, and allow Composable functions using these modifiers to skip during recomposition.
Compose Material Version 1.9.0-alpha01
- Text field decoration box APIs are no longer experimental
runWithTimingDisabled
is deprecated in favor ofrunWithMeasurementDisabled
, which more clearly describes the behavior — all metrics are paused.
Compose Runtime Version 1.9.0-alpha01
currentCompositeKeyHash
is deprecated. UsecurrentCompositeKeyHashCode
instead.@Stable
,@Immutable
, and@StableMarker
have been moved to runtime-annotation (in a compatible way). You can now depend on runtime-annotation if you want to use these annotations from libraries that do not depend on compose.@RememberInComposition
was added — this is an annotation that can mark constructors, functions, and property getters, to indicate that they must not be called directly inside composition, without being remembered.
Compose UI Version 1.9.0-alpha01
androidx.compose.ui.LocalSavedStateRegistryOwner
is deprecated in favor ofandroidx.savedstate.compose.LocalSavedStateRegistryOwner.
Modifier.keepScreenOn
was added to set the display to not sleep while present
CustomView Version 1.2.0
, CustomView-Poolingcontainer Version 1.1.0
, Leanback Leanback-Preference, Version 1.2.0
, Leanback-Grid Version 1.0.0
, Leanback-Paging Leanback-Tab Version 1.1.0
, and Print Version 1.1.0
are all released in stable.
Now then… 👋
That’s it for this edition, with Google IO program lineup, Jetpack Compose 1.8, Play Console insights Android Vitals Metrics, Testing at Scale blog series, and the latest in AndroidX!
Check back soon for your next update from the Android developer universe!