Google's Android team quietly shipped some of the most significant Jetpack Compose updates since its launch. Compose 1.10 and 1.11 introduce layout primitives that feel surprisingly familiar to web developers — Styles, Grid, FlexBox, and MediaQuery are here, and they change how Android UIs are built.
Compose Is Now the Standard
Nick Butcher from Google's Android team made it clear in the latest Android Developers video: Jetpack Compose is no longer the "new way" to build UIs. It is the way.
Google is pushing a "Compose First" approach, with new tools to convert legacy XML layouts into Compose code directly in Android Studio. The message to teams still on XML Views is unambiguous — the migration window is closing.
The Big Three: Styles, Grid, MediaQuery
Three experimental APIs in Compose 1.11 fundamentally expand what's possible in declarative UI.
Styles API
The Styles API lets developers declare style variations against component state in a single block. Previously, styling a button's pressed, disabled, and focused states required stacking modifier chains and managing InteractionSource objects with remember blocks.
Now, pressed-state gradients, padding variations, and sizing changes become style properties — declared once, applied consistently.
This is conceptually close to CSS pseudo-classes (:hover, :active), and that comparison isn't accidental. Google is borrowing proven patterns from the web.
Grid — A 2D Layout System
Compose finally has a proper 2D grid layout built on tracks, gaps, and cells. Items can span multiple rows or columns, reflow dynamically, and be sized using Dp, percentages, intrinsic constraints, or flexible Fr units.
The mental model is closer to CSS Grid than the existing LazyVerticalGrid. Best suited for static dashboards and rich content layouts where precise 2D placement matters.
MediaQuery — Declarative Environment Queries
MediaQuery replaces the boilerplate of manually tracking window layout sizes and reacting to foldable postures. Instead of observing WindowInfoTracker and writing conditional logic, developers describe what they want:
"If tabletop posture, show split layout."
The system handles the rest. This is CSS @media queries for Android — and it's long overdue.
FlexBox
FlexBox adds wrapping behavior, multi-axis alignment, and grow/shrink controls. Paired with Grid, Compose now covers the full spectrum of responsive layout strategies that web developers have used for years.
Performance Improvements
Beyond new APIs, Compose 1.11 ships under-the-hood performance work:
-
Trackpad input now reports as
PointerType.Mouseinstead of touch events, aligning Chromebook and tablet behavior -
Shared element debugging via
LookaheadAnimationVisualDebugging— overlays target bounds and animation trajectories - Composition host defaults — clipboard, focus manager, and soft input services flow through the Compose runtime instead of Android-specific locals, simplifying Kotlin Multiplatform shared modules
-
@PreviewWrapperannotation — define theme injection and fakeCompositionLocalsetups once, apply across all previews
TikTok's Case Study: 58% Less Code
The most compelling argument for Compose adoption comes from TikTok.
TikTok's Android team adopted Compose to address technical debt and improve development velocity. Their results, published on the Android Developers Blog in March 2026:
- 58% reduction in code size for migrated features
- Faster page loading times, starting with QR code screens
- Simplified view hierarchies reducing performance bottlenecks
- Improved testability across the board
Key lessons from TikTok's migration:
- Migrate entire ViewHolders to Compose, not partial ones — partial migrations created more complexity than they solved
- Start small — QR codes first, then expand to larger features
- Centralize the design system in a shared Compose library before scaling adoption
- Optimize ComposeView usage carefully — wrapping legacy views in Compose has performance costs
TikTok plans to steadily increase Compose adoption as its preferred framework across the app.
Testing v2: The Breaking Change Nobody's Talking About
The most disruptive change in Compose 1.11 isn't a new component — it's the testing framework.
Testing v2 is now the default. The dispatcher moved from UnconfinedTestDispatcher (immediate execution) to StandardTestDispatcher (queued execution). This means recompositions now queue rather than executing immediately in tests.
Developers must explicitly advance recompositions with advanceUntilIdle() or runOnIdle. This eliminates a class of flakiness where tests would "read ahead" of recompositions — but it also breaks any test that implicitly relied on the old immediate flush.
If you maintain a large UI test suite, expect migration work. Google has published a testing migration guide to help.
Adaptive Layouts and TV Support
Compose 1.11 expands beyond phones:
- Adaptive layout APIs respond to different screen sizes, foldable postures, and device types automatically
- Google TV pointer remote support — Compose now handles D-pad and pointer interactions for Android TV, replacing the aging Leanback framework with a declarative focus model
This means one codebase can target phones, tablets, foldables, and TVs with shared composables — a first for Android.
What's Next
Compose 1.12 will require compileSdk 37 and AGP 9. Teams should plan toolchain bumps now to avoid being caught off guard.
The broader trend is clear: Google is systematically porting proven web layout concepts to Android. Styles, Grid, MediaQuery, FlexBox — these aren't coincidental names. They're an acknowledgment that the web solved layout problems decades ago, and Android is catching up fast.
For teams still on XML Views, the case for migration keeps getting stronger. TikTok proved it works at scale. The tools to convert legacy code are here. And every release makes the gap between Compose and XML wider.
Sources:
- Android Developers, "What's new in Jetpack Compose" (YouTube, June 2026)
- Android Developers Blog, "TikTok reduces code size by 58% with Jetpack Compose" (March 2026)
- Dove Letter Release Notes, "Jetpack Compose — April 2026 Updates" by Jaewoong Eum (doveletter.dev)
- Kotlin Multiplatform Docs, "What's new in Compose Multiplatform 1.11.1" (kotlinlang.org)
- Google Compose First documentation: goo.gle/compose-first
Top comments (0)