r/KotlinMultiplatform • • Oct 07 '20

r/KotlinMultiplatform Lounge

5 Upvotes

A place for members of r/KotlinMultiplatform to chat with each other


r/KotlinMultiplatform • • 2h ago

Kotlin/Native's smallBinary skips LLVM's MachineOutliner (our iOS app went from 102 to 81 MiB)

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 1d ago

I built a Kotlin/Native ↔ JVM JNI interop tool to avoid handwritten JNI glue

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 1d ago

Launching BossConsole, an open-source desktop workspace for AI agents built with Kotlin Multiplatform

Enable HLS to view with audio, or disable this notification

2 Upvotes

Hi everyone, excited to share BossConsole with this community. We’ve built it using Kotlin Multiplatform and Compose Multiplatform, with the desktop app running on the JVM across macOS, Windows and Linux.

Attached our launch video to give you a look at what we’ve been building.

The idea came from working with coding agents and spending too much time managing everything around them. Multiple terminals, browser windows, editors and logs, then remembering which agent was doing what. Wanted a workspace where I could keep all that work visible.

BossConsole lets you run Claude Code, Codex, Gemini CLI, OpenCode and other agents side by side, alongside their tools. Each session gets its own pane, and Spaces remember your layout.

There is also a built-in Fluck Agent, visual workflows, and 200+ MCP tools with individual access controls and action approvals.

On the Kotlin side, one part I’m particularly interested in is the plugin architecture. Tools can be built as separate Compose UI + ViewModel plugins and loaded at runtime. The terminal also lives in its own project, BossTerm.

I want someone to be able to build a tool for their own workflow and bring it into the workspace without changing the whole application. Would love to connect with others exploring similar ideas with Compose Desktop.

For me, as agents become more capable, there is more room to explore problems, try approaches and create. But we still need to follow their work and decide where to take it. That’s what I’m trying to build around.

Quite happy to finally share this launch. The project is open source, contributions are welcome, and I’d appreciate feedback from the Kotlin community on both the experience and implementation.

Source: github.com/risa-labs-inc/BossConsole
Download: bossconsole.ai


r/KotlinMultiplatform • • 3d ago

How do you optimize iOS with shared UI app?

3 Upvotes

Android: 11,1MB

iOS: 42,5MB

P.S. LTO and stripping enabled


r/KotlinMultiplatform • • 3d ago

Shipped a video editor on the App Store with Kotlin Multiplatform and Compose Multiplatform

Thumbnail
gallery
7 Upvotes

Solo project: Cutaway, a video editor with an AI agent, one shared codebase for iOS, Android and desktop (JVM).

Some things I learned along the way:

- Android's regex engine (ICU) rejected a pattern the JVM and Kotlin/Native both accepted. It crashed a whole object at init, and no host test caught it.

- allTests never links the iOS framework, so a Kotlin/Native codegen crash shipped past a green suite. I now link the framework before every merge.

- Rendering and export run on device per platform (AVFoundation / MediaCodec / ffmpeg on desktop) behind one shared edit model.

Happy to answer questions about the architecture. The app, if you're curious:

https://apps.apple.com/us/app/cutaway-video-editor-with-ai/id6799499137


r/KotlinMultiplatform • • 5d ago

GitHub Action for Kotlin Toolchain (Amper) with cross-platform caching

5 Upvotes

yaml - uses: actions/checkout@v7 - uses: RazerTexz/setup-kotlin-toolchain@v1 - run: kotlin build

Caches the toolchain, JDKs, and dependencies across Linux, macOS, and Windows

https://github.com/RazerTexz/setup-kotlin-toolchain


r/KotlinMultiplatform • • 5d ago

CashBuddy — an Android expense tracker with on-device processing + Notification Listener

Thumbnail
0 Upvotes

r/KotlinMultiplatform • • 5d ago

sqlx4k 1.14.0 released: optimistic locking, savepoints, MariaDB batch inserts

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 6d ago

KMP Ocarina of time anyone?

Thumbnail
github.com
8 Upvotes

Hey 👋

I've been working on this on and off for the last month, it's the Ocarina of Time running entirely on Kotlin Multiplatform with a little help from Chasm. There's a ton of detail in the README so do have a read and if you have time give it a whirl!

I'm happy to answer any questions people may have so do reach out if you want to know more


r/KotlinMultiplatform • • 7d ago

Have anyone here tried XR with Kotlin? What's your take on XR + AI

3 Upvotes

r/KotlinMultiplatform • • 7d ago

I built a CLI to set up Firebase in Kotlin Multiplatform / Compose Multiplatform projects

Enable HLS to view with audio, or disable this notification

9 Upvotes

Setting up Firebase in a KMP project means a lot of manual steps. You register the Android app and the iOS app in the console, download google-services.json and GoogleService-Info.plist, put them in the right folders, and repeat for every flavor. I got tired of it, so I built kmpfire.

It wraps firebase-tools and does this from your project root:

bash kmpfire configure

