ProAndroidDev - Medium
Android Architecture Is Quietly Moving Beyond ViewModel as a State Holder
Compose didn’t replace ViewModel. Navigation 3 didn’t replace it either. Together, they’re redefining where state belongs. For years, Android developers followed one simple rule:Put your screen state into a ViewModel. It wasn’t just common advice, it became one of the foundations of Android architecture.TextField valuesSelected
ProAndroidDev - Medium
UPI Payment Flow on Android: From URI Construction to Result Verification
UPI has become the default payment mechanism for Android applications in India. Most Android apps integrate UPI using standard intent-based flows, where payments are executed inside external UPI apps and results are returned back to the calling app. This article explains how to build a
ProAndroidDev - Medium
Beyond Semantics: How to Test Internal Compose State with snapshotFlow
snapshotFlow is a bridge that transforms Jetpack Compose state into a cold Kotlin Flow, allowing you to reactively stream state changes into the world of asynchronous coroutines.Summary While snapshotFlow is often tucked away in the 'Side Effects' documentation, it is truly the bridge that connects
Android Studio Release Updates
Android Studio Quail 3 now available
Android Studio Quail 3 is now available in the Stable channel. If you already have an Android Studio build on the Stable channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise,
Android Studio Release Updates
Android Studio Quail 4 Canary 3 now available
Android Studio Quail 4 Canary 3 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on
Android Developers Blog
Delivering safer, age-appropriate experiences on Google Play
Posted by Paul Feng, VP of Product Management, Google Play Providing a safe online experience and protecting users from harm is a top priority at Google Play. We take this responsibility seriously and have been investing continuously to offer baseline protections on our platform while
Android Developers Blog
Celebrating 5 years of Jetpack Compose
Posted by Rebecca Franks, Developer Relations Engineer, Nick Butcher, Product Manager, Loryn Hairston, Product Marketing Manager, Android Today, we officially celebrate five years since the release of Jetpack Compose 1.0. From version 1.0, announced on July 28th, 2021, to our latest 1.11 release, we’ve seen
Android Developers Blog
How R8 made Kotlin Coroutines on Android 2x faster
Posted by Andrei Shikov, Senior Software Engineer, Android Toolkit and Jonathan Starup, Software Engineer, R8 Team Starting from AGP 9.2.0, R8 optimizes most Atomic*FieldUpdater calls into Unsafe variants that perform 2x to 4x better on common operations. This has a particularly large impact on the
ProAndroidDev - Medium
Understanding retain: A New Way to Retain State in Jetpack Compose
Is retain the beginning of the end for ViewModel? Let's find out.No Android dependency -> Just Kotlin.Does this replace ViewModel? Not entirely -> ViewModel still provides several useful capabilities:viewModelScopeSavedStateHandleNavigation integrationHilt supportLifecycle-aware cleanup If your screen relies on those features, ViewModel is still the right choice.retain
ProAndroidDev - Medium
The Complete Guide to Getting Started with Android XR Development
A practical roadmap for Android developers A practical roadmap for Android developers — from your first emulator to spatial UI, 3D content, perception, and intelligent glasses Android development is no longer limited to the rectangular screen in your hand. With Android XR, developers can build
ProAndroidDev - Medium
How Many Trees Does Your Framework Need?
How Many Trees Does Your Framework Need? was originally published in ProAndroidDev on Medium, where people are continuing the conversation by highlighting and responding to this story.
ProAndroidDev - Medium
Dissecting Expanded Dark Theme
with Claude Science and AOSP There’s a lot of excitement around customization, personalization, accessibility, and giving people more control over how interfaces adapt to their needs. I’m interested in what happens underneath, and dark mode hides a surprising amount of engineering. A dark theme is
ProAndroidDev - Medium
Navigation 3: Keep entryProvider from Becoming a Giant Switchboard
One of the first things you’ll probably do when adopting Navigation 3 is register every destination directly inside entryProvider. For small projects, that’s a perfectly reasonable place to start.NavDisplay( backStack = backStack, entryProvider = entryProvider { entry
ProAndroidDev - Medium
From Cloud LLM to On-Device Whisper: Turning Speech into Structured Actions on Android
Final thoughts This was mostly a learning exercise, taking one small feature and building it two ways to feel the trade-offs. The cloud version got me a flexible feature quickly while the on-device version provides privacy, offline support, and determinism, at the cost of some
Android Studio Release Updates
Android Studio Quail 4 Canary 2 now available
Android Studio Quail 4 Canary 2 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on
Android Studio Release Updates
Android Studio Quail 2 Patch 1 now available
Android Studio Quail 2 Patch 1 is now available in the Stable channel. If you already have an Android Studio build on the Stable channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on
Android Developers Blog
Optimize your apps for the next generation of Samsung Galaxy devices
Posted by Fahd Imtiaz, Senior Product Manager and Miguel Montemayor, Developer Relations Engineer, Android Developer Experience Today at Galaxy Unpacked, Samsung unveiled its latest lineup of foldable and wearable devices. For developers, this means that the variety of form factors, screen sizes, and device postures
ProAndroidDev - Medium
One Tap, Three Machines: How Android Views, Flutter, and Compose Actually Render Your UI
One Badge, Three Deliveries: How Android, Flutter, and Compose Keep Your UI in SyncOne Tap, Three Threads: Where Does the Work Actually Run? One Tap, Three Machines: How Android Views, Flutter, and Compose Actually Render Your UI was originally published in ProAndroidDev on Medium, where
Android
Switch to Android easily — and bring your data with you.
A new migration experience built directly into Android 17 that lets you transfer more data wirelessly from an iPhone.
Android
3 Google updates from Galaxy Unpacked 2026
Gentle Monster glasses, Warby Parker glasses, a prompt asking for the history behind a pictured building, and a prompt asking to book a table at a pictured restaurant
Android Developers Blog
Build intelligent Android apps: Cloud and hybrid inference
Posted by Thomas Ezan, Jolanda Verhoef, Caren Chang, Senior Developer Relations Engineers, Android Developer Relations Welcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our
Android Developers Blog
Build intelligent Android apps: Integrate into Android's intelligence system using AppFunctions
Posted by Ben Weiss, Senior Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our previous post, we explored
Android Developers Blog
Build intelligent Android apps: Introduction to Jetpacker
Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations Building GenAI features in your app usually means navigating through various models, APIs and architecture choices: Execution location: Where does your model run? On device, in the cloud, or both? Complexity: How complex is
Android Developers Blog
Build intelligent Android apps: On-device inference
Posted by Caren Chang, Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our previous post we introduced Jetpacker,
Android Studio Release Updates
Android Studio Quail 3 RC 2 now available
Android Studio Quail 3 RC 2 is now available in the Beta channel. If you already have an Android Studio build on the Beta channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on
Android Developers Blog
Upcoming Changes to the Nearby Connections API
Posted by Wei Wang, Engineering Manager, Android BeTo User privacy and transparency are core to the Android experience. To better align with these principles, we are updating the default behavior of the Nearby Connections API regarding how it interacts with device radios. What is changing?
Android
Designing emoji for the way we communicate today
A series of emoji's: pancakes, tennis, sloth, fried egg, squidthumbs up
Android Studio Release Updates
Android Studio Quail 4 Canary 1 now available
Android Studio Quail 4 Canary 1 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on
Android
The DMA should not undercut security & privacy for Europeans
Today's decisions risk undermining vital privacy and security guardrails for millions of Europeans. We have repeatedly offered solutions to safeguard users while satisfy…
Android Studio Release Updates
Android Studio Quail 3 RC 1 now available
Android Studio Quail 3 RC 1 is now available in the Beta channel. If you already have an Android Studio build on the Beta channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on