# kotlin-multiplatform

Published articles for kotlin-multiplatform.

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

## Kermit 2.2.0 adds WasmWasi support and a new Coil3 extension - Kevin Schildhorn

DevFeed: [Kermit 2.2.0 adds WasmWasi support and a new Coil3 extension - Kevin Schildhorn](<https://devfeed.tech/articles/kermit-2-2-0-adds-wasmwasi-support-and-a-new-coil3-extension-kevin-schildhorn-38233.md>)

Original publisher: [Read original article](<https://touchlab.co/kermit-220>)

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

Content type: release

Language: en

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

Topics: [Library](<https://devfeed.tech/topics/library.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Extension](<https://devfeed.tech/topics/extension.md>)

Tags: [2-2](<https://devfeed.tech/tags/2-2.md>), [coil](<https://devfeed.tech/tags/coil.md>), [extension](<https://devfeed.tech/tags/extension.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kermit](<https://devfeed.tech/tags/kermit.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [library](<https://devfeed.tech/tags/library.md>), [swift](<https://devfeed.tech/tags/swift.md>), [update](<https://devfeed.tech/tags/update.md>), [version](<https://devfeed.tech/tags/version.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

Kermit 2.2.0 adds WasmWasi support for selected targets, updates supported targets, and introduces a Kermit module for receiving logs from Coil 3 image loaders.

### Source excerpt

The 2.2.0 update for Kermit is out now featuring a new Coil3 extension, plus support for more targets including WasmWasi.

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

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

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

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

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

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

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

Content type: opinion

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Running golf swing analysis on an Android device with a fine-tuned Gemma 4 model

DevFeed: [Running golf swing analysis on an Android device with a fine-tuned Gemma 4 model](<https://devfeed.tech/articles/running-golf-swing-analysis-on-an-android-device-with-a-fine-tuned-gemma-4-model-25193.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/formai-gemma4-ondevice/>)

Published: 2026-08-29T23:00:00Z

Content type: tutorial

Language: en

Sources: [John O'Reilly](<https://devfeed.tech/sources/john-o-reilly.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [gemma4](<https://devfeed.tech/topics/gemma4.md>), [LiteRT](<https://devfeed.tech/topics/litert.md>), [On-device AI](<https://devfeed.tech/topics/on-device-ai.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [gemma](<https://devfeed.tech/tags/gemma.md>), [gemma-4](<https://devfeed.tech/tags/gemma-4.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [litert](<https://devfeed.tech/tags/litert.md>), [model](<https://devfeed.tech/tags/model.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [on-device-ai](<https://devfeed.tech/tags/on-device-ai.md>)

### AI overview

This article explains how FormAI adds Android on-device golf-swing analysis using a small Gemma 4 model fine-tuned to imitate Gemini for a narrow coaching task. It covers generating training data with Gemini, fine-tuning with LoRA, converting the model for LiteRT-LM, and the current fallback to cloud analysis on other platforms.

### Source excerpt

FormAI is a Kotlin Multiplatform app that analyses a video of your golf swing, basketball shot or running form and gives you coaching feedback. Up to now that has always meant uploading the video to Gemini and getting the response back over the network. We've added an option to do the golf swing analysis entirely on an Android device instead, using a small Gemma 4 model that we fine-tuned to imitate Gemini for that one task. LiteRT-LM, the runtime we use for this, is itself cross platform (Android, iOS, desktop and web), but we've only wired up the Android side so far, so this path lives in androidMain and the other targets report it as unavailable and fall back to the cloud.

## Consuming SKIE Flows in SwiftUI - Gustavo Fão Valvassori

DevFeed: [Consuming SKIE Flows in SwiftUI - Gustavo Fão Valvassori](<https://devfeed.tech/articles/consuming-skie-flows-in-swiftui-gustavo-fao-valvassori-38317.md>)

Original publisher: [Read original article](<https://touchlab.co/skie-swiftui>)

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

Content type: tutorial

Language: en

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

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Extension](<https://devfeed.tech/topics/extension.md>)

Tags: [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [community](<https://devfeed.tech/tags/community.md>), [extensions](<https://devfeed.tech/tags/extensions.md>), [interop](<https://devfeed.tech/tags/interop.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [skie](<https://devfeed.tech/tags/skie.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>)

### AI overview

This tutorial explains how to consume Kotlin Flows in SwiftUI using SKIE. It covers enabling SKIE extensions in Gradle and collecting StateFlow values through an async collect approach, a modifier, or a view wrapper to reduce repetitive UI-layer code.

### Source excerpt

SKIE already makes the interop between Kotlin and Swift smooth, but SwiftUI adds a layer of complexity. We've included a series of extensions in SKIE to enable easy KMP usage from SwiftUI

## Engineering log: fine-tuning Gemma 4 E4B with LoRA to bring FormAI's coaching on-device

DevFeed: [Engineering log: fine-tuning Gemma 4 E4B with LoRA to bring FormAI's coaching on-device](<https://devfeed.tech/articles/engineering-log-fine-tuning-gemma-4-e4b-with-lora-to-bring-formai-s-coaching-on-device-25192.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/formai-gemma4-lora/>)

Published: 2026-08-28T23:00:00Z

Content type: article

Language: en

Sources: [John O'Reilly](<https://devfeed.tech/sources/john-o-reilly.md>)

Topics: [gemma4](<https://devfeed.tech/topics/gemma4.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [lora](<https://devfeed.tech/topics/lora.md>), [On-device AI](<https://devfeed.tech/topics/on-device-ai.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [LiteRT](<https://devfeed.tech/topics/litert.md>), [Android](<https://devfeed.tech/topics/android.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [data](<https://devfeed.tech/tags/data.md>), [data-quality](<https://devfeed.tech/tags/data-quality.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [gemma](<https://devfeed.tech/tags/gemma.md>), [gemma-4](<https://devfeed.tech/tags/gemma-4.md>), [inference](<https://devfeed.tech/tags/inference.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [litert](<https://devfeed.tech/tags/litert.md>), [lora](<https://devfeed.tech/tags/lora.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [on-device](<https://devfeed.tech/tags/on-device.md>)

### AI overview

This engineering log describes a prototype that distils FormAI's Gemini-based sports coaching feedback into Gemma 4 E4B fine-tuned with LoRA. The local pipeline uses seed videos, filters inadequate critiques, extracts frames, trains and merges the adapter, then converts the model to LiteRT-LM for possible on-device Android inference.

### Source excerpt

⚠ Note: this post is AI-generated. The text below was written by Claude, and documents findings from a series of Claude Code sessions working on this project -- the experiments, bugs and measurements described are ones that came out of those sessions. The engineering work is real and the numbers were measured rather than estimated, but the write-up is the model's own account of what it did, not a human's independent retelling of it.

## Droidcon Orlando 2026 Recap - Tadeas Kriz

DevFeed: [Droidcon Orlando 2026 Recap - Tadeas Kriz](<https://devfeed.tech/articles/droidcon-orlando-2026-recap-tadeas-kriz-38187.md>)

Original publisher: [Read original article](<https://touchlab.co/dc-us-26-recap>)

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

Content type: article

Language: en

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

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

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [android](<https://devfeed.tech/tags/android.md>), [community](<https://devfeed.tech/tags/community.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [demo](<https://devfeed.tech/tags/demo.md>), [droidcon](<https://devfeed.tech/tags/droidcon.md>), [experience](<https://devfeed.tech/tags/experience.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-interpreter](<https://devfeed.tech/tags/kotlin-interpreter.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [recap](<https://devfeed.tech/tags/recap.md>), [speaking](<https://devfeed.tech/tags/speaking.md>)

### AI overview

A recap of Droidcon USA in Orlando, covering the conference venue, talks, and a demo of Kotlin Multiplatform Hot Reload. The author explains that file changes were propagated to an application running on Android and iOS, while Kotlin Interpreter work continues.

### Source excerpt

Droidcon USA moved to Orlando this year. Tadeas recaps his experience attending and speaking at the new venue.

## Keep Kotlin Multiplatform bindings at the platform boundary

DevFeed: [Keep Kotlin Multiplatform bindings at the platform boundary](<https://devfeed.tech/articles/keep-kotlin-multiplatform-bindings-at-the-platform-boundary-23964.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/kotlin-multiplatform-module-boundaries/>)

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 Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [modules](<https://devfeed.tech/topics/modules.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [module](<https://devfeed.tech/tags/module.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [test](<https://devfeed.tech/tags/test.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

A guide to keeping Kotlin Multiplatform dependency bindings at platform boundaries. It recommends defining small capability interfaces in common code, implementing them in platform source sets, organizing modules around capabilities and product features, and testing both shared contracts and real platform bindings.

### Source excerpt

Kotlin Multiplatform makes source-set boundaries visible, but a dependency container can blur them again. A shared module should state a capability such as secure storage, HTTP transport, or local time. The platform source set should supply the implementation. Put contracts where consumers can see them Define the smallest useful interface in common code. Avoid copying a platform API into that interface. A storage contract might expose read, write, and remove; it does not need to expose Android preferences or an Apple keychain type.

## Moving from Wear OS to a Pebble Watch

DevFeed: [Moving from Wear OS to a Pebble Watch](<https://devfeed.tech/articles/from-wear-to-pebble-28104.md>)

Original publisher: [Read original article](<https://commonsware.com/blog/2026/08/08/from-wear-to-pebble.html>)

Author: CommonsWare

Published: 2026-08-08T10:34:08Z

Content type: opinion

Language: en

Sources: [The CommonsBlog](<https://devfeed.tech/sources/the-commonsblog.md>)

Topics: [eink](<https://devfeed.tech/topics/eink.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [devices](<https://devfeed.tech/tags/devices.md>), [eink](<https://devfeed.tech/tags/eink.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

The author explains moving from Wear OS to a Pebble watch, valuing its lower power use, open source foundation, and developer ecosystem despite its lower capabilities.

### Source excerpt

I have moved off of Wear OS and onto a Pebble watch!

## Why We Wrote a New JWT Library for Kotlin Multiplatform

DevFeed: [Why We Wrote a New JWT Library for Kotlin Multiplatform](<https://devfeed.tech/articles/why-have-we-written-a-new-jwt-library-gustavo-fao-valvassori-38237.md>)

Original publisher: [Read original article](<https://touchlab.co/kjwt-intro>)

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

Content type: article

Language: en

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

Topics: [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [community](<https://devfeed.tech/tags/community.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

The author explains how a security-focused Kotlin Multiplatform banking project led to research into cryptography and JWTs. After finding that JJWT was limited for cross-platform projects, they began developing a new JWT library as a personal open-source learning project.

### Source excerpt

Earlier this year, we silently started working on and published a new KMP library. The reason it exists serves as a good lesson on how to start contributing to the open-source community.

## Investigating a Suspected Memory Leak in JetBrains Jewel with JVM Heap Analysis

DevFeed: [Investigating a Suspected Memory Leak in JetBrains Jewel with JVM Heap Analysis](<https://devfeed.tech/articles/the-one-liner-that-was-eating-our-memory-daniel-bertoldi-38330.md>)

Original publisher: [Read original article](<https://touchlab.co/the-one-liner-that-was-eating-our-memory>)

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

Content type: article

Language: en

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

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

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dump](<https://devfeed.tech/tags/dump.md>), [eclipse](<https://devfeed.tech/tags/eclipse.md>), [heap](<https://devfeed.tech/tags/heap.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>)

### AI overview

The article investigates a suspected memory leak in the JetBrains Jewel project, a Compose Multiplatform library targeting desktop applications. It explains using JVM-specific tools, including heap dumps and Eclipse Memory Analyzer Tool, to examine retained heap and identify possible memory-retention issues.

### Source excerpt

A kinda-brief tale about a memory leak, a heap dump, and a one-line fix.

## Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor

DevFeed: [Practical Kotlin Multiplatform: Implementing the Firebase Sign-up Operation with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor-25189.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-implementing-the-firebase-sign-up-operation-with-ktor/>)

Author: hitherejoe

Published: 2026-07-26T07:37:53Z

Content type: tutorial

Language: en

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

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Android](<https://devfeed.tech/topics/android.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

A tutorial on implementing a Firebase sign-up API request in a Kotlin Multiplatform application using Ktor. It defines an authentication repository interface and service implementation for Android and iOS clients, including API key, email, and password parameters and exception handling.

### Source excerpt

This post is part four of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part two built the authentication remote store and modelled its response. Implementing the Sign-up Endpoint Now that we've created the models for receiving back an authentication response, it's time for us... Continue reading ->

## The challenge of adding a Web target to DroidconKotlin - Kevin Schildhorn

DevFeed: [The challenge of adding a Web target to DroidconKotlin - Kevin Schildhorn](<https://devfeed.tech/articles/the-challenge-of-adding-a-web-target-to-droidconkotlin-kevin-schildhorn-38156.md>)

Original publisher: [Read original article](<https://touchlab.co/adding-web-target-to-droidcon>)

Published: 2026-07-22T18:00:00Z

Content type: tutorial

Language: en

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

Topics: [Web](<https://devfeed.tech/topics/web.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [wasm](<https://devfeed.tech/topics/wasm.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [crashlytics](<https://devfeed.tech/tags/crashlytics.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [droidcon](<https://devfeed.tech/tags/droidcon.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [project](<https://devfeed.tech/tags/project.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This post explains how Touchlab added browser Web support to the DroidconKotlin multiplatform app. It covers dependency limitations, the decision to use Web instead of Kotlin WASM, SQLDelight support, Coil and Okio filesystem issues, the lack of Firebase Crashlytics Web support, and localization and resource handling with Compose Multiplatform.

### Source excerpt

We recently added support for Web to our DroidconKotlin app. In this post we'll go over our process and the difficulties of adding a Web target to an existing project.

## Bring your KMP library to NuGet

DevFeed: [Bring your KMP library to NuGet](<https://devfeed.tech/articles/bring-your-kmp-library-to-nuget-25915.md>)

Original publisher: [Read original article](<https://proandroiddev.com/bring-your-kmp-library-to-nuget-02e1131a4707?source=rss-43bae76e8f81------2>)

Author: Isuru Rajapakse

Published: 2026-07-19T13:17:14Z

Content type: tutorial

Language: en

Sources: [Stories by Isuru Rajapakse on Medium](<https://devfeed.tech/sources/stories-by-isuru-rajapakse-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [NuGet](<https://devfeed.tech/topics/nuget.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [library](<https://devfeed.tech/tags/library.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [net](<https://devfeed.tech/tags/net.md>), [nuget](<https://devfeed.tech/tags/nuget.md>), [nuget-package](<https://devfeed.tech/tags/nuget-package.md>)

### AI overview

The article introduces kotlin-native-nuget, a Gradle plugin that packages Kotlin/Native libraries as NuGet packages with generated idiomatic C# bindings. It explains the motivation, configuration, publishing workflow, and supported mappings for Kotlin features such as classes, enums, data classes, coroutines, generics, interfaces, and exceptions.

### Source excerpt

with kotlin-native-nuget plugin, you can bring your Kotlin to C# idiomaticallyhttps://medium.com/media/0f185efc67390bbf440bfc33f5675f42/href A little while ago, I gave a talk where I tried to take a library written in Kotlin and hand it to a .NET developer as a NuGet package. By hand. It is 30 minutes of me walking into every brick wall you can imagine - the C ABI, marshalling strings, keeping objects alive across the boundary, making any of it look like C# a human would actually want to use. Introducing kotlin-native-nuget 🪟kotlin-native-nuget plugin auto-binds your kotlin api into C# I turned all of that into a plugin, so you don't have to hit a single one of those walls. You write Kotlin, and out the other side comes a NuGet package with a proper, idiomatic C# API: classes, enums, data classes, coroutines, Flow, generics, interfaces, the works. No FFI boilerplate, no hand-written [DllImport], no "here's a C header, good luck". Your friends over in .NET just `dotnet add package` it and use it like it was C# all along. It's called kotlin-native-nuget, and it's a Gradle plugin. Here's the pitch: GitHub - xxfast/kotlin-native-nuget: A plugin that packages a Kotlin/Native library as a NuGet package with generated C# bindings, and consumes C# NuGet packages from Kotlin The pitch 🛗plugins { kotlin("multiplatform") id("io.github.xxfast.kotlin.native.nuget") version "<version>" } kotlin { mingwX64 { binaries { sharedLib { baseName = "mycatlib" } } } macosArm64 { binaries { sharedLib { baseName = "mycatlib" } } } } nuget { publish { packageId = "MyCatLib" version = "1.0.0" authors = "yourname" description = "My Kotlin/Native library" rootPackage = "com.example.cats" } } That's it. Add the plugin, point it at your native targets, and run the publish task. Out pops a .nupkg. Why though? 🤔 It's a fair question. I got it a lot (even on that talk) Kotlin Multiplatform already reaches an absurd number of places: the JVM, Android, iOS, JS, Wasm, and native desktop. But there's th

## Practical Kotlin Multiplatform: Creating the Firebase Auth Remote Store with Ktor

DevFeed: [Practical Kotlin Multiplatform: Creating the Firebase Auth Remote Store with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-creating-the-firebase-auth-remote-store-with-ktor-25188.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-creating-the-firebase-auth-remote-store-with-ktor/>)

Author: hitherejoe

Published: 2026-07-18T15:17:19Z

Content type: tutorial

Language: en

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

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Android](<https://devfeed.tech/topics/android.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [networking](<https://devfeed.tech/tags/networking.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial, part two of a Kotlin Multiplatform series, explains how to build a Firebase Authentication remote store with Ktor. It models Firebase Authentication's REST API behind a shared interface for Android and iOS, covering account operations, token refresh, dependency injection, and tests with a mocked client.

### Source excerpt

This post is part two of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. If you missed it, part one covered setting up the shared networking module. Introduction With our shared module now set up, we have the foundations that we need to start building... Continue reading ->

## Rewriting Claw's HTML parser for over-the-air updates

DevFeed: [Rewriting Claw's HTML parser for over-the-air updates](<https://devfeed.tech/articles/rewriting-claw-s-html-parser-for-over-the-air-updates-38555.md>)

Original publisher: [Read original article](<https://msfjarvis.dev/posts/rewriting-claw-html-parser-for-over-the-air-updates/>)

Author: Harsh Shandilya

Published: 2026-07-17T13:34:00Z

Content type: opinion

Language: en

Sources: [Posts on Harsh Shandilya](<https://devfeed.tech/sources/posts-on-harsh-shandilya.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [css](<https://devfeed.tech/tags/css.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [llms](<https://devfeed.tech/tags/llms.md>)

### AI overview

The article describes rewriting the HTML parser in the Android app Claw, which browses Lobsters, after concerns about relying on the site's unsupported JSON API. It explains the parsing work, the breakage caused by markup changes, and the search for faster over-the-air deployment using approaches such as Expo EAS Update and Cash App's Zipline.

### Source excerpt

Struggling through a brand new framework so I can hotfix my app faster

## A Local-to-Backend Workflow for Iterating on AI Features in Kotlin Multiplatform Apps

DevFeed: [A Local-to-Backend Workflow for Iterating on AI Features in Kotlin Multiplatform Apps](<https://devfeed.tech/articles/building-ai-features-isn-t-scary-24741.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/building-ai-features-isnt-scary-92817564e364?source=rss----65bd178b00af---4>)

Author: Paul Woitaschek

Published: 2026-07-17T11:49:09Z

Content type: tutorial

Language: en

Sources: [YAZIO Engineering - Medium](<https://devfeed.tech/sources/yazio-engineering-medium.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [LLMs](<https://devfeed.tech/topics/llms.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [llm](<https://devfeed.tech/tags/llm.md>), [llms](<https://devfeed.tech/tags/llms.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>)

### AI overview

The article presents a workflow for building AI features in a Kotlin Multiplatform mobile app: define an app interface, implement and iterate on the prompt locally with Koog, then move the completed logic to a backend. It uses a voice-based nutrition-tracking example that converts natural-language input into typed proposed actions.

### Source excerpt

TLDR: Define the interface in the app, iterate locally with Koog, move the logic to the backend when it's done. AI features have a weird reputation among mobile developers. The model sits behind an API, the prompt lives on a server someone else owns, and every change means a ticket, a review, a deploy. So the whole topic feels like backend territory. But an AI feature is just a feature. Text in, structured data out, some logic in between. The only unusual part: the core of that logic is a prompt. And prompts are not designed, they are iterated. You try an input, look at the output, adjust, try again. Dozens of times. So the real problem is not building the feature. It's making that loop fast. The pattern I would like to show: define an interface in the app, build the real UI against it, implement it locally with Koog, iterate until the output is solid, then move the implementation to the backend. In Kotlin that last step is mostly copy paste. The example: track everything in one sentence We build Yazio, a nutrition tracking app, as Kotlin Multiplatform: one shared codebase for iOS and Android. That matters here, because everything below is written once and runs on both platforms. Tracking today is many small interactions: search a food, pick a portion, add water, log a workout. Now imagine the user just says what happened: "I had two scrambled eggs and a coffee for breakfast, drank half a liter of water, went for a 30 minute run, and for lunch I ate the same as yesterday."Users can track using voice The app answers with a list of proposed actions. The user deletes the wrong ones, speaks again to add what's missing, and confirms everything at once. Speech to text is solved on both platforms, so from our side the input is just a string. Messy natural language in, exact typed data out. That's what LLMs are good at. It's also the kind of logic you won't get right on the first try. The constraint: the key can't live in the app You can't ship an OpenAI or Anthropic API ke

## Building AI Features in Kotlin Multiplatform Apps with Local Prompt Iteration

DevFeed: [Building AI Features in Kotlin Multiplatform Apps with Local Prompt Iteration](<https://devfeed.tech/articles/building-ai-features-isn-t-scary-26004.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/building-ai-features-isnt-scary-92817564e364?source=rss-fbf9b6d94e65------2>)

Author: Paul Woitaschek

Published: 2026-07-17T11:49:08Z

Content type: tutorial

Language: en

Sources: [Stories by Paul Woitaschek on Medium](<https://devfeed.tech/sources/stories-by-paul-woitaschek-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [LLMs](<https://devfeed.tech/topics/llms.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [API](<https://devfeed.tech/topics/api.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [voice ai](<https://devfeed.tech/topics/voice-ai.md>), [anthropic](<https://devfeed.tech/topics/anthropic.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [anthropic](<https://devfeed.tech/tags/anthropic.md>), [api](<https://devfeed.tech/tags/api.md>), [backend](<https://devfeed.tech/tags/backend.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [llm](<https://devfeed.tech/tags/llm.md>), [llms](<https://devfeed.tech/tags/llms.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [openai](<https://devfeed.tech/tags/openai.md>), [speech](<https://devfeed.tech/tags/speech.md>), [voice](<https://devfeed.tech/tags/voice.md>)

### AI overview

This tutorial presents a workflow for building AI features in Kotlin Multiplatform mobile apps. It recommends defining the app interface first, implementing the feature locally with Koog to iterate quickly on prompts, and moving the implementation to a backend once the output is reliable. The example uses natural-language and voice-based nutrition tracking, with LLM output converted into proposed structured actions.

### Source excerpt

TLDR: Define the interface in the app, iterate locally with Koog, move the logic to the backend when it's done. AI features have a weird reputation among mobile developers. The model sits behind an API, the prompt lives on a server someone else owns, and every change means a ticket, a review, a deploy. So the whole topic feels like backend territory. But an AI feature is just a feature. Text in, structured data out, some logic in between. The only unusual part: the core of that logic is a prompt. And prompts are not designed, they are iterated. You try an input, look at the output, adjust, try again. Dozens of times. So the real problem is not building the feature. It's making that loop fast. The pattern I would like to show: define an interface in the app, build the real UI against it, implement it locally with Koog, iterate until the output is solid, then move the implementation to the backend. In Kotlin that last step is mostly copy paste. The example: track everything in one sentence We build Yazio, a nutrition tracking app, as Kotlin Multiplatform: one shared codebase for iOS and Android. That matters here, because everything below is written once and runs on both platforms. Tracking today is many small interactions: search a food, pick a portion, add water, log a workout. Now imagine the user just says what happened: "I had two scrambled eggs and a coffee for breakfast, drank half a liter of water, went for a 30 minute run, and for lunch I ate the same as yesterday."Users can track using voice The app answers with a list of proposed actions. The user deletes the wrong ones, speaks again to add what's missing, and confirms everything at once. Speech to text is solved on both platforms, so from our side the input is just a string. Messy natural language in, exact typed data out. That's what LLMs are good at. It's also the kind of logic you won't get right on the first try. The constraint: the key can't live in the app You can't ship an OpenAI or Anthropic API ke

## Our Droidcon US 2026 Picks - Sam Hill

DevFeed: [Our Droidcon US 2026 Picks - Sam Hill](<https://devfeed.tech/articles/our-droidcon-us-2026-picks-sam-hill-38198.md>)

Original publisher: [Read original article](<https://touchlab.co/droidcon-us-2026>)

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

Content type: article

Language: en

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

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [AI Development](<https://devfeed.tech/topics/ai-development.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [scaling](<https://devfeed.tech/topics/scaling.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-development](<https://devfeed.tech/tags/ai-development.md>), [android](<https://devfeed.tech/tags/android.md>), [droidcon](<https://devfeed.tech/tags/droidcon.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [js](<https://devfeed.tech/tags/js.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

Touchlab previews selected Droidcon USA 2026 talks covering AI and cross-platform mobile development, Kotlin Native project structures, KMP integration with Rust, migration decisions, and mobile testing.

### Source excerpt

With Droidcon right around the corner, here are the talks we are most excited about

## Practical Kotlin Multiplatform: Setting up the Kotlin Multiplatform Networking Module with Ktor

DevFeed: [Practical Kotlin Multiplatform: Setting up the Kotlin Multiplatform Networking Module with Ktor](<https://devfeed.tech/articles/practical-kotlin-multiplatform-setting-up-the-kotlin-multiplatform-networking-module-with-ktor-25190.md>)

Original publisher: [Read original article](<https://joebirch.co/android/practical-kotlin-multiplatform-setting-up-the-kotlin-multiplatform-networking-module-with-ktor/>)

Author: hitherejoe

Published: 2026-07-10T16:16:31Z

Content type: tutorial

Language: en

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

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [networking](<https://devfeed.tech/topics/networking.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [library](<https://devfeed.tech/tags/library.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [module](<https://devfeed.tech/tags/module.md>), [networking](<https://devfeed.tech/tags/networking.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>)

### AI overview

A tutorial series installment that sets up a Kotlin Multiplatform networking module with Ktor for shared Android and iOS code. It describes building a portable Firebase Authentication and Firestore REST API layer without relying on platform-specific SDKs.

### Source excerpt

This post is part one of a series adapted from Practical KMP, my book on building production Kotlin Multiplatform apps for Android and iOS. Part 1: Creating the Kotlin Multiplatform Module In this part of the book, we'll build the complete authentication remote store, defining a repository that handles every operation our app needs for... Continue reading ->

## Introducing the Composables CLI and MCP server

DevFeed: [Introducing the Composables CLI and MCP server](<https://devfeed.tech/articles/introducing-the-composables-cli-and-mcp-server-28455.md>)

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

Author: Alex Styl

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

Content type: release

Language: en

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

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [MCP](<https://devfeed.tech/topics/mcp.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [npm](<https://devfeed.tech/tags/npm.md>)

### AI overview

The Composables CLI is a command-line tool for creating native apps and modules with Composables UI preconfigured. It provides an interactive setup wizard, supports Kotlin Multiplatform project structure, can search live Composables UI documentation from the terminal, and can run an MCP server to help coding agents access component guidance and examples.

### Source excerpt

Start native apps with Composables UI without setting up every platform by hand.

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