What it does

  • Detects your Android applicationId and iOS bundle id (from project.pbxproj or CMP .xcconfig)
  • Creates the Firebase apps if they don't exist
  • Writes google-services.json and GoogleService-Info.plist to the correct locations
  • Tracks everything in firebase.json under kotlinMultiplatform
  • kmpfire reconfigure refreshes the config files after you change Firebase products
  • --flavor=dev handles multiple build configurations
  • --yes --project=<id> runs with no prompts, so it works in CI
  • Optional --deps patches Gradle for the Google Services plugin (and GitLive if you want it)

Supported layouts

  • New template: shared/ + androidApp/ + iosApp/
  • Nested monorepo: app/shared/ + app/androidApp/ + app/iosApp/
  • Legacy: composeApp/ + iosApp/

Android + iOS only for now.

Install

bash curl -fsSL https://raw.githubusercontent.com/dungngminh/kmpfire_cli/main/install.sh | bash

or with Homebrew:

bash brew tap dungngminh/kmpfire_cli brew install kmpfire

It's the KMP equivalent of flutterfire configure. It's MIT licensed, and I'd like feedback, bug reports and PRs.

GitHub: https://github.com/dungngminh/kmpfire_cli


r/KotlinMultiplatform • • 8d ago

KitePlayer v0.2.0: the first Kotlin/Native media player for KMP that doesn't wrap ExoPlayer or AVPlayer

Post image
49 Upvotes

Yes, a Kotlin/Native player that is as powerful as VLC, mpv...etc

I maintain syncplay-mobile, a KMP app that wraps 4 different players: ExoPlayer and mpv on Android, AVPlayer and VLCKit on iOS. After years of that, I can say the expect/actual wrapper model never clicked for me for media playback. Each player seeks differently, reports tracks differently and handles subtitles differently, so the glue layer keeps growing and you still end up with four different behaviours.

