{"id":3609,"date":"2026-09-23T10:12:48","date_gmt":"2026-09-23T10:12:48","guid":{"rendered":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/"},"modified":"2026-09-23T10:12:48","modified_gmt":"2026-09-23T10:12:48","slug":"whats-new-in-the-jetpack-compose-august-26-release","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/","title":{"rendered":"What&#8217;s new in the Jetpack Compose August &#8217;26 release"},"content":{"rendered":"<div id=\"dev95-2959810816\" class=\"dev95-- dev95-entity-placement\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div><meta content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgvR5TrjJE4Z1NMYxATN7zx3pmkOMm1lDAhV3u8h7RKVvQJzUsf2XJEwK7dY1b_d8eEEBvAV6wYIqtgKrh4xnkBv6EHGKr524At__nz0qbmlPNC402UFGtH1OrwlWtlxNB0XPRWdQd4FUwlaeOkOaDw-lCn47U_snuzIC-wZIaKkTceBrGcfCM8k2ifMsM\/s1024\/Social - Android - Jetpack Compose January \u201924.png\" style=\"clear: right; float: right; margin-bottom: 1em; margin-left: 1em;\"><br \/>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgvR5TrjJE4Z1NMYxATN7zx3pmkOMm1lDAhV3u8h7RKVvQJzUsf2XJEwK7dY1b_d8eEEBvAV6wYIqtgKrh4xnkBv6EHGKr524At__nz0qbmlPNC402UFGtH1OrwlWtlxNB0XPRWdQd4FUwlaeOkOaDw-lCn47U_snuzIC-wZIaKkTceBrGcfCM8k2ifMsM\/s1024\/Social%20-%20Android%20-%20Jetpack%20Compose%20January%20%E2%80%9924.png?w=1280&#038;ssl=1\" style=\"display: none;\"><\/p>\n<div><i>Posted by Nick Butcher, Product Manager, Jetpack Compose<\/i><\/div>\n<div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi6uEKoqS22NIh_MtD-vsVMr_jVbeHVDM9HVaw08aF5TzACF9eiqOpEsjGP-8KgLogXLbv0Q9bfdQCYIoSXWFVoXqmOyR8j17cwY9uxsue7gA01WCwU2iCJSKQcUTB4x5wNvMpzf9Moff0kWh5ACzK_B2Qi70IKl-rAnZkl6H1Kgj05nfiHCXtG3WoHXzY\/s1600\/Header%20-%20Android%20-%20Jetpack%20Compose%20January%20%E2%80%9924.png?ssl=1\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" decoding=\"async\" border=\"0\" data-original-height=\"476\" data-original-width=\"1600\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi6uEKoqS22NIh_MtD-vsVMr_jVbeHVDM9HVaw08aF5TzACF9eiqOpEsjGP-8KgLogXLbv0Q9bfdQCYIoSXWFVoXqmOyR8j17cwY9uxsue7gA01WCwU2iCJSKQcUTB4x5wNvMpzf9Moff0kWh5ACzK_B2Qi70IKl-rAnZkl6H1Kgj05nfiHCXtG3WoHXzY\/s1600\/Header%20-%20Android%20-%20Jetpack%20Compose%20January%20%E2%80%9924.png?w=1280&#038;ssl=1\"><\/a><\/div>\n<p><\/p>\n<p><\/p>\n<p>Today, the Jetpack Compose August \u201826 release is stable! This release brings version 1.12 across core Compose modules (see the full <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/bom\/bom-mapping\" target=\"_blank\">BOM mapping<\/a>), introducing rich visual APIs like Mesh Gradients and Wide Color Gamut (WCG) support, structural layout features like named areas in Grid, seamless integration with Android\u2019s Credential Manager, and significant testing and performance improvements.<\/p><div id=\"dev95-1208457054\" class=\"dev95- dev95-entity-placement\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<p>To update your project to today\u2019s release, upgrade your <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/bom\" target=\"_blank\">Compose BOM<\/a> version to <code>2026.08.00<\/code>:<\/p>\n<pre><code>implementation(platform(\"androidx.compose:compose-bom:2026.08.00\"))<\/code><\/pre>\n<h2>Breaking Changes<\/h2>\n<p>AGP &amp; Compile SDK: Compose 1.12 updates <code>compileSdk<\/code> to API 37, requiring a minimum AGP 9.1.1. As a reminder, Compose will always target the latest <code>compileSdk<\/code>. Learn more about this change <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/setup-compose-dependencies-and-compiler#agp-compatibility\" target=\"_blank\">here<\/a>.<\/p>\n<p><code>Modifier.onFirstVisible()<\/code> is deprecated: Migrate to <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/layout\/onVisibilityChanged.modifier\" target=\"_blank\">Modifier.onVisibilityChanged()<\/a><\/code>, which provides more precise visibility threshold tracking.<\/p>\n<h3>Graphics<\/h3>\n<h2>Mesh Gradients<\/h2>\n<p>Compose 1.12 introduces <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/graphics\/MeshGradientPainter\" target=\"_blank\">MeshGradientPainter<\/a><\/code> to help you create multi-point, organic color gradients.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhM-ha8Gsg6B6VjQung23xPKQ2bacwFr4WkFjTMRGZlYNi-GkDeEaPDi27pXasdGTEzBJ5dyRosimPK4aXLEiMfhBrh5nSpPU3tfHnoa13SAIIXsqy18csHZwiq3vhchjdLvKc2RepZU9brcQmjs9GKbiQJjCmPRtfbnjRKMiwJaFJqiheWV_CJADAp0jo\/s1111\/mesh_gradient2.gif?ssl=1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1111\" data-original-width=\"500\" height=\"400\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhM-ha8Gsg6B6VjQung23xPKQ2bacwFr4WkFjTMRGZlYNi-GkDeEaPDi27pXasdGTEzBJ5dyRosimPK4aXLEiMfhBrh5nSpPU3tfHnoa13SAIIXsqy18csHZwiq3vhchjdLvKc2RepZU9brcQmjs9GKbiQJjCmPRtfbnjRKMiwJaFJqiheWV_CJADAp0jo\/w180-h400\/mesh_gradient2.gif?resize=180%2C400&#038;ssl=1\" width=\"180\"><\/a><\/div>\n<p><\/p>\n<p><\/p>\n<pre><code>val rows = 1\nval columns = 1\n\nval gradientPainter = remember {\n    MeshGradientPainter(rows, columns) {\n        \/\/ Parameters: row, column, position, color\n        setVertex(0, 0, Offset(0f, 0f), Color.Red)     \/\/ Top-Left\n        setVertex(0, 1, Offset(1f, 0f), Color.Blue)    \/\/ Top-Right\n        setVertex(1, 0, Offset(0f, 1f), Color.Green)   \/\/ Bottom-Left\n        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)  \/\/ Bottom-Right\n    }\n}\n\nBox(\n    modifier = modifier\n        .aspectRatio(16\/9f)\n        .fillMaxWidth()\n        .paint(gradientPainter)\n)<\/code><\/pre>\n<p>For more information and examples, see the <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/graphics\/draw\/mesh-gradient\" target=\"_blank\">documentation<\/a>.<\/p>\n<h2>Wide Color Gamut &amp; HDR Support<\/h2>\n<p>Modern displays offer extended color fidelity and higher dynamic range. In Compose 1.12, full pipeline support for <b>Wide Color Gamut (P3)<\/b> and <b>HDR rendering<\/b> has been enabled across Compose graphics, paint, and shaders. Colors defined in non-sRGB color spaces (such as Display P3) are preserved through to platform rendering without color clamping. Colors will safely fall back to sRGB if they use an unsupported color space (e.g. CieXyz, CieLab, or Oklab), rely on a color space on an unsupported Android version (e.g Bt2020Hlg on Android 13 and below), or if the app is running on Android 9 (API 28) and below.<\/p>\n<p>Other notable changes:<\/p>\n<ul>\n<li><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/graphics\/LayerOutsets\">LayerOutsets<\/a><\/code> was added to <code>GraphicsLayer<\/code> &amp; <code>Modifier.graphicsLayer<\/code>, which you can use to increase the visual bounds of the layer beyond its measured size. Apply <code>LayerOutsets<\/code> to avoid the implicit <code>clipToBounds<\/code> behavior when the layer is promoted to an offscreen buffer.<\/li>\n<\/ul>\n<h3>Styles<\/h3>\n<p>At Google I\/O, we shared our early vision for the Compose <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/styles\" target=\"_blank\">Styles API<\/a>\u2014a unified, performant way to style components. Since then, we have continued building the underlying architecture to guarantee strict type safety and predictable correctness, and to support building custom design systems.<\/p>\n<p>To ensure we get this foundational layer correct, the API will remain experimental, and you can expect breaking changes.<\/p>\n<h3>Runtime Optimizations<\/h3>\n<h2>Keyed SideEffect Overload<\/h2>\n<p><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/runtime\/SideEffect.composable\" target=\"_blank\">SideEffect<\/a><\/code> now supports key arguments, which lets you fire one-shot side effects whenever specific keys change. This can lead to better performance compared to using a <code>LaunchedEffect<\/code> or <code>DisposableEffect<\/code> when you don\u2019t need the coroutine or dispose block. <code>SideEffect<\/code> is up to 90% faster than <code>LaunchedEffect<\/code> and around 20% faster than <code>DisposableEffect<\/code>. Note that <code>SideEffect<\/code> runs its effect before <code>DisposableEffect<\/code> and <code>LaunchedEffect<\/code>, so use caution if migrating existing effects to this API, especially for <code>LaunchedEffects<\/code> that rely on being dispatched to start after the current frame is completed.<\/p>\n<pre><code>@Composable\nfun AnalyticsTracker(userId: String, screenName: String) {\n    SideEffect(key1 = userId, key2 = screenName) {\n        analytics.logScreenView(userId, screenName)\n    }\n}<\/code><\/pre>\n<h3>Animation<\/h3>\n<p><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/animation\/core\/DeferredTargetAnimation\" target=\"_blank\">DeferredTargetAnimation<\/a><\/code> has graduated out of experimental status.<\/p>\n<h2>Interactive Two-Stage Transitions<\/h2>\n<p>New composables: <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/animation\/DeferredAnimatedContent.composable\" target=\"_blank\">DeferredAnimatedContent<\/a><\/code> and <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/animation\/DeferredAnimatedVisibility.composable\" target=\"_blank\">DeferredAnimatedVisibility<\/a><\/code> allow creating delightful two-stage transitions, e.g. for predictive back gesture tracking.<\/p>\n<p>Manual animation control: During a transition&#8217;s deferred phase, animated properties (like scale or offset) can now be manually manipulated in real-time (e.g., tracking a swipe gesture).<\/p>\n<p>Seamless handoff: Once the deferred phase ends, the transition engine takes over and performs a seamless handoff, including velocity transfer, to the automatic transition.<\/p>\n<p>Shared element support: A new <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/animation\/SharedTransitionScope.SharedContentConfig?hl=en#permitTransformDuringDeferredTransition()\" target=\"_blank\">permitTransformDuringDeferredTransition<\/a><\/code> flag in <code>SharedContentConfig<\/code> controls whether shared elements visually transform along with their parent containers during the deferred transition phase.<\/p>\n<pre><code>val state = remember { DeferredTransitionState(initialScreen) }\nval transition = rememberDeferredTransition(state)\n\nif (predictiveBackInProgress) {\n    state.defer(targetScreen)\n} else {\n    state.animateTo(targetScreen)\n}\n\ntransition.DeferredAnimatedContent(\n    targetState = targetScreen,\n    mutableTransformSpec = {\n       MutableContentTransform {\n           \/\/ Manually manipulate properties during the deferred phase\n           initialContentTransform { scale = swipeProgress }\n       }\n    }\n) { screen -&gt;\n    ScreenContent(screen)\n}<\/code><\/pre>\n<p>Below are two demos of use cases where a gesture-driven animation is handed off to a triggered animation:<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhlq52T3KC9iksfRG4bJ0Z_CrO-7tDqx9XgIqogGeApllKFnTPBLOwKz_HkL-2IwQe0W7s0dLDhHkdu9pHeGhFcQyUqlixMIA5r85nZXTuYQ6V0Vu5BSKWlimWH9Ro2PX2LRZdKm5Hhjl-LOkPwxFIv0-RRIugGF4Bt0VoL2FhIjOHPZKxHNIRmpGvNNT8\/s480\/deferred.gif?ssl=1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"480\" data-original-width=\"428\" height=\"320\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhlq52T3KC9iksfRG4bJ0Z_CrO-7tDqx9XgIqogGeApllKFnTPBLOwKz_HkL-2IwQe0W7s0dLDhHkdu9pHeGhFcQyUqlixMIA5r85nZXTuYQ6V0Vu5BSKWlimWH9Ro2PX2LRZdKm5Hhjl-LOkPwxFIv0-RRIugGF4Bt0VoL2FhIjOHPZKxHNIRmpGvNNT8\/s320\/deferred.gif?resize=285%2C320&#038;ssl=1\" width=\"285\"><\/a><\/div>\n<p><\/p>\n<p><\/p>\n<h3>Text, Input &amp; Platform Integrations<\/h3>\n<h2>Editable Text Formatting<\/h2>\n<p>New APIs offer rich-text formatting for editable text in <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/BasicTextField.composable\" target=\"_blank\">BasicTextField<\/a><\/code>. You can now programmatically apply and manipulate inline character and paragraph formatting using <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/text\/SpanStyle\" target=\"_blank\">SpanStyle<\/a><\/code> and <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/text\/ParagraphStyle\" target=\"_blank\">ParagraphStyle<\/a><\/code> via the new <code>addStyle()<\/code> method inside a <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/input\/TextFieldBuffer\" target=\"_blank\">TextFieldBuffer<\/a><\/code> scope (such as inside <code>textFieldState.edit { ... }<\/code> or an <code>InputTransformation<\/code>). Additionally, <code>TextFieldBuffer<\/code> provides <code>getSpanStyles()<\/code> and <code>getParagraphStyles()<\/code> APIs that return <code>TrackedRange<\/code> objects, allowing you to read, update, or remove applied styles. To complement formatting creation, <code>TextFieldState<\/code> now exposes a read-only <code>textStyles<\/code> property for querying active styles across ranges, while <code>TextFieldBuffer<\/code> provides <code>originalTextStyles<\/code> to inspect formatting state prior to an edit. Text formatting and custom annotations are persisted across configuration changes.<\/p>\n<pre><code>val state = rememberTextFieldState(\"Formatted text in Compose 1.12\")\n\n\/\/ Apply bold and color styles to a range of text\nstate.edit {\n    addStyle(\n        SpanStyle(fontWeight = FontWeight.Bold, color = Color.Blue),\n        start = 0,\n        end = 9\n    )\n}\n\n\/\/ Query active styles from TextFieldState\nval currentStyles = state.textStyles<\/code><\/pre>\n<h2>Text Selection<\/h2>\n<p>A new <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/selection\/SelectionState\" target=\"_blank\">SelectionState<\/a><\/code> API provides programmatic control and observability over text selection within a <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/selection\/SelectionContainer.composable#SelectionContainer(androidx.compose.ui.Modifier,kotlin.Function0)\" target=\"_blank\">SelectionContainer<\/a><\/code>. Hoisting a <code>SelectionState<\/code> object via <code>rememberSelectionState()<\/code> and passing into <code>SelectionContainer<\/code> exposes <code>selectedTexts<\/code> as a reactive list of <code>AnnotatedStrings<\/code> and provides methods like <code>selectAll()<\/code>, <code>clear()<\/code>, <code>select(TextRange)<\/code>, and <code>extendSelectionByWord()<\/code>.<\/p>\n<p>Additionally, use <code>getSelectableTexts()<\/code> to retrieve all selectable text items in layout order and select text across composables in the <code>SelectionContainer<\/code> using a global range.<\/p>\n<pre><code>@Composable\nfun ProgrammaticSelectionExample() {\n    val selectionState = rememberSelectionState()\n\n    Column {\n        Button(\n            onClick = { selectionState.selectAll() },\n            modifier = Modifier.disableSelectionClearOnTap()\n        ) {\n            Text(\"Select All\")\n        }\n\n        SelectionContainer(state = selectionState) {\n            Text(\"Text content to be selected programmatically.\")\n        }\n    }\n}<\/code><\/pre>\n<h2>Credential Manager Integration<\/h2>\n<p>Compose text fields now natively integrate with Android\u2019s Credential Manager (API 34+) via the Autofill framework (below API 34 is handled by <code><a href=\"https:\/\/developer.android.com\/jetpack\/androidx\/releases\/credentials\">androidx.credentialslibrary<\/a><\/code>). By attaching the new <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/semantics\/SemanticsPropertyReceiver#(androidx.compose.ui.semantics.SemanticsPropertyReceiver).credentialRequest()\" target=\"_blank\">credentialRequest<\/a><\/code> semantics property with <code>CredentialRequestData<\/code>, text inputs can prompt passkeys, saved credentials, or sign-in requests directly within the user input flow.<\/p>\n<pre><code>@Composable\nfun LoginField(textFieldState: TextFieldState) {\n    val credentialData = remember {\n        CredentialRequestData(\n            \/\/ Specify Credential Manager request options\n        )\n    }\n\n    BasicTextField(\n        state = textFieldState,\n        modifier = Modifier.semantics {\n            credentialRequest = credentialData\n        }\n    )\n}<\/code><\/pre>\n<p>Other notable changes:<\/p>\n<ul>\n<li>Support for font variation settings in <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/text\/fonts#downloadable-fonts\" target=\"_blank\">downloadable fonts<\/a>.<\/li>\n<li>Enabled auto-scrolling when dragging text selection beyond the viewport in <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/selection\/SelectionContainer.composable\" target=\"_blank\">SelectionContainer<\/a><\/code>.<\/li>\n<li>Added support for automatic interaction sounds (clicks and focus navigation) to Compose components, with a new <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/platform\/SoundEffectOnInteraction.composable\" target=\"_blank\">SoundEffectOnInteraction<\/a><\/code> composable to allow opt-out. Note that as a consequence of this change, semantics click listeners must now be called from the main thread, which may affect a small number of test cases.<\/li>\n<li><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/text\/input\/KeyboardType\" target=\"_blank\">KeyboardType<\/a><\/code> now includes <code>Date<\/code>, <code>Time<\/code>, <code>DateTime<\/code>, and <code>SignedDecimal<\/code>.<\/li>\n<li><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/text\/BasicSecureTextField.composable\" target=\"_blank\">BasicSecureTextField<\/a><\/code> now uses <code>TextObfuscationMode.System<\/code> by default, while <code>RevealLastTyped<\/code> serves as an absolute override.<\/li>\n<\/ul>\n<h3>Layout Enhancements<\/h3>\n<h2>Named Areas in Grid Layout<\/h2>\n<p>Building complex 2D layouts is now easier with named areas in the <code>@Experimental<\/code> <a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/foundation\/layout\/Grid.composable\" target=\"_blank\">Grid<\/a> component. Rather than managing numeric column and row indices across items, you can define semantic regions in your <code>GridConfigurationScope<\/code> and position composables by area name.<\/p>\n<pre><code>@OptIn(ExperimentalGridApi::class)\n@Composable\nfun DashboardLayout() {\n    Grid(\n        config = {\n            area(\"header\", row = 0, column = 0, rowSpan = 1, columnSpan = 2)\n            area(\"sidebar\", row = 1, column = 0)\n            area(\"content\", row = 1, column = 1)\n            gap(16.dp)\n        }\n    ) {\n        HeaderSection(modifier = Modifier.gridItem(areaId = \"header\"))\n        NavigationSidebar(modifier = Modifier.gridItem(areaId = \"sidebar\"))\n        MainContentView(modifier = Modifier.gridItem(areaId = \"content\"))\n    }\n}<\/code><\/pre>\n<p>For more information, see the <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/layouts\/adaptive\/grid\/container-properties#named-area\">documentation<\/a>.<\/p>\n<h3>Performance<\/h3>\n<p>As with every release, we continue to invest in Compose&#8217;s performance to ensure that the framework helps you to build beautiful, performant apps. In this release we&#8217;ve focused on improving startup performance and are now seeing Time to Initial Display (the time it takes for an app to produce its first frame) that is comparable to Views in our <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/performance\/herobenchmark\" target=\"_blank\">benchmarks<\/a>.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj72jjYb7EkeE07CYGMo6W0Xk9RFVR4ZleNo6fp5p36lJJ2ku3D-gdm8Jk8In6u-HQ4Kn5XM08uK5-exdOSK3Ajr4GmDNVCLztXnRsdUQ-77l_GXps1d8Q4vdpqdrNUsrYsKhbHOTndzh0hOtgs72ww28zaZPUVGcH1ITrog09t8QohS8E4V76sqpWQxdQ\/s1414\/timetoinitialdisplay%402x%20_v2.png?ssl=1\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1390\" data-original-width=\"1414\" height=\"315\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj72jjYb7EkeE07CYGMo6W0Xk9RFVR4ZleNo6fp5p36lJJ2ku3D-gdm8Jk8In6u-HQ4Kn5XM08uK5-exdOSK3Ajr4GmDNVCLztXnRsdUQ-77l_GXps1d8Q4vdpqdrNUsrYsKhbHOTndzh0hOtgs72ww28zaZPUVGcH1ITrog09t8QohS8E4V76sqpWQxdQ\/s320\/timetoinitialdisplay%402x%20_v2.png?resize=320%2C315&#038;ssl=1\" width=\"320\"><\/a><\/div>\n<\/p>\n<p><\/p>\n<h3>Testing &amp; Tooling Upgrades<\/h3>\n<h2>Test Synchronization<\/h2>\n<p>Compose 1.12 introduces new test APIs designed to reduce test execution times and eliminate flakiness during state sampling:<\/p>\n<li>\n<p><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/test\/ComposeUiTest#hasPendingWork()\" target=\"_blank\">hasPendingWork<\/a>:<\/code> Passively checks if the UI has pending work without advancing the clock, which is ideal for manual animation loops.<\/p>\n<\/li>\n<li>\n<p><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/test\/ComposeUiTest#runWithoutImplicitWait(kotlin.Function0)\">runWithoutImplicitWait<\/a>:<\/code> Temporarily disables implicit synchronization when stepping through manual clock frames (e.g. animation tests).<\/p>\n<\/li>\n<pre><code>@Test\nfun testAnimationStateFast() {\n\ncomposeTestRule.mainClock.autoAdvance = false\n    \n    while (composeTestRule.hasPendingWork()) {\n        composeTestRule.mainClock.advanceTimeByFrame()\n        composeTestRule.waitForIdle()\n        \n        composeTestRule.runOnUiThread {\n            composeTestRule.runWithoutImplicitWait {\n                \/\/ This is most effective when querying multiple nodes in a single frame. \n                \/\/ It prevents the redundant synchronization overhead that would \n                \/\/ otherwise occur on every individual query.\n                val box1 = composeTestRule.onNodeWithTag(\"Box1\").fetchSemanticsNode()\n                val box2 = composeTestRule.onNodeWithTag(\"Box2\").fetchSemanticsNode()\n                \n                assertThat(box1.boundsInRoot.right).isAtMost(box2.boundsInRoot.left)\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>Other notable changes:<\/p>\n<ul>\n<li>The <code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/test\/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).captureToImage()\" target=\"_blank\">captureToImage<\/a><\/code> API now allows you to capture a popup or dialog together with its anchor in a single bitmap.<\/li>\n<li>Added <code><a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/testing\/interoperability#viewscoped-semantics\" target=\"_blank\">onRootWithViewInteraction<\/a><\/code> to scope Compose semantic searches to specific Android Views. This simplifies testing hybrid UIs, such as RecyclerViews, without requiring unique test tags in production code.<\/li>\n<li><code><a href=\"https:\/\/developer.android.com\/reference\/kotlin\/androidx\/compose\/ui\/tooling\/preview\/PreviewWrapper\" target=\"_blank\">@PreviewWrapper<\/a><\/code> annotations can now be applied to custom <code>@MultiPreview<\/code> classes, enabling reusable preview setups (such as custom themes) across multiple components.<\/li>\n<\/ul>\n<h3>Happy Composing!<\/h3>\n<p>Compose 1.12 makes app development easier and more expressive than ever, with mesh gradients, wide color gamut support, downloadable variable fonts, Credential Manager integration, and faster testing tools. As always, we value your input, so please share your feedback on these changes or what you&#8217;d like to see next on our <a href=\"https:\/\/issuetracker.google.com\/issues\/new?component=612128\">issue tracker<\/a>. Happy composing!<\/p>\n<\/div>\n<p><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_3609\" class=\"pvc_stats total_only\" data-element-id=\"3609\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Posted by Nick Butcher, Product Manager, Jetpack Compose Today, the Jetpack Compose August \u201826 release is stable! This release brings version 1.12 across core Compose modules (see the full BOM mapping), introducing rich visual APIs like Mesh Gradients and Wide<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_3609\" class=\"pvc_stats total_only\" data-element-id=\"3609\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":3610,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[9],"tags":[],"class_list":["post-3609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android"],"a3_pvc":{"activated":true,"total_views":0,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What&#039;s new in the Jetpack Compose August &#039;26 release - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What&#039;s new in the Jetpack Compose August &#039;26 release - Dev95\" \/>\n<meta property=\"og:description\" content=\"Posted by Nick Butcher, Product Manager, Jetpack Compose Today, the Jetpack Compose August \u201826 release is stable! This release brings version 1.12 across core Compose modules (see the full BOM mapping), introducing rich visual APIs like Mesh Gradients and WideRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-23T10:12:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhM-ha8Gsg6B6VjQung23xPKQ2bacwFr4WkFjTMRGZlYNi-GkDeEaPDi27pXasdGTEzBJ5dyRosimPK4aXLEiMfhBrh5nSpPU3tfHnoa13SAIIXsqy18csHZwiq3vhchjdLvKc2RepZU9brcQmjs9GKbiQJjCmPRtfbnjRKMiwJaFJqiheWV_CJADAp0jo\/w180-h400\/mesh_gradient2.gif\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"What&#8217;s new in the Jetpack Compose August &#8217;26 release\",\"datePublished\":\"2026-09-23T10:12:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/\"},\"wordCount\":1127,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1\",\"articleSection\":[\"Android\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/\",\"name\":\"What's new in the Jetpack Compose August '26 release - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1\",\"datePublished\":\"2026-09-23T10:12:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1\",\"width\":1024,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/whats-new-in-the-jetpack-compose-august-26-release\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What&#8217;s new in the Jetpack Compose August &#8217;26 release\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What's new in the Jetpack Compose August '26 release - Dev95","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/","og_locale":"ar_AR","og_type":"article","og_title":"What's new in the Jetpack Compose August '26 release - Dev95","og_description":"Posted by Nick Butcher, Product Manager, Jetpack Compose Today, the Jetpack Compose August \u201826 release is stable! This release brings version 1.12 across core Compose modules (see the full BOM mapping), introducing rich visual APIs like Mesh Gradients and WideRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/whats-new-in-the-jetpack-compose-august-26-release\/","og_site_name":"Dev95","article_published_time":"2026-09-23T10:12:48+00:00","og_image":[{"url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhM-ha8Gsg6B6VjQung23xPKQ2bacwFr4WkFjTMRGZlYNi-GkDeEaPDi27pXasdGTEzBJ5dyRosimPK4aXLEiMfhBrh5nSpPU3tfHnoa13SAIIXsqy18csHZwiq3vhchjdLvKc2RepZU9brcQmjs9GKbiQJjCmPRtfbnjRKMiwJaFJqiheWV_CJADAp0jo\/w180-h400\/mesh_gradient2.gif","type":"","width":"","height":""}],"author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"7 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"What&#8217;s new in the Jetpack Compose August &#8217;26 release","datePublished":"2026-09-23T10:12:48+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/"},"wordCount":1127,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"image":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1","articleSection":["Android"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/","url":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/","name":"What's new in the Jetpack Compose August '26 release - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#primaryimage"},"image":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1","datePublished":"2026-09-23T10:12:48+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#primaryimage","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1","width":1024,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/whats-new-in-the-jetpack-compose-august-26-release\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"What&#8217;s new in the Jetpack Compose August &#8217;26 release"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/Social-Android-JetpackComposeJanuary24.png?fit=1024%2C512&ssl=1","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/3609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=3609"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/3609\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media\/3610"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=3609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=3609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=3609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}