Jetpack Compose's August '26 release is now stable at version 1.12, requiring an update to Compose BOM 2026.08.00 and AGP 9.2.0+ with compileSdk API 37. Key additions include Mesh Gradients and Wide Color Gamut (P3/HDR) rendering support, named areas in the experimental Grid layout, native Credential Manager integration for text fields via a new semantics property, rich-text formatting APIs for BasicTextField, programmatic text selection control, and DeferredTransition APIs for gesture-driven animations. Modifier.onFirstVisible() is deprecated in favor of Modifier.onVisibilityChanged(). SideEffect now supports key arguments for faster one-shot effects, and new test APIs (hasPendingWork, runWithoutImplicitWait) reduce flakiness in animation testing. Startup performance has also improved, with Time to Initial Display now comparable to Views.
Table of contents
Breaking ChangesMesh GradientsWide Color Gamut & HDR SupportKeyed SideEffect OverloadInteractive Two-Stage TransitionsEditable Text FormattingText SelectionCredential Manager IntegrationNamed Areas in Grid LayoutTest SynchronizationQuestions this post answers
What's new in Jetpack Compose 1.12?
Jetpack Compose 1.12, shipped in the August '26 stable release, adds Mesh Gradients and Wide Color Gamut (P3) and HDR rendering support, named areas in the experimental Grid layout, native Credential Manager integration for text fields, rich-text formatting APIs in BasicTextField, programmatic text selection via SelectionState, and DeferredTransition APIs for gesture-driven animations like predictive back. Track new Compose releases like this one as they ship on daily.dev.
How do I migrate off Modifier.onFirstVisible() in Jetpack Compose?
Modifier.onFirstVisible() is deprecated in Compose 1.12; migrate to Modifier.onVisibilityChanged(), which provides more precise visibility threshold tracking for detecting when composables become visible on screen. The replacement is the recommended path going forward for view-visibility detection in Compose layouts. Developers cleaning up deprecated Compose APIs can follow migration changes like this on daily.dev.
How much faster is SideEffect compared to LaunchedEffect in Jetpack Compose?
SideEffect is up to 90% faster than LaunchedEffect and about 20% faster than DisposableEffect when you don't need a coroutine or dispose block. In Compose 1.12, SideEffect gained support for key arguments, letting it fire one-shot effects whenever specific keys change, though it runs before DisposableEffect and LaunchedEffect so migrating existing effects needs care. Compare Compose effect APIs and their trade-offs as they evolve, tracked on daily.dev.