Sign in

Sebastian Sellmair

@sellmair.dev
548 followers 58 following 148 posts

Software Engineer @ JetBrains Working on all things Kotlin. KMP | Intellij | Compose

PostsRepliesMedia
Sebastian Sellmair @sellmair.dev · 17/07/2026
Yep, this works in our prototype
140
Sebastian Sellmair @sellmair.dev · 17/07/2026
Android shall still push the aar, of course!
050
Sebastian Sellmair @sellmair.dev · 17/07/2026
All variants will be retained and just point to the .kar as the artifact. 😃 We pushed a branch, so you can see the prototype! We tested agp 8 and 9 compliance 🙌
140
Sebastian Sellmair @sellmair.dev · 17/07/2026
Having just a single publication, with a single .pom and .module file alongside a single .kar published, will speed up sync times massively. 😎
240
Sebastian Sellmair @sellmair.dev · 17/07/2026
But downloading KMP libs never utilized my network fully. Why? Because we had to request 10K .pom and .module files from the repository sequentially and then download many small .klib files. Network latency prevented my bandwidth from being actually used 😫
140
Sebastian Sellmair @sellmair.dev · 17/07/2026
Appendix: I personally predict that such a new library format will speed up Gradle IDE sync drastically, and it is not for the reason you might think when reading the previous messages (publication size). I do have f*in fast network wherever I work...
150
Sebastian Sellmair @sellmair.dev · 17/07/2026
Obviously, all of this is just a prototype, and I cannot predict when (or even if) we will be able to ship this, but I love seeing that a team like Kotlin is able to react quickly. Hope you enjoyed me sharing this ✌️ Have fun, continue building KMP libs. We got you.
180
Sebastian Sellmair @sellmair.dev · 17/07/2026
What I really love about the new .kar proposal is that it simplifies the conceptualization of KMP libraries. I still dream about being able to just download a single binary, use kotlinc, compile against what I just downloaded, and get something useful out of it.
150
Sebastian Sellmair @sellmair.dev · 17/07/2026
The xz compression window will slide right over such files, figuring out that they are mostly the same and then encode it very efficiently!
250
Sebastian Sellmair @sellmair.dev · 17/07/2026
Clever means: Instead of just putting zip entries in the order you would walk the FileSystem, we put the "bodies.knb" file for linuxX64 right next to the "bodies.knb" file for macosX64, right next to the "bodies.knb" of the iosX64, and so on.
150
Sebastian Sellmair @sellmair.dev · 17/07/2026
How did we achieve these high levels of compression? We know that .klib files for each target are pretty, pretty similar to each other. Using a clever ordering of our zip entries and xz compression allows us to encode many klibs almost for free.
150
Sebastian Sellmair @sellmair.dev · 17/07/2026
We also measured the entire Ktor publication. Kotlin 2.5 will produce ~431 MB of artifacts. Using our new .kar publication format pushed this down to 62 MB 🙏
180
Sebastian Sellmair @sellmair.dev · 17/07/2026
We measured the publication of kotlinx-coroutines to clock in at ~22 MB spread across all platforms. When publishing just a single kotlinx-coroutines-*.kar.xz file, we were able to push the size of the entire publication down to 1.2 MB 🤙
1100
Sebastian Sellmair @sellmair.dev · 17/07/2026
Let me share the '.kar' (Kotlin Archive) file format 🙇‍♂️! A single binary you can publish, which shall carry everything necessary to build your project! While this is a prototype, I really would like to share some of our early measurements! 🥳
3134
Sebastian Sellmair @sellmair.dev · 17/07/2026
Recent events surrounding Maven Central forced us to finally address this and restart efforts we had developed but paused. This week, Pavel Kunyavskiy and I tried to distill some of the core ideas for simplifying the publication into one single concept, and I am very excited!
160
Sebastian Sellmair @sellmair.dev · 17/07/2026
Something big might happen to the Kotlin Multiplatform Ecosystem 👀 We were never too happy about how Kotlin publishes and resolves KMP libraries. It takes up significantly more space than it has to, produces a ton of artifacts and Maven modules, and is just... complex!
14914
Sebastian Sellmair @sellmair.dev · 17/01/2026
Fully agree that libraries should convey their compatibility within the version. The proposed schema is still semver compliant, so it's gonna be OK. Just to check: I was not proposing that every version should be aligned, just the notation should be consistent (and the semantics of each part)
120
Sebastian Sellmair @sellmair.dev · 17/01/2026
The Kotlin ecosystem might not choose a strict 'SemVer' notation (and it's gonna be fine!) blog.sellmair.io/the-kotlin-e...
blog.sellmair.io
163
Reposted by Sebastian Sellmair
Kotlin by JetBrains @kotlinlang.org · 14/01/2026
Compose Hot Reload is now stable and bundled with Compose Multiplatform since v.1.10.0! 🎉 This deep dive by @sellmair.dev and Azat Abdullin walks through the engineering behind Compose Hot Reload and how it works under the hood. For the curious among you 👀 kotl.in/hotreload100
kotl.in
The Journey to Compose Hot Reload 1.0.0 | The Kotlin Blog
Compose Hot Reload has been promoted to stable. The blog post provides a high-level overview of how Compose Hot Reload works under the hood.
0284
Sebastian Sellmair @sellmair.dev · 16/01/2026
I am working on a proposal on making Kotlin's ecosystem versioning more consistent (at least for JetBrains projects at first). It sparked this nice blog post from @mbonnin.net . I'll respond on blog.sellmair.io soon 🔜 mbonnin.net/2026-01-16-s...
150
Sebastian Sellmair @sellmair.dev · 18/12/2025
Compose Hot Reload 1.1.0-alpha03 just released, and it's pretty hot. 🔥 github.com/JetBrains/co... - New, more advanced re-initialisation for statistics ↪️ - Up to 10x reload speeds by default 🏃🏽‍♀️ - Significantly reduced runtime memory usage 💾
github.com
Release v1.1.0-alpha03 · JetBrains/compose-hot-reload
Release summary We introduced a new re-initialisation mode for static variables. Enable it by setting compose.reload.staticsReinitializeMode=AllDirty and share your feedback! We sped up incrementa...
0151
Sebastian Sellmair @sellmair.dev · 12/12/2025
You not using hot reload? 😥
010
Reposted by Sebastian Sellmair
Márton Braun @zsmb.co · 08/12/2025
So, today I found out about a secret, unsafe, internal property that makes Hot Reload waaaay faster. Like lightning fast. Even in a real project, not just with Hello World. We're currently discussing if y'all are ready for this yet - we'll probably add it to guidance later.
1314
Sebastian Sellmair @sellmair.dev · 28/11/2025
What tools did you use for your AI workflow?
030
Reposted by Sebastian Sellmair
Márton Braun @zsmb.co · 27/11/2025
We're doing an AMA on /r/Kotlin on December 11th! Prepare your questions, mark your calendars, and join us there in 2 weeks! www.reddit.com/r/Kotlin/
0102
Sebastian Sellmair @sellmair.dev · 24/11/2025
If you want to talk to our team, feel free to join the Kotlin Ecosystem AMA on Dec 11, 15:00–19:00 CET on r/kotlin! See you there. 👋
050
Sebastian Sellmair @sellmair.dev · 24/11/2025
It was such an amazing and fun project. I hope others might enjoy it as much as I did, but it's time for me to turn my head towards other problems and projects that we have in Kotlin.
150
Sebastian Sellmair @sellmair.dev · 24/11/2025
However, while looking almost nostalgically at the project, I would like to announce that I transferred the ownership and maintenance of 'Compose Hot Reload' to dedicated teams at JetBrains, and I have found other people who will drive the project forward 🥹
120
Sebastian Sellmair @sellmair.dev · 24/11/2025
We even have almost all features and changes ready for a 1.1 release. The first alpha is available, and we encourage you to try it out! 🤙 iOS hot reload has a proof of concept, and we hope to find enough time to productize it now 📲
120
Sebastian Sellmair @sellmair.dev · 24/11/2025
"It should be easily doable to build a stateful hot reload" - silly me, almost one year ago. After one year of hard work and many people involved, we can finally commit to the user experience and call it done (as in 1.0.0) 🔥 github.com/JetBrains/co... 🧵 What's next?
3230
Reposted by Sebastian Sellmair
Ivan “CLOVIS” Canet @ivcanet.bsky.social · 19/11/2025
Ahhhh so that's why it's called the Gradle Wrapper?
Package with a ‘Gradle’ adhesive
2264
Sebastian Sellmair @sellmair.dev · 19/11/2025
Thanks for sharing, I can totally see why some people would not want to attend in this case 😓
010
Sebastian Sellmair @sellmair.dev · 19/11/2025
Hey, I am just a curious listener without knowledge about Orlando: is the city known for being hostile towards said group?
100
Sebastian Sellmair @sellmair.dev · 19/11/2025
Say hello to Compose Hot Reload 1.1 🔥 Please give it a try and provide feedback: github.com/JetBrains/co... ☕️ JBR 25 support ⚡️ Recompilation Speed optimizations 😎 New visuals, New DevTools UX 📦 Faster, more lightweight protocol under the hood
0315
Sebastian Sellmair @sellmair.dev · 06/10/2025
We released Compose Hot Reload 1.0.0-rc01 🎆 What started as a happy accident was promised to be pushed towards stability as quickly as possible, allowing you to rely on a stable user experience. github.com/JetBrains/co...
github.com
Release v1.0.0-rc01 · JetBrains/compose-hot-reload
Release summary 🔥🎆 The project is promoted to the 'RC' stage. We are still working on convenient tooling in IntelliJ and Android Studio and will continue experimenting there. The 'core technology' ...
0276
Sebastian Sellmair @sellmair.dev · 29/09/2025
I am also talking about the behavior of updating dependencies the second they are released. It's culture now in Android Dev. I once saw a project utterly frustrated because a Kotlin update broke their workflow. Maintainers were quite loud, but refused to downgrade. Compatibility requires patience
000
Sebastian Sellmair @sellmair.dev · 29/09/2025
But do you really need to be on the alpha, betas, or today releases to fix tech debt? Look at any public project and see the pre release usages. It's not healthy!
120
Sebastian Sellmair @sellmair.dev · 29/09/2025
I said it once, I'll say it again: You might think you're doing your project a favor by always upgrading to the latest AGP version. What you do instead is break the project for everyone who has not downloaded the latest IDE. This is pain
050
Reposted by Sebastian Sellmair
Andrei Shikov @shikasd.bsky.social · 19/09/2025
Casey Muratori pretty much sums up how I feel about LLMs for coding: "The AI will always be useless for me. I physically can't get what I want from programming when AI is involved, because what it is doing is robbing me of the experience that I wanted to have and the knowledge that I wanted to get"
53911
Sebastian Sellmair @sellmair.dev · 17/09/2025
Say hello to hot reloading compose resources, supported from CMP 1.10.0-alpha01 🔥 Initially requested by @zsmb.co and @rakhman.info Thanks to Nikita Lipsky 😇
1155
Sebastian Sellmair @sellmair.dev · 12/09/2025
Can kotlinx.coroutines outperform the GPU 🤯? Watch me getting humbled while trying to find out... www.youtube.com/watch?v=JCOS...
youtube.com
kotlinx.coroutines outperforming the GPU? 🤯
YouTube video by Sebastian Sellmair
171
Sebastian Sellmair @sellmair.dev · 12/09/2025
I hope you enjoy my journey. I learnt a lot and had plenty of fun! 🤪 www.youtube.com/watch?v=JCOS...
youtube.com
kotlinx.coroutines outperforming the GPU? 🤯
YouTube video by Sebastian Sellmair
110
Sebastian Sellmair @sellmair.dev · 08/09/2025
Let me tell you! It's a rollercoaster; I did not expect some of the things that happened, but I learned a few things. I thought it would be a quick benchmark and a recording, but I spent much more time here. Will record the results soon! Are you okay with being mentioned in the video?
100
Sebastian Sellmair @sellmair.dev · 07/09/2025
Benchmarking in progress, recording video today 😎
110
Sebastian Sellmair @sellmair.dev · 03/09/2025
Oh, I did not expect to have so much fun building the IDE tooling/integration for Compose Hot Reload 😍 See the small floating toolbar when a session is present, even allowing you to reset your UI state!
0100
Sebastian Sellmair @sellmair.dev · 30/08/2025
Next video: Benchmarking! Would you be interested in sharing your code for comparison? The shader should be really fast, but I did not measure it!
110
Sebastian Sellmair @sellmair.dev · 30/08/2025
Had fun with Skia/Skiko lately! Pretty sure some of you folks might enjoy working with it as well 😍 www.youtube.com/watch?v=bsaq...
youtube.com
High-Performance Skiko Image Processing
YouTube video by Sebastian Sellmair
150
Reposted by Sebastian Sellmair
Kotlin by JetBrains @kotlinlang.org · 02/07/2025
🔥 In his KotlinConf’25 talk, “Implementing Compose Hot Reload”, @sellmair.dev explains how to use Compose Hot Reload today – and how JetBrains tech made it all possible. ✨ Plus: challenges, lessons, and a few surprises. 📹 Watch on YouTube: kotl.in/conf-compose...
093
Sebastian Sellmair @sellmair.dev · 04/07/2025
🌴 Compose Hot Reload has finally reached Beta! github.com/JetBrains/co... I started the project by accident, and it's been so much fun to work on. Time for a small break 🌴, and we'll target the first stable release soon. 🫡
github.com
Release v1.0.0-beta03 · JetBrains/compose-hot-reload
DevTools Support for 'detached mode': See compose.reload.devToolsDetached property Shutdown Procedure: More aggressively shutdown build processes Gradle Ensure Recompiler uses the same 'JAVA_HOM...
0121
Sebastian Sellmair @sellmair.dev · 19/06/2025
The KotlinConf talks are available online 🎉 Check-out how Compose Hot Reload is implemented: youtu.be/UebhKUdO2sQ?...
youtu.be
Implementing Compose Hot Reload | Sebastian Sellmair
YouTube video by Kotlin by JetBrains
082