Resaca V4 moves to Compose Multiplatform! 🎉
This library lets you to scope ViewModels to a Composable, surviving configuration changes and navigation, now available in Android and iOS
+ you can use a separate ViewModel for each item in a Lazy list 🤯
https://t.co/Rpk89vxxsO
@camaelon@johnhoford I ❤️ this, even if couldn't see the presentation, the technology is really awesome!
I can't wait to start using it in SDUI apps 😍
Also thanks for putting the slides online for us!
https://t.co/IVxlueYyyb
@droidconLondon@johnhoford@camaelon I would love to see this one but I can't find it in the Londond 2025 playlist, are you guys planning on sharing this gem soon? https://t.co/mWbC7GEKZ1
Call for Speakers for @kotlinconf 2026 is open only for a few more hours and I've just submitted a session about using Native Swift gRPC with the new SPM support in KMP! 🤞🤞 https://t.co/KFAlDbEq6o
@kihaki@joe_ptrkv_ch@JorgeCastilloPr No
isFinishing helps detect beginning of Activity recreation, tricky part is to detect when new Activity finished creation, resume & composition with same/different Composables than when it started recreation
There are 50+ tests for edge cases in resaca:
https://t.co/zzRw2x5FWg
@kihaki@joe_ptrkv_ch@JorgeCastilloPr Unfortunately, detecting when an Activity is restarted and the Composable is not part of the Composition is quite tricky
Hardcoding a delay will sometimes fail, waiting for the first frame solves this (not trivial)
Feel free to check the docs for more info https://t.co/zx8OFde0Vk
@raamcosta@JetpkComposeApp Safe approach 👍
If you're interested in understanding the details, this documentation section of the Readme is the best place to start before digging at the API docs https://t.co/WUZZeRyiRK
@kihaki@joe_ptrkv_ch@JorgeCastilloPr That's a good starting point and how this library started.
Unfortunately the third point is way more complicated than it looks like and it only works on happy flows😰It took years to figure out all the edge cases with Android lifecycle. The other platforms are dead simple.
@raamcosta@JetpkComposeApp It's complicated so it doesn't fit in a tweet but the gist is:if the screen is not "really destroyed" but the Composable is disposed of, then resaca keeps it safe until the screen is active again to reuse it, only if requested again from the same spot.
ViewModel scoping in Compose has been broken from day one.
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
Your future self will thank you for attending @sebaslogen's talk 🚨
#JetpackCompose is fast—until it's not. Learn how #Kotlin quirks impact performance & how one commit can fix it. Boost #Compose efficiency with smart tricks at #AMxDC25
https://t.co/UyS6Ff5GuB
Very excited and proud to see my last @droidconBerlin talk online🎉
Dependency injection: Koin vs Kotlin-inject 💉 in #KMP
TBH, it's way better than the cocktail of nerves I remember😅plus I had a lot of fun😃
Check it out!
https://t.co/JDdz5RXfY1
@Weekly_Android It depends, it always depends😅
The size of an almost empty ViewModel is <0.2kB so it's ok for a bunch of VMs but I'll be mindful of too many. That you can use 1M VMs for a screen doesn't mean that you should.
IMHO, good architecture has more impact than optimizing before needed
Resaca V4 moves to Compose Multiplatform! 🎉
This library lets you to scope ViewModels to a Composable, surviving configuration changes and navigation, now available in Android and iOS
+ you can use a separate ViewModel for each item in a Lazy list 🤯
https://t.co/Rpk89vxxsO
@belin_wu The gist: use rememberKeysInScope + list of keys for the VMs you wanna keep. Put it outside of both lazy lists & you get a KeyInScopeResolver. Then in lazy lists use viewModelScoped with the keyInScopeResolver and the key of that VM 🪄 to get VMs
Docs: https://t.co/ndFh0xP7Ks
We're excited to build the best droidcon Italy agenda EVER. 🎉
🎙️Submit your talk. Share with your network. Let's make sure this opportunity reaches deep within the #Androiddev community 🌐
Go see on the site...
#dcnit#droidconit#androidcommunity#androiddevs