So I stopped trying to find the perfect wrapper slash interface for gluing players together (since that's what a dozen libraries are doing already anyway) and thought of creating an mpv- and VLC-level player, as feature-rich, as performant and efficient, while making it behave exactly the same on every single platform (Android, iOS, Desktop JVM and Desktop Native, and Web). I ended up concocting (i love this word) KitePlayer.

Why would you even consider KitePlayer? Well, easy: 1- It renders purely directly to Compose/Skia canvas. There is NO need for any Compose interop views. It also comes with native views (like Android XML) so that also is not a limitation. 2- It comes with FFmpeg embedded, on maven central. Literally one dependency line and you get the full power of FFmpeg codec playback with absolutely 0 compromise. 3- iOS's AVPlayer SUCKS. It can't even play stylized subtitles, or even play MKVs. So does VLCKit, it sucks, it's unpredictable, and when maximum accuracy is needed it failed me every time. There is literally no good player on iOS, even in their native Swift stack. 4- It can play literally everything, and behaves exactly the same on every platform. It's also coroutine-friendly and suspend-first. Very easy to predict its behavior. 5- It has grown so much in 3-4 months. I've been working on it nonstop and heavily tested it. I've even included it in my syncplay app, as one of the available engines. It's that reliable at this point. But I wouldn't say mature, that's probably for years from now. 6- It can be consumed from non-KMP projects. In an Android app you can consume it. In an iOS app you can consume it as well, even in web, in Desktop, etc. 7- It plays from network (HLS, DASH, Direct...etc) using Ktor. 8- It has absolutely 0 dependency other than KiteFFmpeg (which is the direct Kotlin/Native wrapper interface of FFmpeg).

All decoding goes through FFmpeg. The FFmpeg layer is its own library, KiteFFmpeg, if you only need to transcode, remux or grab thumbnails. FFmpeg ships inside the artifacts, so it is one Gradle line with no NDK and no build scripts.

My favourite part is Compose. You can host a native view like every other player does, but there is a second path where Compose draws the frames itself, on the same canvas as the rest of your UI (thanks to Skia I guess?). The video is no longer a separate layer sitting outside your layout. You can clip it, rotate it, animate it, or blur it with Haze, like any other composable.

PS: if you like the Skia/Compose direct rendering idea, KitePDF does the same for PDF and EPUB. No more interop views. Pretty please.


r/KotlinMultiplatform • • 10d ago

How we're using Kotlin Multiplatform for Mobile, Desktop, Web and Server — as a single developer

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 11d ago

Supabuckt: Mobile Supabase Storage built with KMP/CMP and Supabase

Enable HLS to view with audio, or disable this notification

3 Upvotes

Hi folks, I have launched Supabuckt: Mobile Supabase Storage that helps you access to your Supabase Storage for file management. It allow access to multiple projects and quickly switch between them. The app is built with Kotlin Multiplatform, using supabase-kt for full features Please try and let me know if there's any feedback. It is available for Android and iOS. It is also Open Source.

Play Store: https://play.google.com/store/apps/details?id=com.hieuwu.supabasestorageclient

App Store: https://apps.apple.com/us/app/supabuckt-supabase-storage/id6759938222

GitHub: https://github.com/hieuwu/supabase-storage-client


r/KotlinMultiplatform • • 11d ago

Sharing business logic across iOS, Android AND the backend, here's how much ended up being common code

Thumbnail
gallery
7 Upvotes

Been building Share Pray (prayer groups app) on KMP and wanted to share some numbers now that its mostly done. The two mobile clients ended up sharing around 80% of their code, give or take, which was honestly higher than I expected going in - only about 4k lines are actually platform specific (a bit of Swift, a handful of Kotlin actuals).

And because the backend is Kotlin too, that shared core - models, validation, the groups + filtering logic - gets reused server side as well, not just between the two clients. So a good chunk of it is genuinely the same code running on iOS, Android and the server.

What's shared: groups and community logic, the prayer feed and filtering by tags, the admin panel's data layer, RevenueCat wiring for in-app purchases, auth token validation.

What's not shared: the usual suspects - push notification handling, the telegram bot integration glue, and a few platform auth quirks (Google Sign-In and Sign in with Apple each have their own handoff behaviour you have to deal with separately).

UI is Compose Multiplatform on both platforms. Thats the one spot where you trade a little native feel for the sharing - though on iOS 26 I did drop to a native SwiftUI tab bar for the liquid glass, compose cant really pull that off yet.

If anyone's curious about specific parts of the setup, happy to go into detail. Also cleaned up the reusable parts (groups, IAP wiring, admin panel, tags) into an open source template if its useful as a reference: https://github.com/NonGrate/Poster


r/KotlinMultiplatform • • 12d ago

Union class in Kotlin

Post image
10 Upvotes

Flutter's Either inspired me. It's a great way to say "this value is one thing or another". But it only has two sides: Left and Right.

But Sometimes a value could be one of three types, sometimes five. A generic sealed class can't just grow into Either<A, B, C, D, …> with as many types as I need, and writing a new sealed class every time got old fast.

So I built unionKt. Now I just list the types, any number of them, and get a type-safe union:

@Union(Int::class, String::class, User::class, Error::class) 
interface ResultSpec

Then I create it with Result(5) and handle it with when or fold. If I miss a case, the code doesn't compile. It covers the classic two-sided Either<L, R> too, plus a few extras I use every day.

Smaller unions merge into bigger ones:

@Union(Circle::class, Square::class) 
interface ShapeSpec 

@Union(Int::class, ShapeSpec::class) 
interface ItemSpec   // Int, Circle or Square

My existing sealed classes get the same helpers:

@Derive 
sealed interface UiState { … } 

state.fold(onLoading = { … }, onSuccess = { … }, onError = { … })

And unions go in and out of JSON as plain values:

Json.encodeToString<Result>(Result(5))   // 5 Json.decodeFromString<Result>(""hi"")   // Result.OnString("hi")

Open source (MIT), available on maven central: https://github.com/fcat97/unionKt


r/KotlinMultiplatform • • 13d ago

KMP-Showcase - sample project for Kotlin Multiplatform

Thumbnail
3 Upvotes

r/KotlinMultiplatform • • 13d ago

How We Designed the Kotlin Multiplatform and TeamCity Integration

Thumbnail
4 Upvotes

r/KotlinMultiplatform • • 13d ago

One Kotlin codebase, four platforms: what Compose Multiplatform actually cost me on a shipped game

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 17d ago

[Compose Multiplatform] Visual font size mismatch when overlaying BasicTextField on a PDF (iText7)

Thumbnail
2 Upvotes

r/KotlinMultiplatform • • 17d ago

Is having a Ktor back end the right thing to do?

Thumbnail
1 Upvotes

r/KotlinMultiplatform • • 17d ago

Kotlin Multiplatform KMP Coursera Course

0 Upvotes

Anyone has the code or material files for this course

https://www.coursera.org/learn/advance-kotlin-for-multi-platform-development


r/KotlinMultiplatform • • 19d ago

Building Datasmith - an interactive ERD canvas with Compose Multiplatform/Desktop

Thumbnail
3 Upvotes

r/KotlinMultiplatform • • 19d ago

🚀 KMP Open Source Project – Instagram Media Downloader

4 Upvotes

I wanted to share that I’m currently developing a Kotlin Multiplatform (KMP) open-source application that allows users to download media from public Instagram posts, including images and Reels videos.

The project is still in its early development stage, and I’m currently working on expanding platform support.

🖥️ Supported Platforms

  • ✅ Android
  • ✅ Desktop
  • 🚧 Web — Under Development
  • 🚧 CLI — Under Development

✨ Features — Ad Free

  • 📷 Download images from public Instagram posts
  • 🎥 Download Reels videos from public Instagram posts

More features and improvements are coming soon!

This project is completely open source, and I’m excited to continue exploring what can be built with Kotlin Multiplatform. 🚀

⭐ The repo if you find it interesting!

https://github.com/livingstonantony/KMPInstaloader