# Kotlin

Published articles for Kotlin.

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

## Logpoints Walkthrough

DevFeed: [Logpoints Walkthrough](<https://devfeed.tech/articles/logpoints-walkthrough-31526.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/idea/2026/09/logpoints-walkthrough/>)

Author: Igor Kulakov

Published: 2026-09-16T14:14:04Z

Content type: tutorial

Language: en

Sources: [The JetBrains Blog](<https://devfeed.tech/sources/the-jetbrains-blog.md>)

Topics: [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [debug](<https://devfeed.tech/topics/debug.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>), [Java](<https://devfeed.tech/topics/java.md>), [2026.2](<https://devfeed.tech/topics/2026-2.md>)

Tags: [2026-2](<https://devfeed.tech/tags/2026-2.md>), [bug](<https://devfeed.tech/tags/bug.md>), [client](<https://devfeed.tech/tags/client.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [debug](<https://devfeed.tech/tags/debug.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [debugging-tools](<https://devfeed.tech/tags/debugging-tools.md>), [idea](<https://devfeed.tech/tags/idea.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [logpoints](<https://devfeed.tech/tags/logpoints.md>)

### AI overview

This walkthrough explains how to use logpoints in IntelliJ IDEA to investigate a bug in a gRPC client-server example that returns incorrect discount values. It covers reproducing the issue, attaching the debugger to the server, and observing program behavior without suspending execution, including improvements in IntelliJ IDEA 2026.2.

### Source excerpt

Modern development tools, especially IntelliJ IDEA, have such comprehensive debugging support that for virtually any niche use case, there is a specialized tool for the job. This can make it hard to know where to begin. If you are new to debugging tools and want the biggest return on your learning investment, the best feature [...]

## Shopify Drops React Native for Swift and Kotlin as AI Changes Cross-Platform Development Tradeoffs

DevFeed: [Shopify Drops React Native for Swift and Kotlin as AI Changes Cross-Platform Development Tradeoffs](<https://devfeed.tech/articles/shopify-drops-react-native-for-swift-and-kotlin-as-ai-changes-cross-platform-development-tradeoffs-30912.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/shopify-drops-react-native/>)

Author: Bruno Couriol

Published: 2026-09-16T12:45:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [AI Models](<https://devfeed.tech/topics/ai-models.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [android](<https://devfeed.tech/tags/android.md>), [apple](<https://devfeed.tech/tags/apple.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [development](<https://devfeed.tech/tags/development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [shopify-drops-react-native](<https://devfeed.tech/tags/shopify-drops-react-native.md>), [swift](<https://devfeed.tech/tags/swift.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

Shopify is rewriting its flagship mobile apps in Swift and Kotlin after reassessing React Native. The decision followed the expected work to adopt React Native's New Architecture and improvements in AI coding models, which Shopify said made a clean-slate native rewrite more attractive than migration.

### Source excerpt

Shopify recently announced it is abandoning React Native to rewrite its flagship apps in Swift and Kotlin. With the significant jump in the quality of AI models, Head of Mobile Mustafa Ali reassessed Shopify's commitment to React Native, estimating that the benefit/cost ratio of maintaining native codebases across mobile platforms was now above that of using an abstraction layer. By Bruno Couriol

## Kotlin on the server at Khan Academy

DevFeed: [Kotlin on the server at Khan Academy](<https://devfeed.tech/articles/kotlin-on-the-server-at-khan-academy-27389.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/kotlin-adoption.htm>)

Author: Khan Academy

Published: 2018-06-28T22:00:00Z

Content type: article

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Python](<https://devfeed.tech/topics/python.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [bigquery](<https://devfeed.tech/tags/bigquery.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google](<https://devfeed.tech/tags/google.md>), [http](<https://devfeed.tech/tags/http.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [news](<https://devfeed.tech/tags/news.md>), [python](<https://devfeed.tech/tags/python.md>), [server-side-development](<https://devfeed.tech/tags/server-side-development.md>)

### AI overview

Khan Academy describes testing Kotlin for user-facing server requests during a 2018 hackathon and deciding to adopt Kotlin as a second server-side language after reporting positive efficiency results and a positive developer experience.

### Source excerpt

By Colin Fuller At Khan Academy, we run our web application using Python 2.7 on Google's App Engine ... Read more

## Go + Services = One Goliath Project

DevFeed: [Go + Services = One Goliath Project](<https://devfeed.tech/articles/go-services-one-goliath-project-27378.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/goliath.htm>)

Author: Khan Academy

Published: 2019-12-20T23:00:00Z

Content type: opinion

Language: en

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

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Python](<https://devfeed.tech/topics/python.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [end-of-life](<https://devfeed.tech/tags/end-of-life.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [news](<https://devfeed.tech/tags/news.md>), [performance](<https://devfeed.tech/tags/performance.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

Khan Academy describes its effort to rebuild server software on Go's modern stack. The article explains why moving from Python 2 to Python 3 offered limited benefits, considers Kotlin and other options, and presents faster languages as a way to improve responsiveness and reduce server costs.

### Source excerpt

By Kevin Dangoor Go + Services = One Goliath Project Khan Academy is embarking on a huge effort ... Read more

## Kotlin for Python developers

DevFeed: [Kotlin for Python developers](<https://devfeed.tech/articles/kotlin-for-python-developers-27390.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/kotlin-for-python-developers.htm>)

Author: Khan Academy

Published: 2018-11-29T23:00:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Python](<https://devfeed.tech/topics/python.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [content-platform](<https://devfeed.tech/tags/content-platform.md>), [developers](<https://devfeed.tech/tags/developers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learning](<https://devfeed.tech/tags/learning.md>), [news](<https://devfeed.tech/tags/news.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

Khan Academy Engineering publicly released a Kotlin for Python developers guide after adopting Kotlin as an alternative backend language alongside Python. The textbook-style resource explains Kotlin in terms familiar to Python developers, while noting that it is not comprehensive and is provided as-is.

### Source excerpt

By Aasmund Eldhuset Earlier this year, the Khan Academy Engineering organization decided to introduce Kotlin as an alternative ... Read more

## Java News Roundup: New OpenJDK JEPs, CDI 5.0, Spring, Open Liberty, RefactorFirst, ADK for Kotlin

DevFeed: [Java News Roundup: New OpenJDK JEPs, CDI 5.0, Spring, Open Liberty, RefactorFirst, ADK for Kotlin](<https://devfeed.tech/articles/java-news-roundup-new-openjdk-jeps-cdi-5-0-spring-open-liberty-refactorfirst-adk-for-kotlin-21544.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/java-news-roundup-sep07-2026/>)

Author: Michael Redlich

Published: 2026-09-14T20:15:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [JDK 27](<https://devfeed.tech/topics/jdk-27.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Jakarta EE](<https://devfeed.tech/topics/jakarta-ee.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [architecture-design](<https://devfeed.tech/tags/architecture-design.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [development](<https://devfeed.tech/tags/development.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [jakarta-ee](<https://devfeed.tech/tags/jakarta-ee.md>), [java](<https://devfeed.tech/tags/java.md>), [java-news-roundup-sep07-2026](<https://devfeed.tech/tags/java-news-roundup-sep07-2026.md>), [jdk-27](<https://devfeed.tech/tags/jdk-27.md>), [jdk-28](<https://devfeed.tech/tags/jdk-28.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [micronaut](<https://devfeed.tech/tags/micronaut.md>), [news](<https://devfeed.tech/tags/news.md>), [open-jdk](<https://devfeed.tech/tags/open-jdk.md>), [open-liberty](<https://devfeed.tech/tags/open-liberty.md>), [refactorfirst](<https://devfeed.tech/tags/refactorfirst.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>), [tornadovm](<https://devfeed.tech/tags/tornadovm.md>)

### AI overview

A Java news roundup for September 7, 2026, covers new OpenJDK proposals for ahead-of-time compilation and structured concurrency, Jakarta CDI 5.0 and ADK for Kotlin 1.0, Open Liberty, TornadoVM, RefactorFirst, Micronaut, Groovy 6.0, and Gradle 9.8. It also reports current JDK 27 and JDK 28 early-access builds and describes improvements in TornadoVM 6.1.0.

### Source excerpt

This week's Java roundup for September 7th, 2026, features news highlighting: new JEPs for ahead-of-time compilation and structured concurrency; GA releases of Jakarta CDI 5.0 and ADK for Kotlin 1.0; the September 2026 edition of Open Liberty; point releases of TornadoVM and RefactorFirst; a maintenance release of Micronaut; and first releases candidates of Groovy 6.0 and Gradle 9.8. By Michael Redlich

## Kotlin 2.4.20 Collection Checks and Experimental Context-Sensitive Resolution

DevFeed: [Kotlin 2.4.20 Collection Checks and Experimental Context-Sensitive Resolution](<https://devfeed.tech/articles/features-you-waited-for-so-long-in-kotlin-22944.md>)

Original publisher: [Read original article](<https://proandroiddev.com/features-you-waited-for-so-long-in-kotlin-6c822e9e344a?source=rss----c72404660798---4>)

Author: Andrii Dubovyk

Published: 2026-09-14T06:32:51Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [collections](<https://devfeed.tech/tags/collections.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [features](<https://devfeed.tech/tags/features.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [list](<https://devfeed.tech/tags/list.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

The article explains two Kotlin features: allDistinctBy and allEqualBy in Kotlin 2.4.20 for checking collection values, and experimental context-sensitive resolution introduced in Kotlin 2.2 to reduce repetition when the expected type is known.

### Source excerpt

Kotlin 2.4.20 gives your collections opinions, and 2.2's compiler finally learns to read the room Some Kotlin features get a lot of attention when they arrive. Others are much less noticeable, but still make everyday code a little easier to write. Two examples of the latter are allDistinctBy/ allEqualBy in Kotlin 2.4.20 and context-sensitive resolution, which was introduced experimentally in Kotlin 2.2. allDistinctBy/ allEqualBy: A Simpler Way to Check Collections For years, checking whether all values in a collection were unique often looked something like this: val users = listOf( User(name = "A", age = 20), User(name = "B", age = 25), User(name = "C", age = 30) ) users.map { it.age }.distinct().size == users.size // true It works, but it creates another list, removes duplicates, counts the result, and then compares the sizes just to get a Boolean answer. Kotlin 2.4.20 adds a more direct way to express the same check: users.allDistinctBy { it.age } // true users.allEqualBy { it.age } // false allDistinctBy returns false as soon as it finds a duplicate, so it doesn't need to process the entire collection or create a separate Set. allEqualBy does the opposite: it checks whether all elements produce the same value when passed through the selector. Both functions work with Iterable, Sequence, and arrays. They use structural equality. For floating-point values, they follow Double.equals semantics, so NaN is considered equal to NaN, while -0.0 is different from 0.0. They're still @ExperimentalStdlibApi, so you'll need to opt in before using them in production code. The underlying allDistinct() and allEqual() requests have also been around in YouTrack for quite a while, which makes their appearance in the standard library feel long overdue. Context-Sensitive Resolution: Less Repetition in when The second feature is more about syntax. When the compiler already knows the type you're working with, you can sometimes leave out the type qualifier. Before: enum class Problem {

## Koko, KMP Starter Kit -- Part 3: Publishing: Your App in the Stores

DevFeed: [Koko, KMP Starter Kit -- Part 3: Publishing: Your App in the Stores](<https://devfeed.tech/articles/koko-kmp-starter-kit-part-3-publishing-your-app-in-the-stores-22948.md>)

Original publisher: [Read original article](<https://proandroiddev.com/kmp-starter-kit-part-3-publishing-your-app-in-the-stores-fd64d3629c02?source=rss----c72404660798---4>)

Author: Mirzamehdi Karimov

Published: 2026-09-14T04:48:22Z

Content type: tutorial

Language: en

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

Topics: [App](<https://devfeed.tech/topics/app.md>), [Script](<https://devfeed.tech/topics/script.md>), [Development](<https://devfeed.tech/topics/development.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [development](<https://devfeed.tech/tags/development.md>), [github](<https://devfeed.tech/tags/github.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

This tutorial explains the publishing phase of the KMP Starter Kit, covering store accounts, app identifiers, configuration checks, privacy and terms URLs, support email, and publishing both apps from GitHub without a Mac. It also describes Google Play's closed-testing requirement for individual accounts.

### Source excerpt

Part 3 of 4: the third phase of the KMP contest starter kit. What to check when publishing, what the stores ask for, and how to publish both apps from GitHub without having a Mac. New here? Part 1 introduces the kit and gets your app running on your machine. Part 2 connects it to Firebase, sign in and a backend. You've finished the development part of your app, tested it, and it works. Screens done, data saved, maybe some services connected from part 2. Now comes the publishing part, and it can look complicated at first. But publishing is mostly a checklist, and the kit ships the checklist as a script: ./MobileApp/scripts/check_env.sh --phase publishing Or ask your AI coding assistant "is my app ready to publish?" and it runs this instead of guessing. It checks the things people forget: are the privacy policy and terms URLs real pages instead of placeholders? Is the contact email still support@example.com? Is your AI feature still calling providers directly with a key that would ship inside the binary? Each warning points at the fix. The rest of this post goes through the phase in order. A few steps involve waiting, so it's better to read it once first and start those early. Store accounts You need a developer account with each store. Google Play: $25, once. Apple: $99 per year. Start both today. Apple or Google can take days to verify a new account. Google Play has a testing rule: if you register as an individual (not a company), you can't publish to production until your app has run a closed test with at least 12 testers for 14 days, and then you apply for production access. Company accounts skip this, but need a registered business with a D-U-N-S number. For most first apps: register as an individual, collect 12 friends' emails now, and use those two weeks as your beta. App id and configuration Two things become permanent in this phase. The app id. Google Play ties your package name to the app on the first upload, and Apple ties the bundle id to the store record.

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

## Java Weekly, Issue 663

DevFeed: [Java Weekly, Issue 663](<https://devfeed.tech/articles/java-weekly-issue-663-8993.md>)

Original publisher: [Read original article](<https://www.baeldung.com/java-weekly-663>)

Author: baeldung

Published: 2026-09-13T11:00:00Z

Content type: article

Language: en

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

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [coding](<https://devfeed.tech/topics/coding.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [ai](<https://devfeed.tech/tags/ai.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [no-ads](<https://devfeed.tech/tags/no-ads.md>), [no-after-post](<https://devfeed.tech/tags/no-after-post.md>), [no-before-post](<https://devfeed.tech/tags/no-before-post.md>), [no-optins](<https://devfeed.tech/tags/no-optins.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spec-driven-development](<https://devfeed.tech/tags/spec-driven-development.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [weekly-review](<https://devfeed.tech/tags/weekly-review.md>), [weekly-review-no-ads-no-after-post-no-before-post-no-optins](<https://devfeed.tech/tags/weekly-review-no-ads-no-after-post-no-before-post-no-optins.md>)

### AI overview

A Java-focused weekly roundup featuring spec-driven development, agent memory and AI-agent articles, technical presentations, and software release announcements.

### Source excerpt

A better spec-driven development and the brain as example architecture. The post Java Weekly, Issue 663 first appeared on Baeldung.

## How Kotlin Flow Operator Fusion Works and When Ordinary Operators Break It

DevFeed: [How Kotlin Flow Operator Fusion Works and When Ordinary Operators Break It](<https://devfeed.tech/articles/i-counted-every-hidden-channel-kotlin-flow-creates-most-devs-are-wrong-about-which-operators-are-22947.md>)

Original publisher: [Read original article](<https://proandroiddev.com/i-counted-every-hidden-channel-kotlin-flow-creates-most-devs-are-wrong-about-which-operators-are-8f38cf676e07?source=rss----c72404660798---4>)

Author: Majidshahbaz

Published: 2026-09-13T05:43:21Z

Content type: article

Language: en

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

Topics: [kotlin-flow](<https://devfeed.tech/topics/kotlin-flow.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [kotlin-flow](<https://devfeed.tech/tags/kotlin-flow.md>)

### AI overview

This article investigates Kotlin Flow operator fusion by instrumenting the runtime and comparing pipelines with adjacent fusible operators against pipelines interrupted by an ordinary map() call. It explains that adjacent channelFlow, flowOn, buffer, and produceIn calls can share one underlying channel through FusibleFlow, while an intervening non-fusible operator causes additional wrapper structure.

### Source excerpt

Image Generated for the ArticleI Counted Every Hidden Channel Kotlin Flow Creates -- Most Devs Are Wrong About Which Operators Are Freebuffer() and flowOn() are supposed to fuse into one channel when chained. I wrote code to prove it -- and then found four "harmless" operators that quietly break it. Ask any experienced Kotlin developer what happens when you chain .buffer().flowOn(Dispatchers.IO).buffer(), and you'll usually get a confident answer: "it fuses into one channel." That's the folklore, repeated in talks, docs, and Stack Overflow answers. It's also only half true, and nobody seems to have actually checked the other half: which everyday operators quietly stop that fusion from happening. I decided to stop trusting folklore and instrument the actual runtime. Five separate experiments later, I had a very clear, very measurable answer -- and one of the results genuinely surprised me. The Myth, and the Mechanism Behind It Kotlin's coroutines library really does fuse adjacent channelFlow, flowOn, buffer, and produceIn calls into a single underlying channel instead of creating one per operator. This isn't a rumor -- it's real, deliberate behavior, implemented through an interface called FusibleFlow. Here's the actual check, straight from the source: https://medium.com/media/1cd3b407c1f2b2955b3df4be68ca18b5/href When flowOn() or buffer() is called, it checks whether the flow it's being called on already implements FusibleFlow. If it does, instead of wrapping it in a new object, it calls .fuse() -- which updates the existing object's settings (buffer size, dispatcher) in place. No new object. No new coroutine. No new channel. But that check only succeeds if the upstream is already a ChannelFlow. And that's where the folklore quietly stops being true. Building Something to Actually Measure This I wrote two nearly identical pipelines -- one where the fusible operators sit directly next to each other, and one where a completely ordinary map() sits in the middle: https://medi

## Kotlin Explicit Backing Fields: Encapsulation Tradeoffs and Downcasting Risks

DevFeed: [Kotlin Explicit Backing Fields: Encapsulation Tradeoffs and Downcasting Risks](<https://devfeed.tech/articles/the-downcast-trap-in-kotlin-s-explicit-backing-fields-22951.md>)

Original publisher: [Read original article](<https://proandroiddev.com/the-downcast-trap-in-kotlins-explicit-backing-fields-626ef0d66e50?source=rss----c72404660798---4>)

Author: Ehab Elwan

Published: 2026-09-13T05:31:32Z

Content type: opinion

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [article](<https://devfeed.tech/tags/article.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [memory](<https://devfeed.tech/tags/memory.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>)

### AI overview

This article compares Kotlin's traditional private mutable property plus public read-only wrapper with explicit backing fields. It explains that explicit backing fields can avoid an extra wrapper allocation, but because the underlying object remains mutable, an external downcast may bypass the intended read-only restriction and mutate internal state.

### Source excerpt

Why eliminating the double-property boilerplate changes how we protect our architecture Image generated by AIDisclosure: This article was drafted by me and refined with the help of AI tools. If you have written Kotlin in the last few years, you are intimately familiar with the double-property boilerplate. Whether in Android ViewModels or general state holders, maintaining a private mutable property alongside a public read-only property is a chore we have all accepted in the name of strict encapsulation to prevent our internal state from being hijacked by outside classes. It makes the code significantly cleaner (and slightly more memory efficient). However, it fundamentally changes how we protect our state, moving from a physical object boundary to a simple type restriction. Let's look at the tradeoff. The Old Way: Wrapper Protection For years, the standard approach to encapsulating state has looked like this: class OldViewModel { // 1. The private mutable state private val _uiState = MutableStateFlow(UiState()) // 2. The public read-only state val uiState: StateFlow<UiState> = _uiState.asStateFlow() } This is tedious to write, but it provides a strict architectural guarantee. When you call .asStateFlow(), Kotlin does not just change the type; it creates a brand new wrapper object in memory (ReadonlyStateFlow). While this physical barrier is fantastic for safety, it does mean you are incurring a minor memory allocation overhead by creating a secondary wrapper object for every exposed state. The New Way: Upcasting Explicit Backing Fields allow you to merge these two properties into one concise declaration, bypassing that extra memory allocation entirely: class NewViewModel { val uiState: StateFlow<UiState> field = MutableStateFlow(UiState()) } Inside your class, the Kotlin compiler smart-casts the field so you can mutate it internally. Outside the class, the compiler restricts callers to the read-only StateFlow interface. It looks incredibly clean and saves an allocat

## The Android Startup Pattern: A Lifecycle-Aware, Multi-Module Approach

DevFeed: [The Android Startup Pattern: A Lifecycle-Aware, Multi-Module Approach](<https://devfeed.tech/articles/the-android-startup-pattern-a-lifecycle-aware-multi-module-approach-22950.md>)

Original publisher: [Read original article](<https://proandroiddev.com/the-android-startup-pattern-a-lifecycle-aware-multi-module-approach-d0f73e367a62?source=rss----c72404660798---4>)

Author: Ehab Elwan

Published: 2026-09-13T05:31:09Z

Content type: tutorial

Language: en

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

Topics: [Android](<https://devfeed.tech/topics/android.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [app-startup](<https://devfeed.tech/tags/app-startup.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [framework](<https://devfeed.tech/tags/framework.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile-architecture](<https://devfeed.tech/tags/mobile-architecture.md>), [module](<https://devfeed.tech/tags/module.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>)

### AI overview

This tutorial presents a lifecycle-aware, dependency-injection-driven startup pattern for modular Android applications. It contrasts a centralized startup anti-pattern with Jetpack App Startup and discusses process lifecycles, testability, and delaying tracking SDK initialization until privacy consent is evaluated.

### Source excerpt

A Clean, DI-Driven Architecture for Managing Cold Starts, Background Wakeups, and Privacy Compliance in Modern Android Apps Image generated by AIDisclosure: This article was drafted by me and refined with the help of AI tools. Every growing Android project eventually spawns a two-headed "God Class." On one side, your Application class becomes a dumping ground for global infrastructure--third-party SDKs, crash reporters, and tracking tools. On the other side, your main entry point (typically the MainViewModel) gets choked with UI-blocking startup logic. It usually looks something like this: The Anti-Pattern: The Two-Headed God Class class MyApplication : Application() { override fun onCreate() { super.onCreate() // The framework dumping ground CrashReportingSDK.getInstance().setCollectionEnabled(true) HeavyUiSDK.initialize(context = this, ...) AnalyticsSDK.initialize(this, "API_KEY") // ... 50 more lines of spaghetti } }class MainViewModel : ViewModel() { init { // The UI-blocking dumping ground updateRemoteConfigs() checkUserSessionToken() processPendingDeepLinks() prefetchHomeFeedData() // ... UI cannot render until this finishes } } Splitting initialization across these two files creates major problems: It breaks the Single Responsibility Principle: The app's entry points are forced to orchestrate the inner workings of every single feature, tightly coupling your modules. It ignores process lifecycles: Application tasks run indiscriminately on every silent background wakeup, while MainViewModel tasks fail to re-trigger when the app returns to the foreground. It destroys testability: Hardcoding SDK initializations directly into your entry points makes it incredibly difficult to write isolated unit tests without complicated mocking setups. It complicates privacy compliance: A centralized dumping ground makes it extremely difficult to dynamically suspend tracking SDKs until user consent under global privacy regulations (such as GDPR, CCPA, and CPRA) is explicitly grant

## Announcing ADK for Kotlin 1.0: Building Production-Ready AI Agents in Kotlin, Android, and Beyond

DevFeed: [Announcing ADK for Kotlin 1.0: Building Production-Ready AI Agents in Kotlin, Android, and Beyond](<https://devfeed.tech/articles/announcing-adk-for-kotlin-1-0-building-production-ready-ai-agents-in-kotlin-android-and-beyond-4204.md>)

Original publisher: [Read original article](<https://developers.googleblog.com/announcing-adk-for-kotlin-10-building-production-ready-ai-agents-in-kotlin-android-and-beyond/>)

Author: Guillaume Laforge

Published: 2026-09-12T11:04:33.891311Z

Content type: release

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [AI Development](<https://devfeed.tech/topics/ai-development.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [Google](<https://devfeed.tech/topics/google.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Agent Skill](<https://devfeed.tech/topics/agent-skill.md>), [LiteRT](<https://devfeed.tech/topics/litert.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [agent-skill](<https://devfeed.tech/tags/agent-skill.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [android](<https://devfeed.tech/tags/android.md>), [building](<https://devfeed.tech/tags/building.md>), [database](<https://devfeed.tech/tags/database.md>), [development-kit](<https://devfeed.tech/tags/development-kit.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [incident](<https://devfeed.tech/tags/incident.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [production](<https://devfeed.tech/tags/production.md>)

### AI overview

Google announces the 1.0 general availability release of the Agent Development Kit (ADK) for Kotlin, a production-ready toolkit for building multi-agent applications with Kotlin, Java, and Android. Built on Kotlin Multiplatform, it provides feature parity with the ADK 1.0 Core and adds Android-first extensions for on-device agents with LiteRT-LM and ML Kit, hybrid cloud workflows through Firebase AI Logic, and state persistence with Room and AppSearch. The release also includes type-safe, compile-time function calling through KSP and declarative agent skills.

### Source excerpt

Google has officially released version 1.0 of the Agent Development Kit (ADK) for Kotlin, achieving full feature parity with the Python and Java ADK cores to enable idiomatic, multi-agent AI development. Built on Kotlin Multiplatform (KMP), the framework leverages Kotlin Symbol Processing (KSP) for zero-reflection, type-safe function calling, alongside advanced orchestration capabilities like human-in-the-loop workflows and context compaction. Additionally, the release introduces a robust suite of Android-first extensions, allowing mobile developers to integrate local models via LiteRT-LM, cloud reasoning through Firebase AI, session persistence using Room, and semantic memory powered by AppSearch.

## Native is now the future of mobile at Shopify

DevFeed: [Native is now the future of mobile at Shopify](<https://devfeed.tech/articles/native-is-now-the-future-of-mobile-at-shopify-31158.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Sep/10/shopify-react-native/>)

Author: Simon Willison

Published: 2026-09-10T21:11:15Z

Content type: opinion

Language: en

Sources: [Simon Willison's Weblog](<https://devfeed.tech/sources/simon-willison-s-weblog.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Android](<https://devfeed.tech/topics/android.md>), [Generative AI](<https://devfeed.tech/topics/generative-ai.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-2-236](<https://devfeed.tech/tags/ai-2-236.md>), [ai-assisted-search](<https://devfeed.tech/tags/ai-assisted-search.md>), [ai-assisted-search-36](<https://devfeed.tech/tags/ai-assisted-search-36.md>), [android](<https://devfeed.tech/tags/android.md>), [android-14](<https://devfeed.tech/tags/android-14.md>), [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [coding-agents-248](<https://devfeed.tech/tags/coding-agents-248.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [generative-ai-1-982](<https://devfeed.tech/tags/generative-ai-1-982.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-26](<https://devfeed.tech/tags/ios-26.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [llms](<https://devfeed.tech/tags/llms.md>), [llms-1-948](<https://devfeed.tech/tags/llms-1-948.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-41](<https://devfeed.tech/tags/mobile-41.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-320](<https://devfeed.tech/tags/open-source-320.md>), [react](<https://devfeed.tech/tags/react.md>), [react-43](<https://devfeed.tech/tags/react-43.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [shopify-8](<https://devfeed.tech/tags/shopify-8.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-12](<https://devfeed.tech/tags/swift-12.md>)

### AI overview

Shopify is moving its mobile apps from React Native back to separate Swift and Kotlin codebases. The article explains that AI agents can now handle enough implementation, translation, testing, and review work to reduce the cost of maintaining separate platforms. It also notes the planned relocation or archival of Shopify's React Native libraries.

### Source excerpt

Native is now the future of mobile at Shopify Shopify are moving from React Native back to separate Swift and Kotlin codebases for their native apps, for the exact reason you would expect: We decided to switch from native to React Native in 2020 for three reasons: Stop building the same features twice Allow developers to work across the stack Spend less time chasing feature parity and more time shipping value [...] Native still means building and maintaining software on two platforms, that cost has not disappeared. What changed is that agents can now do enough of the implementation, translation, testing, and review work that it's no longer the deciding factor it was in 2020. It's a well-written post, which gives full credit to React Native as a great platform for the six years they were using it. Shopify are the maintainers of three significant React Native libraries: react-native-skia, flash-list, and restyle. The first two are finding new homes; the third "has a smaller user base than our other libraries" and will be archived at the end of 2026. Via Hacker News Tags: android, mobile, open-source, ios, ai, react, generative-ai, llms, ai-assisted-search, coding-agents, swift, shopify

## Kodebits Day 90: Named Arguments \[FREE\]

DevFeed: [Kodebits Day 90: Named Arguments \[FREE\]](<https://devfeed.tech/articles/kodebits-day-90-named-arguments-free-11507.md>)

Original publisher: [Read original article](<https://www.kodeco.com/52032926-kodebits-day-90-named-arguments>)

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

Content type: tutorial

Language: en

Sources: [Kodeco | High quality programming tutorials: iOS, Android, Swift, Kotlin, Unity, and more](<https://devfeed.tech/sources/kodeco-high-quality-programming-tutorials-ios-android-swift-kotlin-unity-and-more.md>)

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

Tags: [article](<https://devfeed.tech/tags/article.md>), [development](<https://devfeed.tech/tags/development.md>), [free](<https://devfeed.tech/tags/free.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

A short Kotlin challenge for practicing named arguments.

### Source excerpt

Practice arguments with a short kotlin challenge.

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

## Native is now the future of mobile at Shopify

DevFeed: [Native is now the future of mobile at Shopify](<https://devfeed.tech/articles/native-is-now-the-future-of-mobile-at-shopify-1302.md>)

Original publisher: [Read original article](<https://shopify.engineering/back-to-native>)

Author: Mustafa Ali

Published: 2026-09-10T12:25:28Z

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: [React Native](<https://devfeed.tech/topics/react-native.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [android](<https://devfeed.tech/tags/android.md>), [apps](<https://devfeed.tech/tags/apps.md>), [coding](<https://devfeed.tech/tags/coding.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [llms](<https://devfeed.tech/tags/llms.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [models](<https://devfeed.tech/tags/models.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Shopify is moving from React Native back to native Swift and Kotlin development after finding that coding agents and LLMs reduce the cost of implementing mobile features separately on each platform.

### Source excerpt

Coding agents changed what it costs to build mobile apps twice. Here's why Shopify is moving from React Native back to Swift and Kotlin.

## Koin Compiler 1.2: Compile-Time Safety for ALL Koin DSL

DevFeed: [Koin Compiler 1.2: Compile-Time Safety for ALL Koin DSL](<https://devfeed.tech/articles/koin-compiler-1-2-compile-time-safety-for-all-koin-dsl-22973.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/koin-compiler-1-2-compile-time-safety-for-all-koin-dsl-4603787b9921?source=rss----925561f2ecdf---4>)

Author: Arnaud Giuliani

Published: 2026-09-10T12:01:01Z

Content type: release

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>)

### AI overview

Koin Compiler Plugin 1.2, with 1.2.1 as the latest patch, extends compile-time validation to Koin's reified, constructor, and classic lambda DSLs. It also adds visibility across Gradle modules, supports additional entry points, and provides one artifact for Kotlin 2.3.20 through 2.4.20 without requiring a DSL migration.

### Source excerpt

Hello, dear Koin community 👋 I'm happy to share that Koin Compiler Plugin 1.2 is out, with 1.2.1 already available as the latest patch. Developer mascott unboxing new Koin Features!TL;DR Compile-time validation now works on the Koin application you already have, where before 1.2 it only covered code written specifically for the compiler plugin. Koin DSL -- All now covered! All Koin DSL: the plugin's reified DSL, Koin's constructor DSL (singleOf(::T)), and the classic lambda DSL (single { Foo(get()) }). Across Gradle modules: definitions are now visible two or more implementation hops away. More entry points: Ktor's install(Koin) and KoinApplication.withConfiguration<T>(). One artifact for Kotlin 2.3.20 through 2.4.20. You get there with no migration to a new DSL, and nothing to rewrite. Let's go through what shipped. Covering now all Koin DSL Until now, compile-time safety only covered the plugin's own reified DSL, which means the two DSL styles you have most likely already written were invisible to it. val appModule = module { single<UserService>() // checked singleOf(::UserRepository) // not checked before 1.2 single { AnalyticsHelper(get()) } // not checked before 1.2 } Three ways to declare a definition, and only the first was validated. If your UserRepository needed a Database that no module provided, your build passed and Koin threw at runtime. In 1.2, all three are validated. The two DSL styles get there differently. For the constructor DSL, the referenced constructor's parameters become real requirements, exactly like single<T>(), and any named() qualifier you put on the registration is matched against the consumers that ask for it. The classic lambda DSL works differently. The plugin doesn't try to work out dependencies from free-form lambda code. What it validates instead are the get() calls you wrote inside the lambda, treated as ordinary resolution call sites. Before 1.2 those calls were skipped on purpose, because a hand-written get() is difficult to dis

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

## Our LDX3 New York 2026 Picks - Justin Mancinelli

DevFeed: [Our LDX3 New York 2026 Picks - Justin Mancinelli](<https://devfeed.tech/articles/our-ldx3-new-york-2026-picks-justin-mancinelli-38289.md>)

Original publisher: [Read original article](<https://touchlab.co/ldx3-new-york-2026>)

Published: 2026-09-08T13:00:00Z

Content type: opinion

Language: en

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

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [AI Engineering](<https://devfeed.tech/topics/ai-engineering.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [ai](<https://devfeed.tech/tags/ai.md>), [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [leadership](<https://devfeed.tech/tags/leadership.md>), [mobile](<https://devfeed.tech/tags/mobile.md>)

### AI overview

Touchlab's Justin Mancinelli previews the LDX3 New York 2026 talks the company is most interested in, highlighting software engineering leadership, AI's effects on engineering and management, innovation practices, and mobile development with Kotlin Multiplatform.

### Source excerpt

LDX3 is back in NYC and Touchlab will be in attendence. Here are the talks we're most excited about.

## Setting Up Koin in a Real Kotlin Multiplatform Project: A Step-by-Step Guide

DevFeed: [Setting Up Koin in a Real Kotlin Multiplatform Project: A Step-by-Step Guide](<https://devfeed.tech/articles/setting-up-koin-in-real-project-a-step-by-step-guide-22976.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/setting-up-koin-in-real-project-a-step-by-step-guide-1575e2357239?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-09-07T12:01:03Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [guide](<https://devfeed.tech/tags/guide.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [module](<https://devfeed.tech/tags/module.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A step-by-step tutorial for setting up Koin in a Kotlin Multiplatform project targeting Android and iOS. It covers dependencies, data, domain, and UI modules, a platform bridge, platform entry points, and dependency injection in Composables.

### Source excerpt

Hi everyone! 👋 In this article, we'll take a practical, step-by-step approach to setting up Koin in a real-world Kotlin Multiplatform (KMP) project. Instead of starting with an isolated example or a simple Hello World, we'll work with a project created by the CodandoTV community: the World Cup Best Team Simulator. The app allows users to browse football players by country and build their own dream team. It runs on both Android and iOS, using Kotlin Multiplatform for sharing business and data logic, and Compose Multiplatform to share the UI across platforms. Step 1: Add Koin Dependencies Add the Koin libraries to your version catalog: # gradle/libs.versions.toml [versions] koin = "4.2.2" [libraries] koin_core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" } koin_android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } koin_compose = { module = "io.insert-koin:koin-compose", version.ref = "koin" } koin_compose_viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" } In the shared module shared/build.gradle.kts, split the dependencies by source set -- commonMain gets the shared Koin libraries, androidMain gets the Android-specific one: // shared/build.gradle.kts sourceSets { commonMain.dependencies { implementation(libs.koin.core) implementation(libs.koin.compose) implementation(libs.koin.compose.viewmodel) } androidMain.dependencies { implementation(libs.koin.android) } } In the Android app module androidApp/build.gradle.kts , add the Android Koin dependency: // androidApp/build.gradle.kts dependencies { implementation(libs.koin.android) implementation(libs.koin.core) }Step 2: Create the Data Module Create shared/src/commonMain/.../data/DataModule.kt . This module provides singleton instances -- repositories, and data sources that live for the entire app lifecycle. val dataModule = module { single<WorldCupRepository> { WorldCupRepositoryImpl(ioDispatcher = Dispatchers.IO) } }Step 3: Create

## Kotlin 2.4.20 Released

DevFeed: [Kotlin 2.4.20 Released](<https://devfeed.tech/articles/kotlin-2-4-20-released-8793.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/kotlin/2026/09/kotlin-2-4-20-released/>)

Author: Daniel Csorba

Published: 2026-09-07T11:30:57Z

Content type: release

Language: en

Sources: [Kotlin : A concise multiplatform language developed by JetBrains | The JetBrains Blog](<https://devfeed.tech/sources/kotlin-a-concise-multiplatform-language-developed-by-jetbrains-the-jetbrains-blog.md>), [The JetBrains Blog](<https://devfeed.tech/sources/the-jetbrains-blog.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [features](<https://devfeed.tech/tags/features.md>), [github](<https://devfeed.tech/tags/github.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [issue-tracker](<https://devfeed.tech/tags/issue-tracker.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [swift](<https://devfeed.tech/tags/swift.md>), [testing](<https://devfeed.tech/tags/testing.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [youtrack](<https://devfeed.tech/tags/youtrack.md>)

### AI overview

Kotlin 2.4.20 adds standard-library, compiler, build-tool, Kotlin/Native, Kotlin/Wasm, and Kotlin/JS updates. The article also explains how to update Kotlin in supported IDEs or obtain the command-line compiler.

### Source excerpt

The Kotlin 2.4.20 release is out! Here are the main highlights: For the complete list of changes, see What's new in Kotlin 2.4.20 or the release notes on GitHub. How to install Kotlin 2.4.20 The latest version of Kotlin is included in the latest versions of IntelliJ IDEA and Android Studio. To update to the [...]

## Java Annotated Monthly - September 2026

DevFeed: [Java Annotated Monthly - September 2026](<https://devfeed.tech/articles/java-annotated-monthly-september-2026-8803.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/idea/2026/09/java-annotated-monthly-september-2026/>)

Author: Irina Mariasova

Published: 2026-09-07T11:27:14Z

Content type: article

Language: en

Sources: [The JetBrains Blog](<https://devfeed.tech/sources/the-jetbrains-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [kotlinllm](<https://devfeed.tech/topics/kotlinllm.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [articles](<https://devfeed.tech/tags/articles.md>), [coding](<https://devfeed.tech/tags/coding.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [post-quantum](<https://devfeed.tech/tags/post-quantum.md>), [september-2026](<https://devfeed.tech/tags/september-2026.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

The September 2026 Java Annotated Monthly surveys Java news, JDK 27 and its performance and security changes, Java tutorials, Kotlin updates, AI-focused development, and developments across languages, frameworks, libraries, and technologies. It highlights compact object headers, G1 as the default garbage collector, protection for sensitive JFR data, post-quantum key exchange in TLS 1.3, Java migration guidance, and selected Kotlin and AI coding resources.

### Source excerpt

This month's Java Annotated Monthly brings you the latest Java news, a generous dose of AI-focused articles, Kotlin updates, and highlights from a variety of technologies and frameworks, plus plenty more worth adding to your reading list. Our featured writer, Aicha Laafia, takes a closer look at upcoming JEPs and shares her key findings on [...]

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