🚀 Happy to announce Fakt
Fakt is a Kotlin compiler plugin that uses FIR/IR phases to generate type-safe fakes at compile time ✨
Give it a try → github.com/rsicarelli/f...
Posts by Rodrigo Sicarelli
Using the Default Hierarchy Template in KMP? You probably shouldn't 👀
It creates intermediate source sets you might not need — with real build cost. ⚠️
New article on the hidden costs and when to use a custom hierarchy instead 👇
dev.to/rsicarelli/t...
📱 Two Years with Kotlin Multiplatform: From Zero to 55% Shared Code
At KotlinConf’25, @rsicarelli.bsky.social shared how StoneCo – serving 4M+ users – scaled KMP adoption, trained 130 engineers, and achieved 55% code sharing across two large-scale mobile apps.
📺 kotl.in/u5aa8v
We're mentioned in the Large Scale KMP adoptions 🥹🥹
android-developers.googleblog.com/2025/05/kotl...
Only one or the other. If the type is internal, there is no need for the annotation! We ended up building a Gradle Plugin called KMP Lint to help us on this journey (the only scalable way in our case). We plan to open source it soon 🤞
There is a doc in the Kotlin repo on this topic: github.com/JetBrains/ko...
Yes, hacking.md 🤣. Lots of outdated stuff, but an interesting read!
Also use internal and @/HiddenFromObjC annotations properly.
Over-exposing Kotlin code to objc headers increases the link time, and also the .framework size!
Kotlin 2.1 has a new linker, plus an upgrade from LLVM 11 to 16.
There is also a compiler flag to disable some optimisations, the `-Xdisable-phases', which we can use to disable the LTO optimisation.
There is a flag to profile the compiler phases (works on 2.0 too), the `-Xprofile-phases`
We ended up creating some scripts on iOS setup that selects the targets and built type for the .framework.
Pretty much, local and CI (tests) we do iosSimulatorArm64 + debug.
For internal test flight builds, we do iosArm64 + debug.
For prod, iosArm64 + release.
We avoid release at all costs 👀
I'm more than excited to share our KMP journey at KotlinConf'25 🎉
Whether you're considering KMP or scaling it in your organization, join me to hear about some of our results and future plans!
See you in Copenhagen ✌️
Special thanks to @kaeawc.bsky.social for pointing me in the direction of using VisualVM, which has now become my best friend 😂
FINALLY managed to understand JVM settings and how to tweak them.
Before: ~17gb allocated (Gradle + Kotlin daemons)
After: ~8gb allocated (with some extra heap for buffer)
Same build time 🎉🚀
Chegou a ver se essas libs fazem algum import específico do iOS? As vezes, só organização de source set já suportaria rs
Quase finalizando o KMP-102, nem acredito 😭
📢 Novo artigo da série KMP-102
Dessa vez explorei estratégias de modularização em projetos KMP
Coraçãozinho pra dar uma força 🙏
Boa leitura ✌️
dev.to/rsicarelli/k...
iOS reviews ✨
does KMP scale?
I think it does 👀
It's happening!!! 🤩💜 #KotlinConf25
a beleza do conhecimento livre ✨ print aleatório que me mandaram
1 month of selective CI on a large Android repo saved almost 2k dollars monthly. Feels good ✌️
I am just looking for a reason to buy an m4 mini 🥹 they are so portable 🤏
I need a m4 mini at home for this ASAP
O r1 se compara com o GPT o1 que custa 200 doletas mês, só que de graça e realmente melhor
Usa um rolê de deep think, é como se a AI conversasse com ela mesmo antes de te responder, poderoso d+
Só tem que ativar no chat
100% apoiado hahahahaha
Imagino que deve engajar pra galera clicar, mas comigo não funciona rs
O vídeo preview vc diz reproduzir automaticamente na lista de vídeos?
Uma das vantagens de estar só no bsky essa época do ano é o filtro de conteúdo daquele reality show 25
Não que eu não tô assistindo (pois é) mas consumir isso o tempo todo? N obg ✋
Descobri que o problema tá totalmente relacionado a construção dos Headers do Obj-C 🎯.
Comecei a escrever sobre o tema na série KMP-102, mais artigos irão vir 🏃
dev.to/rsicarelli/k...
Heh, new insights. It turns out that we are exporting too many dependencies to XCFramework. There is no need to export everything: only what you need to consume on the Swift code.
Just applied the api/impl modularisation strategy to XCFramework and it works 👀 will collect build time results soon
The only hope so far is Kotlin 2.1, which updates LLVM from 11.1.0 (Feb 2021) to 16.0.0 (Mar 2023).
Reading the release notes, there seems to have been serious work on linking performance 🤞
Had some new findings on this:
- Increasing JVM settings has no effect on build time
- The "link" task on KGP is the main issue. This task delegates the linking process to LLVM.
- xcodebuild -create-xcframework seems to have a virtual impact.
- Could not find any LLVM hack to boost CPU usage