# Compose

Published articles for Compose.

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

## Android Studio Rabbit 2 Canary 1 now available

DevFeed: [Android Studio Rabbit 2 Canary 1 now available](<https://devfeed.tech/articles/android-studio-rabbit-2-canary-1-now-available-41447.md>)

Original publisher: [Read original article](<https://androidstudio.googleblog.com/2026/09/android-studio-rabbit-2-canary-1-now.html>)

Author: Android Studio Releaser (noreply@blogger.com)

Published: 2026-09-17T17:07:57Z

Content type: release

Language: en

Sources: [Android Studio Release Updates](<https://devfeed.tech/sources/android-studio-release-updates.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android](<https://devfeed.tech/topics/android.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bug](<https://devfeed.tech/tags/bug.md>), [cli](<https://devfeed.tech/tags/cli.md>), [compose](<https://devfeed.tech/tags/compose.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>)

### AI overview

Android Studio Rabbit 2 Canary 1 is available in the Canary channel, with general fixes and features across Android CLI, Android Gradle Plugin, code editing, Compose Preview, Gemini, and Gradle integration.

### Source excerpt

Android Studio Rabbit 2 Canary 1 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise, you can download it here. For information on new features and changes in Android Studio Rabbit 2, see the Android Studio Preview release notes. General fixes and features Below is a list of general fixes in Android Studio Rabbit 2 Canary 1 and Android Gradle Plugin 9.5.0-alpha06. These are a result of your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. You can also vote for an existing issue to indicate that it also affects you. Fixed Issues Android CLI Issue #528094657 android studio find-usages: a bare symbol resolves to a single declaration with no caller control, causing both over-reporting (common names) and silent under-reporting (name collisions) Issue #559567813 android-cli leaves accumulating lib-downloader_jni-*.dll files in %TEMP% on Windows Android Gradle Plugin Issue #549072996 KMP AndroidX sources are not downloaded without a separate non-KMP module Issue #560282299 The Configuration.setVisible(boolean) method has been deprecated Issue #556343682 AGP 9.3.0's new optimization { enable = true } DSL does not set isMinifyEnabled in the ApplicationVariant object Code Editor Issue #553120510 Android Studio freezes every time Compose Preview Issue #295351352 Compose device previews don't work in studio Gemini Issue #555875043 An internal error has occurred in Agent Gradle Integration Issue #558766788 AGP 9.4.0: running a single method of a JUnit4 Parameterized instrumented test from Android Studio runs 0 tests (tests_regex "\[.*\]" loses backslashes in device shell) Issue #556780790 connectedAndroidTest always fails on `adb connect host:port` devices -- device id is percent-encoded before the per-device pass/fail lookup Preview Issue

## Релиз OpenIDE 2026.2: одна IDE для Java, Kotlin, Go, Python и веб-разработки

DevFeed: [Релиз OpenIDE 2026.2: одна IDE для Java, Kotlin, Go, Python и веб-разработки](<https://devfeed.tech/articles/openide-2026-2-ide-java-kotlin-go-python-40883.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/haulmont/news/1083296/>)

Author: honest\_niceman (Haulmont)

Published: 2026-09-17T09:12:16Z

Content type: release

Language: ru

Sources: [Tagir Valeev](<https://devfeed.tech/sources/tagir-valeev.md>)

Topics: [intellij-platform](<https://devfeed.tech/topics/intellij-platform.md>), [Java](<https://devfeed.tech/topics/java.md>), [Git](<https://devfeed.tech/topics/git.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Go](<https://devfeed.tech/topics/go.md>), [Python](<https://devfeed.tech/topics/python.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [2](<https://devfeed.tech/tags/2.md>), [2026](<https://devfeed.tech/tags/2026.md>), [2026-2](<https://devfeed.tech/tags/2026-2.md>), [compose](<https://devfeed.tech/tags/compose.md>), [db-eaa4bca15522](<https://devfeed.tech/tags/db-eaa4bca15522.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-bdf52bf499c4](<https://devfeed.tech/tags/docker-bdf52bf499c4.md>), [git](<https://devfeed.tech/tags/git.md>), [go](<https://devfeed.tech/tags/go.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ide-1f5689fe989b](<https://devfeed.tech/tags/ide-1f5689fe989b.md>), [ide-af948443b041](<https://devfeed.tech/tags/ide-af948443b041.md>), [ide-java-0ad4946a0e57](<https://devfeed.tech/tags/ide-java-0ad4946a0e57.md>), [intellij-idea-27f15aabb340](<https://devfeed.tech/tags/intellij-idea-27f15aabb340.md>), [intellij-platform](<https://devfeed.tech/tags/intellij-platform.md>), [java](<https://devfeed.tech/tags/java.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [openide](<https://devfeed.tech/tags/openide.md>), [openide-2026-2](<https://devfeed.tech/tags/openide-2026-2.md>), [openide-pro](<https://devfeed.tech/tags/openide-pro.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [sql](<https://devfeed.tech/tags/sql.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

OpenIDE 2026.2 updates its base platform, expands Java and Kotlin support, improves Git and Gradle workflows, and updates its Java profiler. The release also includes improvements to the DB client and Docker plugin, including SQL formatting, Greenplum support, JSON highlighting, and enhanced Compose service management.

### Source excerpt

Обновили базовую платформу до версии 2026.2, расширили поддержку Java и Kotlin, улучшили работу с Git и обновили Java-профилировщик. Доработали редактор и подсказки в терминале, добавили проверки настроек Gradle и упростили переход к исходникам библиотек. Через Git worktrees теперь можно работать с несколькими ветками одновременно. Читать далее

## New in Symfony 8.2: Console sub-commands

DevFeed: [New in Symfony 8.2: Console sub-commands](<https://devfeed.tech/articles/new-in-symfony-8-2-console-sub-commands-30914.md>)

Original publisher: [Read original article](<https://symfony.com/blog/new-in-symfony-8-2-console-sub-commands>)

Author: Javier Eguiluz

Published: 2026-09-16T07:33:00Z

Content type: release

Language: en

Sources: [Symfony Blog](<https://devfeed.tech/sources/symfony-blog.md>)

Topics: [Symfony](<https://devfeed.tech/topics/symfony.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [commands](<https://devfeed.tech/tags/commands.md>), [compose](<https://devfeed.tech/tags/compose.md>), [console](<https://devfeed.tech/tags/console.md>), [docker-compose](<https://devfeed.tech/tags/docker-compose.md>), [git](<https://devfeed.tech/tags/git.md>), [symfony](<https://devfeed.tech/tags/symfony.md>)

### AI overview

Symfony 8.2 adds spaced console sub-commands, allowing command names to form a tree whose levels parse their own options. The update also supports tree-aware help, completion, argument handling, command-chain access, testing, and defining command trees in a single class.

### Source excerpt

Symfony console applications group their commands with colon-separated namespaces, such as cache:clear or messenger:consume. Tools like Docker and Git use a different style: spaces separate the levels (docker compose up) and each level parses its own options....

## The Thumb That Ran Ahead of the Finger: Anatomy of a Compose Slider Bug

DevFeed: [The Thumb That Ran Ahead of the Finger: Anatomy of a Compose Slider Bug](<https://devfeed.tech/articles/the-thumb-that-ran-ahead-of-the-finger-anatomy-of-a-compose-slider-bug-22952.md>)

Original publisher: [Read original article](<https://proandroiddev.com/the-thumb-that-ran-ahead-of-the-finger-anatomy-of-a-compose-slider-bug-ddec306251d0?source=rss----c72404660798---4>)

Author: Vitaliy Gribko

Published: 2026-09-14T04:19:34Z

Content type: article

Language: en

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

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [qa](<https://devfeed.tech/tags/qa.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This article examines a deterministic bug in a custom Compose slider where the thumb moves ahead of the user's finger during a drag. It traces the issue to a design-system slider forked from the AOSP Material implementation and discusses debugging and code simplification.

### Source excerpt

A bug report sat in the backlog for seven months. The fix took a day, deleted a third of the slider's logic, and was almost shipped with a second bug inside -- until a machine read my diff better than I did. This is the whole story: the ported behavior that never made sense, the race nobody reported, and why the best fixes remove code. The report The bug report was seven months old when it reached me. A QA engineer had filed it in December, with a screen recording and three steps: Open the people search filters. Grab the right-hand thumb of the age range slider. Drag it slowly to the left. The recording showed the problem in two seconds. The thumb does not follow the finger. It sprints ahead -- you are still crossing the gap between two ticks, and the thumb is already standing on the next one, waiting for you, like a dog that runs to the park while you are still tying your shoes. Expected: the thumb moves with the finger. Actual: it escapes. On a budget phone, on two Android versions, every time. Not a race condition, not a flake -- a perfectly deterministic lie, filmed in December, assigned to a fix-day in July. Seven months is not negligence. It is the natural half-life of a visual glitch filed as minor against a screen nobody dies on. The age filter works. You tap a tick, the value applies. Only the drag -- the one gesture the slider exists for -- feels wrong in a way that is hard to screenshot and easy to deprioritize. When the ticket finally landed on my desk, a colleague glanced at it and asked whether it had already been fixed once. It had not. But I understood his confusion later, when I opened the slider's source and found a comment that explained everything -- including why this bug felt so old. The comment that confessed The slider is not the framework's slider. Our design system ships its own Compose slider, forked from the AOSP Material one, because design needed three knobs the framework does not expose: a custom thumb radius, a custom track height, a differ

## Android Weekly Issue #744

DevFeed: [Android Weekly Issue #744](<https://devfeed.tech/articles/android-weekly-issue-744-22735.md>)

Original publisher: [Read original article](<https://androidweekly.net/issues/issue-744/rss.xml>)

Published: 2026-09-13T16:28:25Z

Content type: article

Language: en

Sources: [Android Weekly](<https://devfeed.tech/sources/android-weekly.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Development](<https://devfeed.tech/topics/development.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Rive animation](<https://devfeed.tech/topics/rive-animation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developers](<https://devfeed.tech/tags/developers.md>), [lottie](<https://devfeed.tech/tags/lottie.md>), [net-11-preview-7](<https://devfeed.tech/tags/net-11-preview-7.md>), [offline-speech-recognition](<https://devfeed.tech/tags/offline-speech-recognition.md>), [rive](<https://devfeed.tech/tags/rive.md>), [speech](<https://devfeed.tech/tags/speech.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

Android Weekly Issue #744 is a developer digest covering Android architecture and AI, annotation-based DSL APIs, animated paywalls, offline speech recognition in keyboards, Compose dialog blurring, and structural hot reload across Android, iOS, and desktop.

### Source excerpt

Articles & Tutorials Sponsored Pushwoosh launches a new Push-only plan Stop overpaying for push notifications. Get powerful push infrastructure for $7 per 1,000 MAU, with high-speed delivery, 99.9% push-to-gateway delivery, migration support, and a 24-month price lock. Calculate your savings. Android's AI Era: Hype vs. Architecture Thomas Künneth examines Android's AppFunctions architecture and agent distribution claims behind Google's "intelligent system" framing. Two Racing Lines: Annotations and the DSL in NetFlow 0.7.0 KMP Bits explains adding an annotation-based API layer atop NetFlow's DSL, keeping compile-time-checked mapping and paging support intact. Sponsored How many app issues fell off your radar this week? Mobile teams deal with a firehose of incoming issues: regressions from QA, beta feedback, Play Store reviews, crashes, etc. AI code makes managing this even harder. Triage by Runway pulls every issue into one inbox, de-dupes, assigns, and tracks fixes so nothing is missed. See how it works. Adding Rive and Lottie Animations to Android Paywalls Jaewoong Eum explains building custom Rive and Lottie animated components for RevenueCat's server-driven Android paywalls. I Put Speech Recognition Inside an Android Keyboard. Here's What Broke. Farhad Ranjbar explores the architecture challenges of building an offline speech-recognition engine inside an Android keyboard. How to blur what's behind a Compose dialog, down to API 23 Timofey Krestyanov explains blurring content behind a Compose dialog across window boundaries, down to API 23. Compose HotSwan 2.0.0: The Future of Hot Reload on Android, iOS, and Desktop Jaewoong Eum introduces Compose HotSwan 2.0's own interpreter engine, enabling structural hot reload across Android, iOS, and Desktop. Place a sponsored post Advertise to more than 80k Android developers! Advertise your Android development related service or product! We reach out to more than 80k Android developers around the world, every week, through

## Android Studio Rabbit 1 Canary 5 now available

DevFeed: [Android Studio Rabbit 1 Canary 5 now available](<https://devfeed.tech/articles/android-studio-rabbit-1-canary-5-now-available-26339.md>)

Original publisher: [Read original article](<https://androidstudio.googleblog.com/2026/09/android-studio-rabbit-1-canary-5-now.html>)

Author: Android Studio Releaser (noreply@blogger.com)

Published: 2026-09-10T18:22:41Z

Content type: release

Language: en

Sources: [Android Studio Release Updates](<https://devfeed.tech/sources/android-studio-release-updates.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bug](<https://devfeed.tech/tags/bug.md>), [compose](<https://devfeed.tech/tags/compose.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>)

### AI overview

Android Studio Rabbit 1 Canary 5 is available in the Canary channel. The release includes general fixes for Android Studio Rabbit 1 and Android Gradle Plugin 9.5.0-alpha05, including fixes affecting Compose Preview, Gemini, layout and resource editing, the Resource Manager, and UI tools.

### Source excerpt

Android Studio Rabbit 1 Canary 5 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise, you can download it here. For information on new features and changes in Android Studio Rabbit 1, see the Android Studio Preview release notes. For details of bugs fixed in each previous release of Android Studio Rabbit 1, see closed issues. General fixes and features Below is a list of general fixes in Android Studio Rabbit 1 Canary 5 and Android Gradle Plugin 9.5.0-alpha05. These are a result of your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. You can also vote for an existing issue to indicate that it also affects you. Fixed Issues Compose Preview Issue #364917767 PreviewParameterProvider is nested inside another class Issue #290658441 Zooming in Compose preview view simultaneously scrolls up Issue #219764006 "@Preview not top-level declaration" lint doesn't work if defined in companion object object Issue #389194647 Show redundant action bar in Compose Preview Gemini Issue #556950521 UI issue w local Agent: 👎 & 👍 appear to send private data unexpectedly when using local models Layout and Resource Editing Issue #79968470 Show an error in the editor when using an incorrect attribute Preview Issue #537472290 Incorrect values of fontScale parameter in dropdown menu Resource Manager Issue #161054670 Bug: Android Studio can't view animated GIF and can't convert to animated WEBP UI Tools Issue #440650750 Vector Asset Studio: Clip Art icons not appearing until icons_metadata.txt is manually deleted

## Migrating Shop app from React Native to native

DevFeed: [Migrating Shop app from React Native to native](<https://devfeed.tech/articles/migrating-shop-app-from-react-native-to-native-1583.md>)

Original publisher: [Read original article](<https://shopify.engineering/shop-app-migration>)

Author: Max Da Silva

Published: 2026-09-10T12:27:06Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Shopify describes migrating the Shop app from React Native to native Swift and Kotlin development. Coding agents supported a proof of concept and the subsequent rebuild while the team aimed to preserve feature behavior and analytics events.

### Source excerpt

We migrated the Shop app from React Native to Swift and Kotlin. Assisted by AI, the team was able to go from a proof of concept to a fully rebuilt native app published in the app stores in just 12 weeks.

## September 09, 2026

DevFeed: [September 09, 2026](<https://devfeed.tech/articles/september-09-2026-22736.md>)

Original publisher: [Read original article](<https://developer.android.com/jetpack/androidx/versions/all-channel>)

Published: 2026-09-09T17:00:00Z

Content type: release

Language: en

Sources: [AndroidX Release Notes](<https://devfeed.tech/sources/androidx-release-notes.md>)

Topics: [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [latest-release](<https://devfeed.tech/tags/latest-release.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [room](<https://devfeed.tech/tags/room.md>), [security](<https://devfeed.tech/tags/security.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [tracing](<https://devfeed.tech/tags/tracing.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This Android developer page lists AndroidX library components across four release channels and provides recent release dates and version information. It also links to component release histories, archived release notes, and the current versions page.

### Source excerpt

Activity Version 1.14.0-alpha02 Annotation Version 1.11.0-rc01 Benchmark Version 1.5.0 Car App Version 1.9.0-alpha02 Collection Version 1.7.0-alpha01 Compose Animation Version 1.12.1 Compose Animation Version 1.13.0-alpha03 Compose Foundation Version 1.12.1 Compose Foundation Version 1.13.0-alpha03 Compose Material Version 1.12.1 Compose Material Version 1.13.0-alpha03 Compose Material3 Version 1.5.0-alpha28 Compose Material3 Adaptive Version 1.4.0-alpha02 Compose Remote Version 1.0.0-alpha19 Compose Remote Foundation Version 1.0.0-alpha02 Compose Runtime Version 1.12.1 Compose Runtime Version 1.13.0-alpha03 Compose Ui Version 1.12.1 Compose Ui Version 1.13.0-alpha03 Core Uwb Version 1.1.0-alpha02 Credentials Providerevents Version 1.0.0-beta01 Datastore Version 1.3.0-alpha11 Emoji2 Version 1.7.0-rc01 Glance Adaptive Version 1.0.0-alpha02 Glance Wear Version 1.0.0-alpha18 Heifwriter Version 1.2.0-alpha02 Ink Version 1.1.0-alpha08 Lifecycle Version 2.12.0-alpha03 Mediarouter Version 1.9.0-alpha02 Navigation Version 2.10.1 Navigation3 Version 1.2.0-rc01 Room Version 2.8.5 Room3 Version 3.0.3 Room3 Version 3.1.0-alpha01 Savedstate Version 1.6.0-alpha03 Security Version 1.0.0 Security Version 1.1.0 Sqlite Version 2.7.1 Sqlite Version 2.8.0-alpha01 Tracing Version 2.0.2 Wear Compose Version 1.7.0-rc01 Wear Compose Remote Version 1.0.0-alpha11 Webkit Version 1.18.0-alpha01 Xr Arcore Version 1.0.0-rc01 Xr Glimmer Version 1.0.0-alpha19 Xr Projected Version 1.0.0-alpha12 Xr Runtime Version 1.0.0-rc01 Xr Runtime Version 1.1.0-alpha01 Xr Scenecore Version 1.0.0-rc01

## 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

## Introducing worker topologies for self-hosted Appwrite

DevFeed: [Introducing worker topologies for self-hosted Appwrite](<https://devfeed.tech/articles/introducing-worker-topologies-for-self-hosted-appwrite-16446.md>)

Original publisher: [Read original article](<https://appwrite.io/blog/post/announcing-worker-topologies>)

Author: Atharva Deosthale

Published: 2026-09-07T00:00:00Z

Content type: release

Language: en

Sources: [Appwrite Blog](<https://devfeed.tech/sources/appwrite-blog.md>)

Topics: [Appwrite](<https://devfeed.tech/topics/appwrite.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>)

Tags: [announcements](<https://devfeed.tech/tags/announcements.md>), [compose](<https://devfeed.tech/tags/compose.md>), [container](<https://devfeed.tech/tags/container.md>), [containers](<https://devfeed.tech/tags/containers.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>)

### AI overview

Appwrite introduces two worker topologies for self-hosted instances. The combined topology is now the default and runs background work in two containers, while the separate topology preserves one container per queue and scheduler for installations needing independent scaling or resource controls.

### Source excerpt

Self-hosted Appwrite now runs all background workers in a single container by default. Learn how the combined topology works and when to scale out with separate workers.

## Self-Hosted Platform Build Order: Dependencies from Bare Metal to Model Serving

DevFeed: [Self-Hosted Platform Build Order: Dependencies from Bare Metal to Model Serving](<https://devfeed.tech/articles/the-whole-estate-in-one-article-how-every-layer-fits-together-34108.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/meta-infrastructure-overview/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-09-04T07:00:00Z

Content type: article

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [ceph](<https://devfeed.tech/topics/ceph.md>), [observability](<https://devfeed.tech/topics/observability.md>), [model-serving](<https://devfeed.tech/topics/model-serving.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [article](<https://devfeed.tech/tags/article.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [compose](<https://devfeed.tech/tags/compose.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [model-serving](<https://devfeed.tech/tags/model-serving.md>), [observability](<https://devfeed.tech/tags/observability.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>)

### AI overview

This article explains the dependency order for building a self-hosted platform. It covers consistent bare-metal inventory, Ansible configuration convergence, networking, Kubernetes, Ceph storage, identity, observability, and model serving.

### Source excerpt

Self-hosted platform build order: why mesh, cluster, Ceph storage, identity and observability must precede model serving, shown with Compose depends_on.

## jetc.dev Newsletter Issue #329

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Android](<https://devfeed.tech/topics/android.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [html](<https://devfeed.tech/tags/html.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This newsletter issue reviews recent Jetpack Compose ecosystem updates, including the stable Compose Multiplatform release, new Remote Compose and Glance artifact groups, Compose Material3 changes, Navigation 3 beta updates, and related Android and Wear releases. It also covers cross-platform page curls, streaming Kotlinx HTML via Molecule, and screenshot prevention on Android and iOS.

### Source excerpt

Compose Multiplatform `1.12.0`! New Remote Compose and Glance artifact groups! Cross-platform page curls! Streaming Kotlinx HTML via Molecule! Prevent screenshots! And... what does Material3 have against the rich?!?

## Top Projects for Advanced Compose 2026

DevFeed: [Top Projects for Advanced Compose 2026](<https://devfeed.tech/articles/top-projects-for-advanced-compose-2026-39383.md>)

Original publisher: [Read original article](<https://kt.academy/article/top-projects-compose-2026>)

Published: 2026-08-31T00:00:00Z

Content type: article

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [advanced](<https://devfeed.tech/tags/advanced.md>), [compose](<https://devfeed.tech/tags/compose.md>), [projects](<https://devfeed.tech/tags/projects.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

An overview of projects for the Advanced Compose and Polished Compose courses in 2026.

### Source excerpt

Overview of the best projects for Advanced Compose and Polished Compose course in 2026

## Android Studio Rabbit 1 Canary 3 now available

DevFeed: [Android Studio Rabbit 1 Canary 3 now available](<https://devfeed.tech/articles/android-studio-rabbit-1-canary-3-now-available-26336.md>)

Original publisher: [Read original article](<https://androidstudio.googleblog.com/2026/08/android-studio-rabbit-1-canary-3-now.html>)

Author: Android Studio Releaser (noreply@blogger.com)

Published: 2026-08-27T13:26:09Z

Content type: release

Language: en

Sources: [Android Studio Release Updates](<https://devfeed.tech/sources/android-studio-release-updates.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bug](<https://devfeed.tech/tags/bug.md>), [compose](<https://devfeed.tech/tags/compose.md>), [preview](<https://devfeed.tech/tags/preview.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Android Studio Rabbit 1 Canary 3 is available in the Canary channel. The release includes general fixes for Android Studio Rabbit 1 and Android Gradle Plugin 9.5.0-alpha03, along with fixes for reported issues across several development tools and features.

### Source excerpt

Android Studio Rabbit 1 Canary 3 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise, you can download it here. For information on new features and changes in Android Studio Rabbit 1, see the Android Studio Preview release notes. For details of bugs fixed in each previous release of Android Studio Rabbit 1, see closed issues. General fixes and features Below is a list of general fixes in Android Studio Rabbit 1 Canary 3 and Android Gradle Plugin 9.5.0-alpha03. These are a result of your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. You can also vote for an existing issue to indicate that it also affects you. Fixed Issues Android Gradle Plugin Issue #550220873 AGP 9.2.0 regression: `LibraryExtension.getSourceSets()` is typed on an interface the source-set implementation no longer implements, causing ClassCastException Issue #548314106 CommonExtension.resourcePrefix has incomplete docs Compose Preview Screenshot Testing Issue #539672113 Compose Preview Screenshot Testing: false "Cyclic style parent definitions" error for a dotted-name style with explicit parent="" CPU Issue #549911097 Trace File was not parsed Device Manager Issue #541776384 Device Manager: "Add a new device..." link throws IllegalArgumentException and does nothing when the tool window toolbar is hidden Gemini Issue #549864592 Invalid StreamExperience Request. Violations: contents[18].parts[0].text: Text part must not be empty. Profilers Issue #545999552 Mouse cursor not showing full symbol name when you hover over them in Profiler's Stack Sample

## Using snapshot tests to prevent accessibility regressions in a Jetpack Compose Android app

DevFeed: [Using snapshot tests to prevent accessibility regressions in a Jetpack Compose Android app](<https://devfeed.tech/articles/qa-24887.md>)

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

Author: ithersta (Яндекс)

Published: 2026-08-27T07:05:12Z

Content type: tutorial

Language: ru

Sources: [Яндекс - Как мы делаем Яндекс / Статьи](<https://devfeed.tech/sources/source.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [яндекс](<https://devfeed.tech/topics/tag-4004cf5948d3.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [qa](<https://devfeed.tech/tags/qa.md>), [tag-4004cf5948d3](<https://devfeed.tech/tags/tag-4004cf5948d3.md>), [tag-e69b694e3ce2](<https://devfeed.tech/tags/tag-e69b694e3ce2.md>), [tag-f538878e20ff](<https://devfeed.tech/tags/tag-f538878e20ff.md>)

### AI overview

The article explains how the Yandex Mail Android team uses snapshot tests with Jetpack Compose to detect accessibility regressions. It describes Compose semantics, TalkBack, and why manual accessibility checks are insufficient as screens and shared components grow.

### Source excerpt

Почта -- массовый продукт, которым пользуются самые разные люди, и поэтому он должен быть максимально доступен. Нам важно, чтобы приложение Яндекс Почты было удобно каждому, в том числе людям с особенностями зрения. На телефонах с Android за доступность для людей с особенностями зрения отвечает TalkBack -- функция озвучивания экрана, которая зачитывает текст, роль и состояние всех размеченных элементов на экране и позволяет с ними взаимодействовать. Если разметка сломается, приложением будет пользоваться сильно сложнее или вообще невозможно. Читать далее

## 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

## Compose & kotlinx.html

DevFeed: [Compose & kotlinx.html](<https://devfeed.tech/articles/compose-kotlinx-html-20925.md>)

Original publisher: [Read original article](<https://jakewharton.com/compose-and-kotlinx-html/>)

Published: 2026-08-26T00:00:00Z

Content type: article

Language: en

Sources: [Jake Wharton](<https://devfeed.tech/sources/jake-wharton.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [HTML](<https://devfeed.tech/topics/html.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [ui](<https://devfeed.tech/topics/ui.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [compose](<https://devfeed.tech/tags/compose.md>), [html](<https://devfeed.tech/tags/html.md>), [sse](<https://devfeed.tech/tags/sse.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web](<https://devfeed.tech/tags/web.md>), [websocket](<https://devfeed.tech/tags/websocket.md>)

### AI overview

The article presents an approach for keeping server-rendered HTML admin pages fresh without abandoning static HTML. It uses Molecule on the JVM to observe state, kotlinx.html to render HTML fragments, Ktor to stream updates over WebSockets, and client-side JavaScript with Idiomorph to patch the DOM. It also discusses using server-sent events for unidirectional updates and the scalability tradeoffs of long-lived connections.

### Source excerpt

Let's render a simple page with Ktor server and kotlinx.html: get("/users.html") { call.respondHtml { myLayout(title = "Users") { userList( users = db.users.value, ) } } } A reusable myLayout provides scaffolding, userList encapsulates the specific page content, and db.users is a StateFlow<List<User>> from the persistence layer. I've been doing this over and over to create admin dashboard pages for a project. It works great right up until you leave it open for a minute or two, and its content becomes stale. Client-side frameworks exist within the ecosystem to "solve" this, such as Compose for HTML or Compose UI for Web. If your house has a leaky pipe you can also "solve" that by moving to a new house. I simply will not bring myself to abandoning HTML let alone delivery of static HTML in the response. Efforts are underway to adapt Compose for HTML for so-called isomorphic rendering. This would involve performing the initial composition on the server to produce the static HTML for the HTTP response. Then, client side as JS, mounting the same rendering code to reproduce the DOM tree and incrementally update it for future state changes. Tomorrow's Compose today Instead of waiting, I brought my own Compose on the JVM from home in the form of Molecule. Instead of managing a UI tree over time, Molecule manages a single piece of state over time. We can use that to render an HTML fragment on the server as a string, and then stream that to the client. webSocket("/users.ws") { launchMolecule(Immediate) { val users by db.users.collectAsState() createHTML().userList( users = users, ) }.collect(::send) } That's it. Ktor gives us the webSocket, Molecule runs the StateFlow<String> which is piped into it, and kotlinx.html renders the HTML fragment of our existing content function. In the initial HTML payload you need to wire this up somehow. Something like: script { unsafe { +""" |const content = document.getElementById("content"); |const socket = new WebSocket("ws://" + location.ho

## API Mocking and Testing With Microcks

DevFeed: [API Mocking and Testing With Microcks](<https://devfeed.tech/articles/api-mocking-and-testing-with-microcks-4497.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-microks-api-mocking-testing>)

Author: Andrei Branza

Published: 2026-08-22T23:20:24Z

Content type: tutorial

Language: en

Sources: [Baeldung](<https://devfeed.tech/sources/baeldung.md>)

Topics: [Mocking](<https://devfeed.tech/topics/mocking.md>), [Testcontainers](<https://devfeed.tech/topics/testcontainers.md>), [API](<https://devfeed.tech/topics/api.md>), [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [compose](<https://devfeed.tech/tags/compose.md>), [docker](<https://devfeed.tech/tags/docker.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [popular](<https://devfeed.tech/tags/popular.md>), [testcontainers](<https://devfeed.tech/tags/testcontainers.md>), [testing](<https://devfeed.tech/tags/testing.md>), [testing-popular-testcontainers](<https://devfeed.tech/tags/testing-popular-testcontainers.md>)

### AI overview

This tutorial explains how to use Microcks with Testcontainers to generate API mocks from contracts and run conformance tests against real implementations. It covers importing an OpenAPI contract, starting Microcks in a JUnit 5 test, calling generated mock endpoints, and integrating mocking and testing into delivery workflows.

### Source excerpt

Learn how to use Testcontainers integration to spin up Microcks inside a JUnit5 test. The post API Mocking and Testing With Microcks first appeared on Baeldung.

## Android Studio Rabbit 1 Canary 2 now available

DevFeed: [Android Studio Rabbit 1 Canary 2 now available](<https://devfeed.tech/articles/android-studio-rabbit-1-canary-2-now-available-26335.md>)

Original publisher: [Read original article](<https://androidstudio.googleblog.com/2026/08/android-studio-rabbit-1-canary-2-now.html>)

Author: Android Studio Releaser (noreply@blogger.com)

Published: 2026-08-20T13:34:55Z

Content type: release

Language: en

Sources: [Android Studio Release Updates](<https://devfeed.tech/sources/android-studio-release-updates.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bug](<https://devfeed.tech/tags/bug.md>), [compose](<https://devfeed.tech/tags/compose.md>), [json](<https://devfeed.tech/tags/json.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [preview](<https://devfeed.tech/tags/preview.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>)

### AI overview

Android Studio Rabbit 1 Canary 2 is available in the Canary channel. The release includes general fixes in Android Studio and Android Gradle Plugin 9.5.0-alpha02, including fixes related to Baseline Profiles, Lint JSON generation, Compose Preview, and connected devices.

### Source excerpt

Android Studio Rabbit 1 Canary 2 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise, you can download it here. For information on new features and changes in Android Studio Rabbit 1, see the Android Studio Preview release notes. For details of bugs fixed in each previous release of Android Studio Rabbit 1, see closed issues. General fixes and features Below is a list of general fixes in Android Studio Rabbit 1 Canary 2 and Android Gradle Plugin 9.5.0-alpha02. These are a result of your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. You can also vote for an existing issue to indicate that it also affects you. Fixed Issues Baseline Profiles & ProfileInstaller Issue #543799367 Baseline profile is pulled off the device but never registered in test-result.pb, so collectBaselineProfile finds nothing and copyBaselineProfileIntoSrc deletes the committed profile Lint Issue #546124524 AGP's SarifReporter generates invalid JSON when LintFix has an ending alternative that produces no edits Preview Issue #545671285 [Compose Preview] Code/Split/Design tabs missing in Kotlin files with @Preview annotation in Android Studio Quail 3 Patch 1 Running Devices Issue #546841017 Bug: IDE has various issues with connected device, including installation and mirroring, despite all signs showing otherwise

## Jetpack XR SDK core libraries reach beta: The next milestone for Android XR

DevFeed: [Jetpack XR SDK core libraries reach beta: The next milestone for Android XR](<https://devfeed.tech/articles/jetpack-xr-sdk-core-libraries-reach-beta-the-next-milestone-for-android-xr-22694.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/jetpack-xr-sdk-core-libraries-beta.html>)

Author: Android Developers (noreply@blogger.com)

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

Content type: release

Language: en

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

Topics: [Jetpack XR SDK](<https://devfeed.tech/topics/jetpack-xr-sdk.md>), [Android XR](<https://devfeed.tech/topics/android-xr.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [android-xr](<https://devfeed.tech/tags/android-xr.md>), [beta-announcement](<https://devfeed.tech/tags/beta-announcement.md>), [compose](<https://devfeed.tech/tags/compose.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-xr-sdk](<https://devfeed.tech/tags/jetpack-xr-sdk.md>), [preview](<https://devfeed.tech/tags/preview.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

Google announces that Jetpack SceneCore, ARCore for Jetpack XR, and XR Runtime have reached beta as part of the Jetpack XR SDK. The release stabilizes APIs for Android XR development, while Jetpack Compose for XR is expected to reach beta soon.

### Source excerpt

Posted by Amy Zeppenfeld, Developer Relations Engineer, Greg Underwood, Software Engineering Manager, Yasmine Evjen, Senior Product Manager, Android XR Since introducing the Android XR SDK, developers have transformed their ideas into innovative, immersive experiences for XR headsets and wired XR glasses. As the ecosystem expands, you can more easily take those experiences from preview to production and reach users wherever they are. Today, we're excited to announce that Jetpack SceneCore, ARCore for Jetpack XR, and XR Runtime have reached beta with Jetpack Compose for XR to follow soon! This means the APIs are stabilizing, making it a great time to start integrating them into your production workflows and creating for Android XR. Why the Jetpack XR SDK? The Jetpack XR SDK includes all the tools and libraries you need to build immersive and augmented experiences for Android XR. Whether you're porting an existing 2D app or creating a new 3D XR app from scratch, you can do so using the familiar Android development tools you already know and love. To support your development, this release focuses on providing the fundamental building blocks across the SDK: Jetpack SceneCore: Build and manipulate the Android XR scene graph with 3D content. You can arrange 3D models, play spatial audio, and use the robust entity-component system to create, control, and manage entities. ARCore for Jetpack XR: Bring digital content into the real world with perception capabilities. This library powers depth estimation, persistent anchors, hit testing, and plane identification. XR Runtime: Provides the essential runtime foundation of the SDK, handling device lifecycles, session creation, and system configurations that enable the API surface. Jetpack Compose for XR: Create spatial UI layouts that take advantage of Android XR's spatial capabilities. This library lets you use familiar Compose concepts to create spatial UIs and will be reaching Beta soon. What's new in Beta? Direct feedback from

## Jetpack XR SDK core libraries reach beta: The next milestone for Android XR

DevFeed: [Jetpack XR SDK core libraries reach beta: The next milestone for Android XR](<https://devfeed.tech/articles/jetpack-xr-sdk-core-libraries-reach-beta-the-next-milestone-for-android-xr-4237.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/08/jetpack-xr-sdk-core-libraries-beta.html>)

Author: Android Developers (noreply@blogger.com)

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

Content type: release

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: [SDKs](<https://devfeed.tech/topics/sdks.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [android-xr](<https://devfeed.tech/tags/android-xr.md>), [beta-announcement](<https://devfeed.tech/tags/beta-announcement.md>), [compose](<https://devfeed.tech/tags/compose.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-xr-sdk](<https://devfeed.tech/tags/jetpack-xr-sdk.md>), [release](<https://devfeed.tech/tags/release.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Jetpack SceneCore, ARCore for Jetpack XR, and XR Runtime have reached beta. The article describes their roles in building immersive and augmented Android XR apps and directs developers to add the latest XR libraries to Gradle projects.

### Source excerpt

Posted by Amy Zeppenfeld, Developer Relations Engineer, Greg Underwood, Software Engineering Manager, Yasmine Evjen, Senior Product Manager, Android XR Since introducing the Android XR SDK, developers have transformed their ideas into innovative, immersive experiences for XR headsets and wired XR glasses. As the ecosystem expands, you can more easily take those experiences from preview to production and reach users wherever they are. Today, we're excited to announce that Jetpack SceneCore, ARCore for Jetpack XR, and XR Runtime have reached beta with Jetpack Compose for XR to follow soon! This means the APIs are stabilizing, making it a great time to start integrating them into your production workflows and creating for Android XR. Why the Jetpack XR SDK? The Jetpack XR SDK includes all the tools and libraries you need to build immersive and augmented experiences for Android XR. Whether you're porting an existing 2D app or creating a new 3D XR app from scratch, you can do so using the familiar Android development tools you already know and love. To support your development, this release focuses on providing the fundamental building blocks across the SDK: Jetpack SceneCore: Build and manipulate the Android XR scene graph with 3D content. You can arrange 3D models, play spatial audio, and use the robust entity-component system to create, control, and manage entities. ARCore for Jetpack XR: Bring digital content into the real world with perception capabilities. This library powers depth estimation, persistent anchors, hit testing, and plane identification. XR Runtime: Provides the essential runtime foundation of the SDK, handling device lifecycles, session creation, and system configurations that enable the API surface. Jetpack Compose for XR: Create spatial UI layouts that take advantage of Android XR's spatial capabilities. This library lets you use familiar Compose concepts to create spatial UIs and will be reaching Beta soon. What's new in Beta? Direct feedback from

## 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!

## Add the dependency graph to a Kotlin K2 migration checklist

DevFeed: [Add the dependency graph to a Kotlin K2 migration checklist](<https://devfeed.tech/articles/add-the-dependency-graph-to-a-kotlin-k2-migration-checklist-23961.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/k2-migration-injection-graphs/>)

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

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose](<https://devfeed.tech/tags/compose.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [graph](<https://devfeed.tech/tags/graph.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [rollback](<https://devfeed.tech/tags/rollback.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

A practical checklist for Kotlin K2 migrations in projects that generate or validate dependency wiring. It recommends mapping the compiler and build toolchain, upgrading from a known compatibility matrix, cleaning and inspecting generated output, verifying dependency graphs across flavors and targets, testing runtime slices, and keeping rollback changes coherent.

### Source excerpt

A K2 migration is usually planned around source compatibility and compiler diagnostics. Projects that generate or validate dependency wiring need another checklist: compiler plugin versions, generated sources, metadata compatibility, and graph verification on every target. Map the toolchain first Record the Kotlin plugin, Compose compiler plugin, KSP or annotation tooling, dependency-injection compiler plugin, Android Gradle plugin, and target libraries. Upgrade from a known matrix instead of selecting each latest version independently.

[Next page](<https://devfeed.tech/tags/compose.md?cursor=WyIyMDI2LTA4LTE4VDAwOjAwOjAwKzAwOjAwIiwgImZkMDVlYWY5LWExMDUtNDcxNC1hYTg1LTA5YWVjZDhlNmE0YyJd>)