Rodrigo Sicarelli's Avatar

Rodrigo Sicarelli

@rsicarelli.bsky.social

Staff Software Engineer | KMP @ StoneCo SΓ£o Paulo πŸ‡§πŸ‡· dev.to/rsicarelli github.com/rsicarelli

189 Followers  |  76 Following  |  156 Posts  |  Joined: 29.08.2024
Posts Following

Posts by Rodrigo Sicarelli (@rsicarelli.bsky.social)

Post image

πŸš€ 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...

25.02.2026 17:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
The Hidden Cost of Default Hierarchy Template in Kotlin Multiplatform Introduction The Default Hierarchy Template in KMP projects is a great way to reduce...

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

14.11.2025 10:58 β€” πŸ‘ 8    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

πŸ“± 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

27.09.2025 08:52 β€” πŸ‘ 19    πŸ” 2    πŸ’¬ 0    πŸ“Œ 1
Post image

We're mentioned in the Large Scale KMP adoptions πŸ₯ΉπŸ₯Ή

android-developers.googleblog.com/2025/05/kotl...

21.05.2025 12:30 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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 🀞

09.05.2025 14:15 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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!

09.05.2025 14:10 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Also use internal and @/HiddenFromObjC annotations properly.

Over-exposing Kotlin code to objc headers increases the link time, and also the .framework size!

08.05.2025 10:22 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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`

08.05.2025 10:17 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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 πŸ‘€

08.05.2025 10:13 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

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 ✌️

07.04.2025 10:40 β€” πŸ‘ 14    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0

Special thanks to @kaeawc.bsky.social for pointing me in the direction of using VisualVM, which has now become my best friend πŸ˜‚

21.03.2025 11:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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 πŸŽ‰πŸš€

21.03.2025 11:23 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Chegou a ver se essas libs fazem algum import especΓ­fico do iOS? As vezes, sΓ³ organizaΓ§Γ£o de source set jΓ‘ suportaria rs

13.03.2025 23:46 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Quase finalizando o KMP-102, nem acredito 😭

07.03.2025 15:19 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
KMP-102 - ModularizaΓ§Γ£o no KMP No ΓΊltimo artigo, entramos em detalhes e aprendemos sobre as peculiaridades do cΓ³digo exportado nos...

πŸ“’ 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...

07.03.2025 14:16 β€” πŸ‘ 5    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Post image

iOS reviews ✨

24.02.2025 12:19 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

does KMP scale?
I think it does πŸ‘€

24.02.2025 11:59 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image

It's happening!!! πŸ€©πŸ’œ #KotlinConf25

11.02.2025 20:14 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 4    πŸ“Œ 0
Post image

a beleza do conhecimento livre ✨ print aleatório que me mandaram

11.02.2025 13:26 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

1 month of selective CI on a large Android repo saved almost 2k dollars monthly. Feels good ✌️

29.01.2025 11:51 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I am just looking for a reason to buy an m4 mini πŸ₯Ή they are so portable 🀏

28.01.2025 19:15 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I need a m4 mini at home for this ASAP

28.01.2025 15:17 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

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

26.01.2025 18:18 β€” πŸ‘ 7    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

100% apoiado hahahahaha
Imagino que deve engajar pra galera clicar, mas comigo nΓ£o funciona rs

24.01.2025 15:52 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

O vΓ­deo preview vc diz reproduzir automaticamente na lista de vΓ­deos?

24.01.2025 15:33 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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 βœ‹

18.01.2025 15:29 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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

18.01.2025 12:15 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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

10.01.2025 12:19 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1

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 🀞

07.01.2025 19:45 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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

07.01.2025 19:44 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 1    πŸ“Œ 1