# compose-multiplatform

Published articles for compose-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.

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

## Build Setup: Targets, Source Sets and buildSrc for tvOS in a Compose Multiplatform Fork

DevFeed: [Build Setup: Targets, Source Sets and buildSrc for tvOS in a Compose Multiplatform Fork](<https://devfeed.tech/articles/build-setup-targets-source-sets-and-buildsrc-for-tvos-in-a-compose-multiplatform-fork-22943.md>)

Original publisher: [Read original article](<https://proandroiddev.com/build-setup-targets-source-sets-and-buildsrc-for-tvos-in-a-compose-multiplatform-fork-4d9caafa30a8?source=rss----c72404660798---4>)

Author: Sajid Ali

Published: 2026-09-14T04:24:43Z

Content type: tutorial

Language: en

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

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [build](<https://devfeed.tech/tags/build.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

This tutorial explains the build setup for adding tvOS support to a Compose Multiplatform fork. It covers Kotlin Multiplatform targets, source-set organization shared between iOS and tvOS, and the build-layer work used to identify missing modules and dependencies.

### Source excerpt

Compose Multiplatform on tvOS This series: Compose Multiplatform on tvOS My Journey Making Compose Multiplatform Work on tvOS, and What I Learned Build Setup: Targets, Source Sets and buildSrc for tvOS in a Compose Multiplatform Fork (this post) Rendering (coming soon) Siri Remote input (coming soon) Siri Remote trackpad (coming soon) Screen density and text input (coming soon) Porting tv-material (coming soon) The Gradle plugin and third-party libraries (coming soon) Maintaining the fork (coming soon) Building a real app on it (coming soon) Part 1 was why this fork exists. This one is the build layer, and it comes before any Compose code, because in Kotlin Multiplatform a target is not a flag you flip at the end. It decides which source sets compile, which dependencies resolve, which klibs get published, which linker flags get passed. Until the build knows about tvosArm64, nothing tells you what is missing. So the first commits were build files. Once the targets were on, the compiler listed what was missing, module by module, and I worked through that list. Source set layout on the tvos branch I started on a branch called tvos, based on upstream. Back then JetBrains called iOS "uikit" in this repository and the source set was uikitMain. Because tvOS is also UIKit underneath, it made sense to have a common source parent for both iOS and tvOS. But iOS was already being called uikit, so I chose uiKitCommonMain as the source set name and moved all the UIKit files there, keeping only the iOS specific files in uikitMain and putting the tvOS specific files in a new source set, tvosMain. The problem with this approach was how to keep up with upstream. I tried a symlink to the uikit source set, and then overriding the tvOS files in a separate target. The override worked but complicated the process. At that time my goal was to make it runnable on tvOS however possible, so we would have a proof of concept. So I did a lot of hacks in the tvos branch to make it runnable, and af

## jetc.dev Newsletter Issue #330

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>), [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [android](<https://devfeed.tech/tags/android.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [ios](<https://devfeed.tech/tags/ios.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [testing](<https://devfeed.tech/tags/testing.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Newsletter Issue #330 covers Compose Multiplatform support for Apple tvOS, lessons from Android foldables for potential foldable iPhone development, testing and recomposition issues, image-loading test techniques, animated number transitions, and related Compose tools and libraries.

### Source excerpt

Apple TV! Apple foldables! Microsoft Office! And other topics not necessarily involving gigantic firms!

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

## jetc.dev Newsletter Issue #329

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Compose Multiplatform 1.12.0 Released

DevFeed: [Compose Multiplatform 1.12.0 Released](<https://devfeed.tech/articles/compose-multiplatform-1-12-0-released-8788.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/kotlin/2026/08/compose-multiplatform-1-12-0/>)

Author: Elvira Mustafina

Published: 2026-08-26T13:28:41Z

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

Topics: [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [compose-hot-reload](<https://devfeed.tech/topics/compose-hot-reload.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Web](<https://devfeed.tech/topics/web.md>), [compose-for-desktop](<https://devfeed.tech/topics/compose-for-desktop.md>), [Font](<https://devfeed.tech/topics/font.md>)

Tags: [compose-for-desktop](<https://devfeed.tech/tags/compose-for-desktop.md>), [compose-for-web](<https://devfeed.tech/tags/compose-for-web.md>), [compose-hot-reload](<https://devfeed.tech/tags/compose-hot-reload.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [fonts](<https://devfeed.tech/tags/fonts.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [releases](<https://devfeed.tech/tags/releases.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Compose Multiplatform 1.12.0 introduces an experimental MCP server for Compose Hot Reload, enabling AI coding agents to reload applications, inspect rendered UI and semantic trees, simulate interactions, and read logs. The release also adds automatic web font fallback and a more flexible desktop window and dialog API.

### Source excerpt

Compose Multiplatform 1.12.0 is out! This version brings new tooling for AI assistants, improvements to web resource management, and finer control over desktop window states. Here are the highlights of this release: For a complete overview of the changes, check out What's new in Compose Multiplatform 1.12.0 or the release notes on GitHub. Get Started [...]

## jetc.dev Newsletter Issue #327

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

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

Author: CommonsWare

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

Content type: news

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Exploring Compose HTML for Server Side Rendering

DevFeed: [Exploring Compose HTML for Server Side Rendering](<https://devfeed.tech/articles/exploring-compose-html-for-server-side-rendering-8789.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/kotlin/2026/08/exploring-compose-html-for-server-side-rendering/>)

Author: Frederik Pietzko

Published: 2026-08-14T12:15:09Z

Content type: article

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [HTML](<https://devfeed.tech/topics/html.md>), [React](<https://devfeed.tech/topics/react.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [Nuxt.js](<https://devfeed.tech/topics/nuxt.md>), [Svelte](<https://devfeed.tech/topics/svelte.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [development](<https://devfeed.tech/tags/development.md>), [framework](<https://devfeed.tech/tags/framework.md>), [html](<https://devfeed.tech/tags/html.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [news](<https://devfeed.tech/tags/news.md>), [react](<https://devfeed.tech/tags/react.md>), [server](<https://devfeed.tech/tags/server.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vue](<https://devfeed.tech/tags/vue.md>), [web](<https://devfeed.tech/tags/web.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

An exploratory proposal for extending Compose HTML with a JVM target to support server-side rendering. It argues that Kotlin and Compose components could provide type-safe, reusable server-rendered UI without a separate templating language, while discussing the trade-offs of canvas-based web rendering for SEO, loading times, and accessibility.

### Source excerpt

Something is happening in server-rendered web development. React shipped Server Components. HTMX made "hypermedia" cool again. Phoenix LiveView proved a server can push interactive UI updates without a client framework in sight. Every ecosystem seems to be rediscovering the server as a place to render UI, except one: the JVM. What if Compose, the UI [...]

## Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app

DevFeed: [Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app](<https://devfeed.tech/articles/scanning-bus-stop-codes-with-ml-kit-and-vision-in-the-galwaybus-compose-multiplatform-app-25195.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/galwaybus-scan-stop-kmp/>)

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

Content type: tutorial

Language: en

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

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [ML Kit](<https://devfeed.tech/topics/ml-kit.md>), [Android](<https://devfeed.tech/topics/android.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apple](<https://devfeed.tech/tags/apple.md>), [camera](<https://devfeed.tech/tags/camera.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [code](<https://devfeed.tech/tags/code.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ml-kit](<https://devfeed.tech/tags/ml-kit.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [ocr](<https://devfeed.tech/tags/ocr.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [platform](<https://devfeed.tech/tags/platform.md>), [recognition](<https://devfeed.tech/tags/recognition.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how the GalwayBus app scans six-digit bus stop codes using on-device ML Kit on Android and Apple's Vision framework on iOS. Camera preview, matching logic, and UI are shared through Compose Multiplatform, while platform-specific implementations handle camera access and OCR. Recognized six-digit runs are matched exactly to stops, and overlapping recognition requests are avoided by dropping newer frames.

### Source excerpt

Every bus stop in Galway has a plate with a 6-digit stop code printed on it. We recently added a "Scan" tab to the GalwayBus app that lets you point the camera at that plate and jump straight to the stop's departures. The text recognition runs entirely on device (ML Kit on Android, Apple's Vision framework on iOS), with the camera preview, matching logic and UI all living in the shared Compose Multiplatform code.

## jetc.dev Newsletter Issue #325

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Know Kotlin? Ship It Everywhere and Win at Shipaton 2026

DevFeed: [Know Kotlin? Ship It Everywhere and Win at Shipaton 2026](<https://devfeed.tech/articles/know-kotlin-ship-it-everywhere-and-win-at-shipaton-2026-8786.md>)

Original publisher: [Read original article](<https://blog.jetbrains.com/kotlin/2026/07/know-kotlin-ship-it-everywhere-and-win-at-shipaton-2026/>)

Author: Ekaterina Petrova

Published: 2026-07-31T13:49:33Z

Content type: article

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

Topics: [App](<https://devfeed.tech/topics/app.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [ios](<https://devfeed.tech/tags/ios.md>), [junie](<https://devfeed.tech/tags/junie.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [news](<https://devfeed.tech/tags/news.md>)

### AI overview

JetBrains promotes its Ship Kotlin Everywhere Award at RevenueCat Shipaton 2026, inviting developers to build a new Kotlin Multiplatform app for multiple platforms. The article outlines prizes, participant resources, and a prior participant's experience sharing code across Android and iOS.

### Source excerpt

Somewhere in your notes there's an app idea waiting for a free weekend that never comes. Consider this its official deadline: RevenueCat Shipaton 2026, the world's biggest mobile hackathon, runs August 1 to September 30. If you know Kotlin, that idea is closer to the App Store than you think. Join the Shipaton The Ship [...]

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

## jetc.dev Newsletter Issue #324

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [media3](<https://devfeed.tech/topics/media3.md>), [ExoPlayer](<https://devfeed.tech/topics/exoplayer.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [exoplayer](<https://devfeed.tech/tags/exoplayer.md>), [media3](<https://devfeed.tech/tags/media3.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

jetc.dev Newsletter Issue #324 reviews recent Jetpack Compose and Media3 updates, highlights Kotlin and Compose guidance, and presents resources for Compose Multiplatform testing, accessibility scanning, dockable panels, charting, and photo editing.

### Source excerpt

PinnableContainer! End-to-end testing! Accessibility scanner! Docked panels! Photo editing! And... do we *really* need Canvas() everywhere?!?

## Adding a Koog AI assistant (with structured output) to the FantasyPremierLeague CMP sample

DevFeed: [Adding a Koog AI assistant (with structured output) to the FantasyPremierLeague CMP sample](<https://devfeed.tech/articles/adding-a-koog-ai-assistant-with-structured-output-to-the-fantasypremierleague-cmp-sample-25194.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/fpl-koog-structured-output/>)

Published: 2026-07-27T23:00:00Z

Content type: tutorial

Language: en

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

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [framework](<https://devfeed.tech/tags/framework.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [llm](<https://devfeed.tech/tags/llm.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This tutorial adds a Koog-powered AI assistant to a FantasyPremierLeague Compose Multiplatform sample. It uses structured output to return typed player and fixture IDs, allowing the app to render cards and resolve references against its existing data.

### Source excerpt

Koog is JetBrains' Kotlin framework for building AI agents. In this article we're going to use it to add an in-app "FPL Assistant" to the FantasyPremierLeague Compose Multiplatform sample. This is a chat screen where you can ask about players, fixtures and mini-league standings. The answers render as player and fixture cards rather than just as text.

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

## jetc.dev Newsletter Issue #323

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [releases](<https://devfeed.tech/topics/releases.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Newsletter Issue #323 reviews new Jetpack Compose alpha updates, discusses reorganizing common behaviors in Compose UI, and highlights official Lottie support for Compose. It also links to Compose Multiplatform projects and resources.

### Source excerpt

Alphas! Replacing your base fragment! Official Lottie Compose support! And, I don't think you're ready for this... JellyFab?!?

## jetc.dev Newsletter Issue #322

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## jetc.dev Newsletter Issue #321

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

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

Author: CommonsWare

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

Content type: article

Language: en

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

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

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dev](<https://devfeed.tech/tags/dev.md>), [migration](<https://devfeed.tech/tags/migration.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [ui](<https://devfeed.tech/tags/ui.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

Jetc.dev Newsletter Issue #321 reviews recent Jetpack Compose updates, including bug fixes and library releases, Nav3 migration experiences, a new 2D layout component, theme-aware Maps for Compose, Compose Multiplatform migration, and other Compose UI developments.

### Source excerpt

Compose stable and beta updates! Nav3 migrations! Grid! Effects! And GLFW for Compose for Desktop?!?

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

## Introducing Composables UI

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

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

Author: Alex Styl

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

Content type: release

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Custom Scopes in Koin: A Practical Example

DevFeed: [Custom Scopes in Koin: A Practical Example](<https://devfeed.tech/articles/custom-scopes-in-koin-a-practical-example-22968.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/custom-scopes-in-koin-a-practical-example-79cc1188810f?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-06-19T12:01:01Z

Content type: tutorial

Language: en

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

Topics: [App](<https://devfeed.tech/topics/app.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [components](<https://devfeed.tech/tags/components.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [data](<https://devfeed.tech/tags/data.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [project](<https://devfeed.tech/tags/project.md>), [scopes](<https://devfeed.tech/tags/scopes.md>), [state](<https://devfeed.tech/tags/state.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

A practical tutorial on using custom scopes in Koin to keep a selected user profile image available across an application. It demonstrates a session scope, session data, and a stateless session manager using StreamPlayerApp as the example.

### Source excerpt

Hey friends 👋 Today, we are going to explore how we can create a custom scope, one of the powerful features provided by Koin. To make things practical 🔨, we'll walk through a real-world use case from the open-source project StreamPlayerApp (created by CodandoTV). Wireframes of a mobile app -- Unsplash by @alvarordesignWhat is the problem? StreamPlayerApp is an open-source project that aims to recreate the core experience of Netflix. One of its features allows users to select a profile, similar to the profile selection screen found in streaming platforms. The selected profile image needs to be accessible across the entire application, ensuring a consistent user experience on every screen. Whenever a user changes their profile, the updated image should be immediately reflected throughout the app, allowing all screens to stay synchronized with the current profile selection. Screenshots demonstrating the user profile selection feature.How we solve this problem using Custom Scopes? First, we create a class that represents the scope of a user session: class SessionScope Next, we create a lightweight data class containing only the information that needs to be kept in memory throughout the user session: data class UserSessionInfo( // represents the time user changed the profile val userTimestamp: Instant, // represents the selected picture url val profileImageUrl: String ) We then created a dedicated class responsible for managing the user's session lifecycle and state. class SessionManager { private val scopeId: String = "user_session" /** * Create custom scope and hold the user's session data */ fun openSession(imageUrl: String) { closeSession() val koin = KoinPlatform.getKoin() val scope = koin.createScope<SessionScope>( scopeId = scopeId, ) scope.declare( UserSessionInfo( userTimestamp = Clock.System.now(), profileImageUrl = imageUrl ) ) } /** * Retrieve the current user session */ fun userSessionInfo(): UserSessionInfo? { return KoinPlatform.getKoin() .getScopeOrNull(sc

## Antigravity TagSpotter - KotlinMultiPlatform evolve

DevFeed: [Antigravity TagSpotter - KotlinMultiPlatform evolve](<https://devfeed.tech/articles/antigravity-tagspotter-kotlinmultiplatform-evolve-32038.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/antigravity-tagspotter-kotlinmultiplatform-evolve/>)

Published: 2026-06-14T19:10:33Z

Content type: opinion

Language: en

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

Topics: [kotlinmultiplatform](<https://devfeed.tech/topics/kotlinmultiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Android](<https://devfeed.tech/topics/android.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Web](<https://devfeed.tech/topics/web.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [android](<https://devfeed.tech/tags/android.md>), [antigravity](<https://devfeed.tech/tags/antigravity.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [git](<https://devfeed.tech/tags/git.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinmultiplatform](<https://devfeed.tech/tags/kotlinmultiplatform.md>), [migration](<https://devfeed.tech/tags/migration.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article documents an attempt to migrate the TagSpotter Android app toward Kotlin Multiplatform using Antigravity 2.0 and parallel agents. It describes preparation such as modularizing the codebase, adding tests, researching KMP migration, and planning support for iOS, Android, Desktop, and Web, while retaining Android-specific features such as the Wear app.

### Source excerpt

The Challenge - bring on the subagents Can I make my TagSpotter Android app be multi-platform in a weekend using Antigravity 2.0 and a swarm of agents running in parallel? Can I do this even though I don't know how to use Xcode and I don't want to break my existing app. This was the question I had. TagSpotter is medium featured Android app I built two weeks ago. I use it to capture interesting and favourite spots in the city like unusual graffiti or yarn bombed sculptures. It has a fair few features including: Capture the places by camera with location Upload a photo AI lookup to find info on the internet from the photo, links, title, artist and suggested tags Export the spots in a zip file and import them again. This is how I share my favourite spots with friends. Make field notes by typing or speaking Share my favourites to Google maps for easy navigation Good category and location based filtering Wear app that can list started spots and navigate to a spot on the watch A good challenge because it isn't just a hello world app. The prep Because the clock would be ticking, I did a little bit of prep to make sure I had everything ready. Prep the codebase Clean up the app, no warnings, lint issues or unused imports Make sure the screens work in landscape, desktop mode will need this Split the app into feature based and pure kotlin modules. I know Compose multiplatform and pure kotlin modules can easily be re-used. Put some tests in place Checked everything works and make a tag in git incase Antigravity borked the project. Light research I collected a few salient links about KMP migration. A good blog post, some info on project structure and a link to the open source kmp libraries I might need. Nitty Gritty Friday evening, let's go. Make a plan I want to convert this app to a KMP app that supports iOS, Android, Desktop and Web. The other platforms do not have to support all features, e.g. the wear app. But Android still has to support this feature. I want to share as mu

## Koin Annotations Make expect/actual Obsolete in KMP

DevFeed: [Koin Annotations Make expect/actual Obsolete in KMP](<https://devfeed.tech/articles/koin-annotations-make-expect-actual-obsolete-in-kmp-22971.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/koin-annotations-make-expect-actual-obsolete-in-kmp-5f1445e2055e?source=rss----925561f2ecdf---4>)

Author: Tezov

Published: 2026-06-11T08:48:59Z

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>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [development](<https://devfeed.tech/tags/development.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlinmultiplatformmobile](<https://devfeed.tech/tags/kotlinmultiplatformmobile.md>)

### AI overview

A tutorial showing how Koin annotations and the Koin compiler can replace expect/actual declarations in Kotlin Multiplatform projects. It defines shared interfaces in commonMain, provides Android and iOS implementations through dependency injection, and uses Compose Multiplatform to resolve the platform-specific behavior.

### Source excerpt

Source code available at the end of the article In Kotlin Multiplatform (KMP) projects, expect/actual is traditionally used to handle platform-specific implementations. In a previous story, I showed how to reduce expect/actual to only one per module using Koin DSL. Today, we can go further. With Koin annotations and the Koin compiler, you can completely bypass expect/actual. This method works seamlessly with Compose Multiplatform and lets you maintain a clean architecture while keeping platform-specific logic where it belongs. Previous Story Mastering Koin Annotations with the Koin Compiler Through Unit Tests -> link Next Story I don't know yet-> coming soon Setting the Stage Inside commonMain, Koin is initialized like this: @Module @ComponentScan( "com.tezov.store.shared.di", "com.tezov.store.shared.data", "com.tezov.store.shared.domain", "com.tezov.store.shared.presentation" ) class SharedModule @KoinApplication(modules = [SharedModule::class]) class SharedApplication val koinConfiguration = koinConfiguration<SharedApplication> { /* nothing here for the demo */ } I'm using: koinCompiler = "0.6.2" koinCompose = "4.2.1-RC1" koinComposeAnnotation = "4.2.1-RC1" The important part here is the @ComponentScan. Koin doesn't just scan commonMain. It also scans the platform modules: androidMain and iosMain. That detail is key because it lets Koin find all implementations without any manual wiring. Defining Contracts in commonMain Instead of expect, we define interfaces for domain and presentation layers. Domainpackage com.tezov.store.shared.domain interface PlatformDomainProtocol { fun description(): String }Presentationpackage com.tezov.store.shared.presentation import androidx.compose.runtime.Composable interface PlatformPresentationProtocol { @Composable fun ComposableFromPlatform() } Yes, you can even include a @Composable in an interface. This is powerful: your shared code can remain clean while delegating platform-specific behavior entirely to the DI container. When usi

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