# Jetpack Compose

Jetpack Compose is Android's recommended modern toolkit for building native UI.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## jetc.dev Newsletter Issue #331

DevFeed: [jetc.dev Newsletter Issue #331](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-331-26633.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/331.html>)

Author: CommonsWare

Published: 2026-09-15T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [compose-for-desktop](<https://devfeed.tech/topics/compose-for-desktop.md>), [servo](<https://devfeed.tech/topics/servo.md>), [WebView](<https://devfeed.tech/topics/webview.md>)

Tags: [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [compose-for-desktop](<https://devfeed.tech/tags/compose-for-desktop.md>), [issue](<https://devfeed.tech/tags/issue.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [webview](<https://devfeed.tech/tags/webview.md>)

### AI overview

This newsletter reviews recent Jetpack Compose release changes and highlights related developer content. It covers Compose BOM updates, Material3 and other Compose library versions, a keyboard focus bug and workaround, keyed composition, dialog background blurring, and Compose for Desktop libraries including a CEF-based option and window chrome controls.

### Source excerpt

SideEffect keys! CEF-based WebView and window chrome controls for desktop apps! And... why does the keyboard flicker?!?

## Android A2UI (AI to UI) Made Simple

DevFeed: [Android A2UI (AI to UI) Made Simple](<https://devfeed.tech/articles/android-a2ui-ai-to-ui-made-simple-29455.md>)

Original publisher: [Read original article](<https://medium.com/mobile-app-development-publication/android-a2ui-ai-to-ui-made-simple-f25011ca1d8d?source=rss----f9c208bdbb09---4>)

Author: Elye - A Dev By Grace

Published: 2026-09-09T07:23:57Z

Content type: tutorial

Language: en

Sources: [Mobile App Development Publication - Medium](<https://devfeed.tech/sources/mobile-app-development-publication-medium.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [a2ui](<https://devfeed.tech/tags/a2ui.md>), [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [api](<https://devfeed.tech/tags/api.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [google](<https://devfeed.tech/tags/google.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>)

### AI overview

This tutorial introduces A2UI, a protocol for rendering AI responses as user interfaces, and discusses trying it on Android with Jetpack Compose. It notes that an older Jetpack A2UI library is deprecated and that newer development is ongoing.

### Source excerpt

Converting AI Prompt Output Into User Interface in Jetpack Compose Continue reading on Mobile App Development Publication "

## A Multi-Module Android Template with Kotlin Convention Plugins, Lint Rules, and Design System Tokens

DevFeed: [A Multi-Module Android Template with Kotlin Convention Plugins, Lint Rules, and Design System Tokens](<https://devfeed.tech/articles/forget-the-setup-tax-a-production-ready-multi-module-android-template-22945.md>)

Original publisher: [Read original article](<https://proandroiddev.com/forget-the-setup-tax-a-production-ready-multi-module-android-template-f4c879c97205?source=rss----c72404660798---4>)

Author: Shamil Gulmetov

Published: 2026-09-09T01:34:18Z

Content type: tutorial

Language: en

Sources: [ProAndroidDev - Medium](<https://devfeed.tech/sources/proandroiddev-medium.md>)

Topics: [Template](<https://devfeed.tech/topics/template.md>), [Android](<https://devfeed.tech/topics/android.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [now-in-android](<https://devfeed.tech/topics/now-in-android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-architecture](<https://devfeed.tech/tags/android-architecture.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [automation](<https://devfeed.tech/tags/automation.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [build](<https://devfeed.tech/tags/build.md>), [compose](<https://devfeed.tech/tags/compose.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

### AI overview

This tutorial presents an Android Architecture Template based on patterns from Google's Now in Android repository. It describes a multi-module structure with Gradle Version Catalogs, Kotlin Convention Plugins, Jetpack Compose design tokens and dark-theme support, dependency injection, custom Lint rules, and a terminal-based renaming tool.

### Source excerpt

How to streamline your development workflow with pre-configured Kotlin Convention Plugins, custom Lint rules, and unified design system tokens. Creating a new Android application from scratch in modern engineering is rarely as simple as clicking File -> New -> New Project in Android Studio. Before writing a single line of business logic, developers face hours -- or even days -- of repetitive infrastructure setup: Configuring a scalable multi-module architecture. Setting up Gradle Version Catalogs and writing custom Kotlin Convention Plugins to eliminate build script duplication. Standardizing design tokens and dark theme support in Jetpack Compose. Wiring up Hilt Dependency Injection for Coroutine Dispatchers, network, and Application Scopes. Enforcing architectural boundaries and team coding standards using custom static analysis (Lint) rules. Google's official Now in Android (NiA) repository is the recognized gold standard for modern Android engineering. However, because NiA is a full-featured showcase app with domain logic (news feeds, authors, bookmarks, offline sync), using it as a starter kit is cumbersome: developers must strip out existing features while risking breaking build pipelines. This Android Architecture Template bridges that gap: a clean, production-ready starter kit that extracts NiA's best architectural patterns into an isolated foundation. To make it enterprise-ready with zero room for error, it includes a standalone automation tool. Instead of manual refactoring, run a single terminal command to rename and brand the entire architecture in seconds. Acknowledgments & Credits Core architectural decisions, build-logic convention plugins, and static analysis infrastructure in this template are directly inspired by Google's official Now in Android (NiA) repository. Rather than reinventing the wheel, this template focuses on developer ergonomics--making Google's best practices instantly usable out of the box. 1. Modular Project Architecture The repository

## From Permissions to Sessions: Rethinking Location Access in Android 17

DevFeed: [From Permissions to Sessions: Rethinking Location Access in Android 17](<https://devfeed.tech/articles/from-permissions-to-sessions-rethinking-location-access-in-android-17-22946.md>)

Original publisher: [Read original article](<https://proandroiddev.com/from-permissions-to-sessions-rethinking-location-access-in-android-17-5a13124b777d?source=rss----c72404660798---4>)

Author: Nav Singh

Published: 2026-09-09T01:15:51Z

Content type: tutorial

Language: en

Sources: [ProAndroidDev - Medium](<https://devfeed.tech/sources/proandroiddev-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-permissions](<https://devfeed.tech/tags/android-permissions.md>), [android17](<https://devfeed.tech/tags/android17.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [feature](<https://devfeed.tech/tags/feature.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [permission](<https://devfeed.tech/tags/permission.md>)

### AI overview

A tutorial on implementing Android 17's system-rendered Location Button in Jetpack Compose. The button uses the USE_LOCATION_BUTTON permission and grants precise location for the current session, with local rendering fallback on older Android versions or when remote rendering fails.

### Source excerpt

Image generated using Gemini In this article, we will learn how to implement the new 📍Location button introduced in Android 17 in Jetpack Compose-based Android applications. Android 17 adds a system-rendered 📍Location Button that we can drop into the layout via a Jetpack library, and tapping it gives the app precise location for that session only, gated by a new USE_LOCATION_BUTTON permission. What the feature is Android now exposes a system-owned, standard location button that we can embed in our UI instead of designing a custom control. When the user taps it, the system handles the permission flow, then grants the app precise location for the current session only, rather than long-lived access. How it changes permissions Instead of immediately requesting ACCESS_FINE_LOCATION (and maybe ACCESS_COARSE_LOCATION) at runtime, we declare the new USE_LOCATION_BUTTON permission to host the button. <!-- Standard Coarse and Fine Location Permissions + onlyForLocationButton --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:usesPermissionFlags="onlyForLocationButton"/> <!-- Required system permission for rendering the LocationButton --> <uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />Developer benefits Less custom permission boilerplate: We lean on system UX and the Jetpack library for the hardest parts of location consent. [versions] locationbuttonCompose = "1.0.0-alpha01" [libraries] androidx-locationbutton-compose = { group = "androidx.core.locationbutton", name = "locationbutton-compose", version.ref = "locationbuttonCompose" } Higher trust and clarity for users: the control looks and behaves consistently across apps, and session-only precise access is easier to understand than broader access. Implementation As we all know, Android development is now Compose-first, so we will implement it using the LocationButton composable provided by th

## From Permissions to Sessions: Rethinking Location Access in Android 17

DevFeed: [From Permissions to Sessions: Rethinking Location Access in Android 17](<https://devfeed.tech/articles/from-permissions-to-sessions-rethinking-location-access-in-android-17-25982.md>)

Original publisher: [Read original article](<https://proandroiddev.com/from-permissions-to-sessions-rethinking-location-access-in-android-17-5a13124b777d?source=rss-711ab22c5c77------2>)

Author: Nav Singh

Published: 2026-09-03T18:18:32Z

Content type: tutorial

Language: en

Sources: [Stories by Nav Singh 🇨🇦 on Medium](<https://devfeed.tech/sources/stories-by-nav-singh-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-permissions](<https://devfeed.tech/tags/android-permissions.md>), [android17](<https://devfeed.tech/tags/android17.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [branding](<https://devfeed.tech/tags/branding.md>), [consent](<https://devfeed.tech/tags/consent.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [layout](<https://devfeed.tech/tags/layout.md>), [permissions](<https://devfeed.tech/tags/permissions.md>)

### AI overview

A tutorial on implementing Android 17's system-rendered Location Button in Jetpack Compose applications. It explains session-only precise location access, the USE_LOCATION_BUTTON permission, the required Jetpack library, fallback rendering, and UI customization.

### Source excerpt

Image generated using Gemini In this article, we will learn how to implement the new 📍Location button introduced in Android 17 in Jetpack Compose-based Android applications. Android 17 adds a system-rendered 📍Location Button that we can drop into the layout via a Jetpack library, and tapping it gives the app precise location for that session only, gated by a new USE_LOCATION_BUTTON permission. What the feature is Android now exposes a system-owned, standard location button that we can embed in our UI instead of designing a custom control. When the user taps it, the system handles the permission flow, then grants the app precise location for the current session only, rather than long-lived access. How it changes permissions Instead of immediately requesting ACCESS_FINE_LOCATION (and maybe ACCESS_COARSE_LOCATION) at runtime, we declare the new USE_LOCATION_BUTTON permission to host the button. <!-- Standard Coarse and Fine Location Permissions + onlyForLocationButton --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:usesPermissionFlags="onlyForLocationButton"/> <!-- Required system permission for rendering the LocationButton --> <uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />Developer benefits Less custom permission boilerplate: We lean on system UX and the Jetpack library for the hardest parts of location consent. [versions] locationbuttonCompose = "1.0.0-alpha01" [libraries] androidx-locationbutton-compose = { group = "androidx.core.locationbutton", name = "locationbutton-compose", version.ref = "locationbuttonCompose" } Higher trust and clarity for users: the control looks and behaves consistently across apps, and session-only precise access is easier to understand than broader access. Implementation As we all know, Android development is now Compose-first, so we will implement it using the LocationButton composable provided by th

## Animating between numbers in Jetpack Compose

DevFeed: [Animating between numbers in Jetpack Compose](<https://devfeed.tech/articles/animating-between-numbers-in-jetpack-compose-25182.md>)

Original publisher: [Read original article](<https://joebirch.co/android/animating-between-numbers-in-jetpack-compose/>)

Author: hitherejoe

Published: 2026-09-02T12:37:43Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [API](<https://devfeed.tech/topics/api.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [animation](<https://devfeed.tech/tags/animation.md>), [api](<https://devfeed.tech/tags/api.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpackcompose](<https://devfeed.tech/tags/jetpackcompose.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to animate changing numerical portfolio values in Jetpack Compose. It uses animateFloatAsState with a target value and a tween animation configured with a 500ms duration and FastOutSlowInEasing.

### Source excerpt

When it comes to displaying portfolio data inside of Sleevd, users can change the selected filters which will adjust the portfolio values based on that selection. Alongside the main graph, we show the total portfolio value along with some small statistics for collection counts. When the user moves between the filter options, the values of... Continue reading ->

## Compose Multiplatform Is a Business Decision, Not a Technical One - Justin Mancinelli

DevFeed: [Compose Multiplatform Is a Business Decision, Not a Technical One - Justin Mancinelli](<https://devfeed.tech/articles/compose-multiplatform-is-a-business-decision-not-a-technical-one-justin-mancinelli-38181.md>)

Original publisher: [Read original article](<https://touchlab.co/compose-multiplatform-business-decision>)

Published: 2026-09-01T18:00:00Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [react](<https://devfeed.tech/tags/react.md>), [technical](<https://devfeed.tech/tags/technical.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This opinion article argues that Compose Multiplatform is a strategic business choice for sharing UI across Android, iOS, desktop, and web. It compares CMP with Flutter and React Native, emphasizing its Kotlin and Jetpack Compose foundations and its native status on Android.

### Source excerpt

If you are weighing Flutter, maintaining two native UI codebases "for now", or assuming cross-platform means giving something up, read this before your next roadmap conversation.

## Mastering Jetpack Compose's New SelectionState API

DevFeed: [Mastering Jetpack Compose's New SelectionState API](<https://devfeed.tech/articles/mastering-jetpack-compose-s-new-selectionstate-api-25985.md>)

Original publisher: [Read original article](<https://proandroiddev.com/mastering-jetpack-composes-new-selectionstate-api-13dfa05f49db?source=rss-711ab22c5c77------2>)

Author: Nav Singh

Published: 2026-08-27T01:17:44Z

Content type: tutorial

Language: en

Sources: [Stories by Nav Singh 🇨🇦 on Medium](<https://devfeed.tech/sources/stories-by-nav-singh-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [api](<https://devfeed.tech/tags/api.md>), [api-news](<https://devfeed.tech/tags/api-news.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [reactive](<https://devfeed.tech/tags/reactive.md>)

### AI overview

This tutorial introduces Jetpack Compose's SelectionState API, released in August 2026, for hoisted bidirectional selection control and reactive text observation. It demonstrates programmatic selection, clearing, range selection, word-based expansion, and access to selected text.

### Source excerpt

Image generated using Gemini The Jetpack Compose August '26 release introduced a new API SelectionState for hoisted, bidirectional control and reactive text observation. Core ComponentsSelectionState An object that provides access to the selected text and methods for controlling it programmatically 🛑 We cannot use the same SelectionState with multiple SelectionContainersval selectionState = rememberSelectionState()SelectionContainer: A composable function that enables text selection of its content. SelectionContainer(state = selectionState) { Text( "Text content to be selected programmatically." ) }Programmatic Control Methods selectionState.selectAll(): Selects all the content in the container Button( onClick = { selectionState.selectAll() }) { Text("Select All") } selectionState.clear(): Clears the active selection Button(onClick = { selectionState.clear() }) { Text("Clear selection") } selectionState.select(TextRange): Selects a specific range of text Button( onClick = { selectionState.select(TextRange(0, 4)) }) { Text("Range selection") } selectionState.extendSelectionByWord(): Expands the selection of words This selects the first word in the container if there is no selection. The selection continues to the next Composable Text, if the next word is in a different Composable Text.Button( onClick = { selectionState.extendSelectionByWord()}) { Text("Extend selection") }Mutliple Text Components selectionSelected texts Provides access to the selected text. Returns List<AnnotatedString> Backed by mutableStateOf -- Observable by Composablesprivate var _selectedTexts by mutableStateOf<List<AnnotatedString>>Text(text = "Selected text: ${selectionState.selectedTexts}")Sample Code@Composable fun ProgrammaticSelectionExample() { val selectionState = rememberSelectionState() Column{ Row { Button( onClick = { selectionState.selectAll() }, ) { Text("Select All") } Button( onClick = { selectionState.clear() }, ) { Text("Clear selection") } } Row { Button( onClick = { selectionS

## jetc.dev Newsletter Issue #328

DevFeed: [jetc.dev Newsletter Issue #328](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-328-22960.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/328.html>)

Author: CommonsWare

Published: 2026-08-25T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [modules](<https://devfeed.tech/topics/modules.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [batching](<https://devfeed.tech/tags/batching.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [images](<https://devfeed.tech/tags/images.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [modules](<https://devfeed.tech/tags/modules.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [published](<https://devfeed.tech/tags/published.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

Newsletter Issue #328 covers Jetpack Compose development topics, including API modules and composables, lazy-container lifecycle exceptions, recomposition and state-change batching, and selecting and copying text from images and videos.

### Source excerpt

API modules and composables! LazyColumn() exceptions! 'Select and copy text' for images and videos!

## jetc.dev Newsletter Issue #327

DevFeed: [jetc.dev Newsletter Issue #327](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-327-22959.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/327.html>)

Author: CommonsWare

Published: 2026-08-18T14:00:00Z

Content type: news

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [releases](<https://devfeed.tech/topics/releases.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [liquid glass](<https://devfeed.tech/topics/liquid-glass.md>), [Model Context Protocol (MCP)](<https://devfeed.tech/topics/model-context-protocol-mcp.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>)

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [compose-hot-reload](<https://devfeed.tech/tags/compose-hot-reload.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [liquid-glass](<https://devfeed.tech/tags/liquid-glass.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

Newsletter Issue #327 covers stable and alpha Jetpack Compose releases, Compose Multiplatform updates, Liquid Glass approaches for multiplatform apps, and related Compose developments including Hot Reload MCP server support and proposed server-side rendering.

### Source excerpt

Compose stable release! Compose Material3 stable too! Liquid Glass in a multiplatform app! Preview generator!

## Enhance your app for the new Pixel lineup: Unveiled at Made by Google

DevFeed: [Enhance your app for the new Pixel lineup: Unveiled at Made by Google](<https://devfeed.tech/articles/enhance-your-app-for-the-new-pixel-lineup-unveiled-at-made-by-google-4240.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/08/pixel-app-experience-made-by-google.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-12T19:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog.md>), [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-2.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Large Screen](<https://devfeed.tech/topics/large-screen.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [App](<https://devfeed.tech/topics/app.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [building](<https://devfeed.tech/tags/building.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developer](<https://devfeed.tech/tags/developer.md>), [features](<https://devfeed.tech/tags/features.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [platform](<https://devfeed.tech/tags/platform.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Android guidance for adapting apps to foldables and expanded displays. It covers Window Size Classes, Jetpack Compose, state preservation with ViewModel, and posture-specific layouts for responsive experiences across screen sizes and device configurations.

### Source excerpt

Posted by Fahd Imtiaz, Senior Product Manager, Loryn Hairston, Product Marketing Manager, and Tracy Agyemang, Product Marketing Manager, Android Developer Made by Google expands what's possible across the Android ecosystem. With the introduction of the Pixel 11 Pro Fold, Pixel Watch 5, and the entire Pixel family, users are moving seamlessly across diverse screen sizes, unique postures, and intelligent experiences. For you, the developer, this represents a massive opportunity: foldable users spend about 14x more than standard phone users. To help you elevate your existing experience without starting from scratch, we're sharing our latest platform guidance alongside real-world examples from developers already putting these features into production. Deliver adaptive experiences across foldables and expanded displays The Pixel 11 Pro Fold gives your app a chance to flex its capabilities with an expanded inner display and a standard size outer screen. Building for the foldable form factor requires dropping hardcoded layout rules and designing around available window space. Leveraging Jetpack Compose APIs like Navigation 3 with Scene strategies or our newest layout APIs like Grid and FlexBox allows your layout containers to automatically wrap, span, and reflow. You can also use the experimental MediaQuery API to dynamically adapt your UI to environmental signals like foldable posture, and keyboard states. Building adaptively requires tracking actual app dimensions rather than physical device size, especially during split-screen and multitasking flows. Using Window Size Classes from the WindowManager library allows your layout to respect folds and hinges as natural content separators. For instance, Notability leveraged Material 3 Window Size Classes to create a responsive two-pane layout that transitions smoothly between folded and expanded screens. As Ryan Shea, Android Engineering Manager at Notability, shared, tracking the window itself allows their layout and canvas z

## Building adaptive Android apps for foldable and expanded displays

DevFeed: [Building adaptive Android apps for foldable and expanded displays](<https://devfeed.tech/articles/enhance-your-app-for-the-new-pixel-lineup-unveiled-at-made-by-google-22697.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/pixel-app-experience-made-by-google.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-12T19:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Large Screen](<https://devfeed.tech/topics/large-screen.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>)

Tags: [adaptive](<https://devfeed.tech/tags/adaptive.md>), [android](<https://devfeed.tech/tags/android.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [layout](<https://devfeed.tech/tags/layout.md>), [multitasking](<https://devfeed.tech/tags/multitasking.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This Android developer article explains how to adapt apps for foldable devices and expanded displays. It covers window-based sizing, Jetpack Compose layout APIs, posture-aware interfaces, and preserving UI state across folding, rotation, multitasking, and resizing transitions, with examples from Notability and Flo Health.

### Source excerpt

Posted by Fahd Imtiaz, Senior Product Manager, Loryn Hairston, Product Marketing Manager, and Tracy Agyemang, Product Marketing Manager, Android Developer Made by Google expands what's possible across the Android ecosystem. With the introduction of the Pixel 11 Pro Fold, Pixel Watch 5, and the entire Pixel family, users are moving seamlessly across diverse screen sizes, unique postures, and intelligent experiences. For you, the developer, this represents a massive opportunity: foldable users spend about 14x more than standard phone users. To help you elevate your existing experience without starting from scratch, we're sharing our latest platform guidance alongside real-world examples from developers already putting these features into production. Deliver adaptive experiences across foldables and expanded displays The Pixel 11 Pro Fold gives your app a chance to flex its capabilities with an expanded inner display and a standard size outer screen. Building for the foldable form factor requires dropping hardcoded layout rules and designing around available window space. Leveraging Jetpack Compose APIs like Navigation 3 with Scene strategies or our newest layout APIs like Grid and FlexBox allows your layout containers to automatically wrap, span, and reflow. You can also use the experimental MediaQuery API to dynamically adapt your UI to environmental signals like foldable posture, and keyboard states. Building adaptively requires tracking actual app dimensions rather than physical device size, especially during split-screen and multitasking flows. Using Window Size Classes from the WindowManager library allows your layout to respect folds and hinges as natural content separators. For instance, Notability leveraged Material 3 Window Size Classes to create a responsive two-pane layout that transitions smoothly between folded and expanded screens. As Ryan Shea, Android Engineering Manager at Notability, shared, tracking the window itself allows their layout and canvas z

## What's new in the Jetpack Compose August '26 release

DevFeed: [What's new in the Jetpack Compose August '26 release](<https://devfeed.tech/articles/what-s-new-in-the-jetpack-compose-august-26-release-22693.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/jetpack-compose-august-2026-release.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-12T16:00:00Z

Content type: release

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [layout](<https://devfeed.tech/tags/layout.md>), [performance](<https://devfeed.tech/tags/performance.md>), [release](<https://devfeed.tech/tags/release.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [update](<https://devfeed.tech/tags/update.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

The Jetpack Compose August 2026 release is stable and brings version 1.12 to core Compose modules. It adds Mesh Gradients, Wide Color Gamut and HDR rendering support, named areas in Grid, Credential Manager integration, and testing and performance improvements. The release also includes breaking changes, including a requirement for API 37 and AGP 9.1.1.

### Source excerpt

Posted by Nick Butcher, Product Manager, Jetpack Compose Today, the Jetpack Compose August '26 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 Color Gamut (WCG) support, structural layout features like named areas in Grid, seamless integration with Android's Credential Manager, and significant testing and performance improvements. To update your project to today's release, upgrade your Compose BOM version to 2026.08.00: implementation(platform("androidx.compose:compose-bom:2026.08.00")) Breaking Changes AGP & Compile SDK: Compose 1.12 updates compileSdk to API 37, requiring a minimum AGP 9.1.1. As a reminder, Compose will always target the latest compileSdk. Learn more about this change here. Modifier.onFirstVisible() is deprecated: Migrate to Modifier.onVisibilityChanged(), which provides more precise visibility threshold tracking. Graphics Mesh Gradients Compose 1.12 introduces MeshGradientPainter to help you create multi-point, organic color gradients. val rows = 1 val columns = 1 val gradientPainter = remember { MeshGradientPainter(rows, columns) { // Parameters: row, column, position, color setVertex(0, 0, Offset(0f, 0f), Color.Red) // Top-Left setVertex(0, 1, Offset(1f, 0f), Color.Blue) // Top-Right setVertex(1, 0, Offset(0f, 1f), Color.Green) // Bottom-Left setVertex(1, 1, Offset(1f, 1f), Color.Yellow) // Bottom-Right } } Box( modifier = modifier .aspectRatio(16/9f) .fillMaxWidth() .paint(gradientPainter) ) For more information and examples, see the documentation. Wide Color Gamut & HDR Support Modern displays offer extended color fidelity and higher dynamic range. In Compose 1.12, full pipeline support for Wide Color Gamut (P3) and HDR rendering 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 wi

## Media3 1.11 adds customizable Compose player controls, gestures, and video preloading

DevFeed: [Media3 1.11 adds customizable Compose player controls, gestures, and video preloading](<https://devfeed.tech/articles/media3-1-11-what-s-new-22695.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/media3-1-11-whats-new.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-11T16:00:00Z

Content type: release

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [media3](<https://devfeed.tech/topics/media3.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Playback](<https://devfeed.tech/topics/playback.md>), [Android](<https://devfeed.tech/topics/android.md>), [ExoPlayer](<https://devfeed.tech/topics/exoplayer.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [audio](<https://devfeed.tech/tags/audio.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [media](<https://devfeed.tech/tags/media.md>), [media3](<https://devfeed.tech/tags/media3.md>), [playback](<https://devfeed.tech/tags/playback.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

Android Media3 1.11 introduces customizable Jetpack Compose player layouts, gesture-based playback controls, player recycling and preloading for short-form video feeds, improved Cast integration, a Ktor HTTP client extension, and new Ogg and WAV muxing utilities.

### Source excerpt

Posted by Toni Heidenreich, Software Engineer, Android Media3 1.11 is out. Powering the vast majority of top Android media apps, this release brings new features, bug fixes, and improvements across playback, editing, and UI components. We're expanding our Jetpack Compose UI modules with customizable Player slots and easy to use defaults, interactive gestures, state observers, and short-form video preloading using PlayerPool. We also modernized the Media3 Cast integration with SystemUI Output Switcher support, introduced a new Ktor HTTP client network extension, and added new muxing utilities for Ogg and WAV files. Read on for key highlights, and check out the full release notes for a comprehensive list of changes. Playback UI and Compose With Android becoming Compose-first, we are continuing to expand the media3-ui-compose and media3-ui-compose-material3 modules. This update introduces more granular control over your player layout, richer interaction patterns, and deeper integration with Material3. Customizable Player layout The Material 3 Player Composable now supports dedicated content slots for topControls, centerControls, bottomControls, and errorOverlay. You can drop in your own Composables or use the ready-made defaults published in PlayerDefaults: Player( player = player, topControls = { PlayerDefaults.TopControls(player) }, centerControls = { PlayerDefaults.CenterControls(player) }, bottomControls = { PlayerDefaults.BottomControls(player) }, ) The Player Composable also integrates FocusRequester support, enabling seamless D-pad and keyboard navigation on Android TV, foldables, and desktop environments. Example for a Composable Player with customized controls Gestures and playback speed control PlaybackSpeedState now provides a fast-forward/slow-motion API. The demo-compose app showcases this with a long-press gesture to fast-forward playback and seeking with double tap. Combined with the ProgressSlider introduced in 1.10, the Compose player UI now offers ric

## jetc.dev Newsletter Issue #325

DevFeed: [jetc.dev Newsletter Issue #325](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-325-22957.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/325.html>)

Author: CommonsWare

Published: 2026-08-04T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [releases](<https://devfeed.tech/topics/releases.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [agents](<https://devfeed.tech/tags/agents.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [dev](<https://devfeed.tech/tags/dev.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [published](<https://devfeed.tech/tags/published.md>), [remote](<https://devfeed.tech/tags/remote.md>)

### AI overview

jetc.dev Newsletter Issue #325 reviews recent Jetpack Compose releases and related artifacts, including BOM, Material3, Remote Compose, and Wear Compose updates. It also covers the five-year anniversary of Compose 1.0, composition debugging research, Compose Multiplatform content, and a reported memory leak in a Compose for Desktop design system.

### Source excerpt

Compose 1.0 five-year anniversary! 1.12.0 RC! Memory leaks! Remote Compose for debugging! And... have you been through the desert with a state with no name?!?

## Stop Ignoring Compose Stability (Yes, Even with Strong Skipping Mode)

DevFeed: [Stop Ignoring Compose Stability (Yes, Even with Strong Skipping Mode)](<https://devfeed.tech/articles/stop-ignoring-compose-stability-yes-even-with-strong-skipping-mode-25753.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/stop-ignoring-compose-stability-yes-even-with-strong-skipping-mode/>)

Author: Shreyas Patil

Published: 2026-08-03T04:30:00Z

Content type: article

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-compiler](<https://devfeed.tech/tags/compose-compiler.md>), [compose-stability](<https://devfeed.tech/tags/compose-stability.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>)

### AI overview

This article explains why Compose stability still matters when Strong Skipping Mode is enabled. It describes how unstable parameters are compared by instance equality, which can prevent composables from skipping and lead to unnecessary recompositions, and discusses automatic lambda memoization.

### Source excerpt

Strong Skipping Mode doesn't make Compose stability obsolete. Discover the hidden referential equality trap causing silent recompositions in your app.

## Celebrating 5 years of Jetpack Compose

DevFeed: [Celebrating 5 years of Jetpack Compose](<https://devfeed.tech/articles/celebrating-5-years-of-jetpack-compose-4225.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/07/five-years-of-jetpack-compose.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-07-28T16:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog.md>), [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-2.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apis](<https://devfeed.tech/tags/apis.md>), [apps](<https://devfeed.tech/tags/apps.md>), [community](<https://devfeed.tech/tags/community.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [devices](<https://devfeed.tech/tags/devices.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [history](<https://devfeed.tech/tags/history.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [production](<https://devfeed.tech/tags/production.md>), [release](<https://devfeed.tech/tags/release.md>), [ui](<https://devfeed.tech/tags/ui.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

The article celebrates five years of Jetpack Compose, tracing its evolution from the 1.0 release in 2021 to version 1.11. It highlights Compose's adoption in Android production apps, expansion across mobile and other form factors, development history, community involvement, and progression from Material 2 to Material 3 Expressive.

### Source excerpt

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 the APIs evolve significantly over the years, and we're taking a moment to celebrate. When we officially announced the 1.0 release, we promised a simpler, faster, and more intuitive way to build native interfaces on Android. Looking back, it's safe to say that Compose didn't just deliver on that promise, but also completely changed the Android ecosystem, with more than 68% of the top 1,000 apps using it in production today. History Over the last five years, Compose has grown steadily. In the early days, we explored showing you how to build layouts with the basic Box, Row, and Column. Today, we've expanded Compose to work not just on mobile devices, but to other form factors such as Compose for TV, WearOS, Glance for Widgets, and even display glasses with Jetpack Compose Glimmer. We recorded an Android Developers Backstage episode with Clara Bayarri, Engineering Lead for Jetpack, and two former leads of the team, Romain Guy and Chet Haase, along with Tor Norbye, Senior Engineering Director. In this episode, they discuss the history of Compose and the early days of development. Compose highlights over the years Looking back The beginnings of Compose were very different from what you know today. Two projects were happening in parallel inside the Android team. At the time, the Views toolkit team was thinking of unbundling the UI Toolkit into a library to help with development speed, and make it easier for developers to adopt and control updates. Meanwhile, a team was working on a novel idea to build declarative layouts by embedding XML inside Kotlin, which looked something like this: Those two efforts merged to produce what you know today - a fully declarative UI Too

## Celebrating 5 years of Jetpack Compose

DevFeed: [Celebrating 5 years of Jetpack Compose](<https://devfeed.tech/articles/celebrating-5-years-of-jetpack-compose-22682.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/07/five-years-of-jetpack-compose.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-07-28T16:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [release](<https://devfeed.tech/tags/release.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This retrospective marks five years since Jetpack Compose 1.0 was released on July 28, 2021. It describes Compose's evolution into a declarative UI toolkit using Kotlin, a compiler plugin, and a runtime; its expansion to additional form factors; and the community feedback that shaped the 1.0 release. The article also states that more than 68% of the top 1,000 apps use Compose in production and identifies Compose 1.11 as the latest version.

### Source excerpt

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 the APIs evolve significantly over the years, and we're taking a moment to celebrate. When we officially announced the 1.0 release, we promised a simpler, faster, and more intuitive way to build native interfaces on Android. Looking back, it's safe to say that Compose didn't just deliver on that promise, but also completely changed the Android ecosystem, with more than 68% of the top 1,000 apps using it in production today. History Over the last five years, Compose has grown steadily. In the early days, we explored showing you how to build layouts with the basic Box, Row, and Column. Today, we've expanded Compose to work not just on mobile devices, but to other form factors such as Compose for TV, WearOS, Glance for Widgets, and even display glasses with Jetpack Compose Glimmer. We recorded an Android Developers Backstage episode with Clara Bayarri, Engineering Lead for Jetpack, and two former leads of the team, Romain Guy and Chet Haase, along with Tor Norbye, Senior Engineering Director. In this episode, they discuss the history of Compose and the early days of development. Compose highlights over the years Looking back The beginnings of Compose were very different from what you know today. Two projects were happening in parallel inside the Android team. At the time, the Views toolkit team was thinking of unbundling the UI Toolkit into a library to help with development speed, and make it easier for developers to adopt and control updates. Meanwhile, a team was working on a novel idea to build declarative layouts by embedding XML inside Kotlin, which looked something like this: Those two efforts merged to produce what you know today - a fully declarative UI Too

## jetc.dev Newsletter Issue #322

DevFeed: [jetc.dev Newsletter Issue #322](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-322-22954.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/322.html>)

Author: CommonsWare

Published: 2026-07-14T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [compose-for-desktop](<https://devfeed.tech/topics/compose-for-desktop.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Android](<https://devfeed.tech/topics/android.md>), [navigation](<https://devfeed.tech/topics/navigation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-for-desktop](<https://devfeed.tech/tags/compose-for-desktop.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [module](<https://devfeed.tech/tags/module.md>), [navigation](<https://devfeed.tech/tags/navigation.md>)

### AI overview

This newsletter issue rounds up recent Jetpack Compose developments and related community content, including Compose updates, TV Compose performance, navigation, filter bars, settings-screen DSLs, Compose Multiplatform with SwiftUI, and Compose for Desktop performance.

### Source excerpt

SubcomposeLayout! TV Compose! Nav3! Filter bars! Setting screens! And... can we make Compose for Desktop better?!?

## Inside SubcomposeLayout: Jetpack Compose's Most Misunderstood API

DevFeed: [Inside SubcomposeLayout: Jetpack Compose's Most Misunderstood API](<https://devfeed.tech/articles/inside-subcomposelayout-jetpack-compose-s-most-misunderstood-api-25730.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/inside-subcomposelayout-jetpack-composes-most-misunderstood-api/>)

Author: Shreyas Patil

Published: 2026-07-10T12:05:00Z

Content type: article

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [compose](<https://devfeed.tech/tags/compose.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [internals](<https://devfeed.tech/tags/internals.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learn](<https://devfeed.tech/tags/learn.md>), [performance](<https://devfeed.tech/tags/performance.md>), [performance-optimization](<https://devfeed.tech/tags/performance-optimization.md>), [ui](<https://devfeed.tech/tags/ui.md>), [uiux](<https://devfeed.tech/tags/uiux.md>)

### AI overview

A deep dive into Jetpack Compose's SubcomposeLayout, explaining how it performs composition during measurement or placement, stalls the normal layout pipeline, and can create performance costs. The article also outlines when standard custom layouts or SubcomposeLayout are appropriate.

### Source excerpt

A deep dive into the internals of SubcomposeLayout in Jetpack Compose. Learn how subcomposition actually works, why it breaks the phase rules, and the real node-thrashing cost it carries.

## Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации

DevFeed: [Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации](<https://devfeed.tech/articles/jetpack-compose-30670.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/hh/articles/1052310/>)

Author: karenkov\_id (hh.ru)

Published: 2026-07-01T08:20:40Z

Content type: tutorial

Language: ru

Sources: [HeadHunter RU](<https://devfeed.tech/sources/headhunter-ru.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [modo](<https://devfeed.tech/tags/modo.md>), [remembersaveable](<https://devfeed.tech/tags/remembersaveable.md>), [saveablestateholder](<https://devfeed.tech/tags/saveablestateholder.md>), [tag-08a48a9394c3](<https://devfeed.tech/tags/tag-08a48a9394c3.md>), [tag-f538878e20ff](<https://devfeed.tech/tags/tag-f538878e20ff.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This article explains why naïve screen-list navigation is insufficient in Jetpack Compose and examines how the Modo navigation library addresses screen state isolation, navigation-graph persistence, lifecycle and resource cleanup, and instance stability.

### Source excerpt

Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое. В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo. Читать далее

## Introducing Composables UI

DevFeed: [Introducing Composables UI](<https://devfeed.tech/articles/introducing-composables-ui-28456.md>)

Original publisher: [Read original article](<https://composables.com/blog/introducing-composables-ui>)

Author: Alex Styl

Published: 2026-06-22T00:00:00Z

Content type: release

Language: en

Sources: [Composables - Concise, no-fluff video tutorials for Android developers](<https://devfeed.tech/sources/composables-concise-no-fluff-video-tutorials-for-android-developers.md>)

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [library](<https://devfeed.tech/tags/library.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Composables UI is a fully accessible component library for Compose Multiplatform. It provides adaptive components for different device capabilities, consistent states and theming with dark mode, and options to use it as a Gradle dependency or copy individual component source. The article also describes upgrades to Compose Unstyled developed through testing Composables UI.

### Source excerpt

A modern, fully-accessible component library for Compose Multiplatform.

## Announcing Jetpack Compose Mechanisms: The Book and Course on How Compose Actually Works

DevFeed: [Announcing Jetpack Compose Mechanisms: The Book and Course on How Compose Actually Works](<https://devfeed.tech/articles/announcing-jetpack-compose-mechanisms-the-book-and-course-on-how-compose-actually-works-25925.md>)

Original publisher: [Read original article](<https://skydoves.medium.com/announcing-jetpack-compose-mechanisms-the-book-and-course-on-how-compose-actually-works-23f5c29016a9?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2026-06-21T01:38:50Z

Content type: article

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [.env](<https://devfeed.tech/topics/dotenv.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-compose](<https://devfeed.tech/tags/android-compose.md>), [article](<https://devfeed.tech/tags/article.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [course](<https://devfeed.tech/tags/course.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

This developer article explains how Jetpack Compose works beneath the @Composable function. It examines compiler-generated function signatures, restart groups and skip checks, and how remember stores values by position in the runtime slot table. It also introduces a book and companion course covering these mechanisms.

### Source excerpt

You hit a recomposition that made no sense. You opened the function, read it twice, and still could not see why it ran again. Maybe you added a remember, shuffled a parameter, and it went away, and you never learned why. Every Compose developer has lived some version of that moment. This post is about the question you quietly moved past: what is actually happening under that @Composable function? In this article, you'll look at three of those puzzles up close, the function that is not the function you wrote, a value that survives by position, and a screen that looks clean while it burns frames. Then you'll see what the book built to answer them covers across its four parts, and how the companion course turns that reading into practice. The gap between using and understanding Most developers know how to use Compose. Far fewer know what runs underneath a @Composable function, and that gap stays invisible until the day a screen recomposes more than it should, a type refuses to skip, or a list drops frames during a scroll. At that point the usual advice runs out, and you are left guessing at a system you cannot see. Here is the kind of thing worth being able to see. You write this: https://medium.com/media/24487ffb0b09b137a227ad928968b886/href The compiler rewrites the signature to fun Greeting(name: String, $composer: Composer?, $changed: Int), wraps the body in a restart group, and adds a skip check that can bypass the entire function when name has not changed since the last composition. Every part of that rewrite has a reason. Once you can read the output, recomposition stops being something that happens to you and becomes something you can trace. Where does a remembered value actually go? You call remember { mutableStateOf(0) } dozens of times a day and trust that the value comes back. But where does it actually go? Not into a variable, not into a map, not into a field on your composable. https://medium.com/media/c6aa8065dea93696c4a4bb2e7bbb27ee/href Because remembe

## Building the Crossplay Board

DevFeed: [Building the Crossplay Board](<https://devfeed.tech/articles/building-the-crossplay-board-39148.md>)

Original publisher: [Read original article](<https://open.nytimes.com/building-the-crossplay-board-6de68c8574f9?source=rss----51e1d1745b32---4>)

Author: The NYT Open Team

Published: 2026-06-08T16:46:30Z

Content type: tutorial

Language: en

Sources: [New York Times](<https://devfeed.tech/sources/new-york-times.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Development](<https://devfeed.tech/topics/development.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [screen](<https://devfeed.tech/topics/screen.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplayer](<https://devfeed.tech/tags/multiplayer.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [screen](<https://devfeed.tech/tags/screen.md>)

### AI overview

The New York Times Games team describes building the Android game board for Crossplay, a multiplayer word game with a 15x15 grid, draggable tiles, real-time animation, and asynchronous matches. The team used a hybrid architecture: an Android GridLayout with 225 tile Views integrated into surrounding Jetpack Compose UI.

### Source excerpt

How We Made a 15X15 Game Surface Feel at Home on AndriodIllustration by Lehel Kovács By Shafik Quoraishee What Is Crossplay? The New York Times Games team has been building daily puzzles for quite a while: Wordle, Spelling Bee, Connections, The Mini. These are solo games. The player opens them, solves them, and then closes them. This leads to a simple, satisfying experience which delights millions of players a day. Crossplay is an altogether different endeavor. It's the first multiplayer game from NYT Games, and it brings a friend (or a stranger) into the experience with them. So two players, one board, in real time. In Crossplay, players take turns placing letter tiles on a 15x15 grid to form interlocking words, but built for mobile with a focus on speed, fairness, and the back-and-forth tension that compels the player to play one more round. The matches are asynchronous by default. The player makes their move, the opponent gets notified and responds when they're ready. But the board animates as if the players are both sitting at the same table. When we set out to build it, we knew the board would be the hardest part. While the networking, the opponent matching, and the game logic were all challenging work, the board itself which is part of the core game loop was the most difficult piece because of the number of interactions required to make it function correctly, in concert. Since every cell is a potential drop target and every tile is draggable, the board needs to respond instantly to touch *and* animate their opponent's moves *as they happen*. This all must occur on a screen that is a few inches wide. In this post we discuss what it took to get that right on Android. Starting with the Grid One of our first questions was architectural. How should 225 tiles be laid out? Jetpack Compose is the obvious modern choice. But Crossplay's development started before our team had fully migrated to Compose, and the game board had specific requirements that made a pure-Compos

[Next page](<https://devfeed.tech/topics/jetpack-compose.md?cursor=WyIyMDI2LTA2LTA4VDE2OjQ2OjMwKzAwOjAwIiwgIjJiMTVhOTBlLTE5NDMtNDM4ZS04ZjI3LWJjNDdhNDQyNWY4MCJd>)