Now we have handful of choices when it comes to database: Exposed (which I've just watched an excellent presentation earlier), SqlDelight, and now Room. There's not that many choices of tools for KMP 3-4 years ago.
Thank you Kotlin and KMM team for pushing the compatibility. Being able to reuse our existing Room knowledge makes us more confident on taking KMM seriously. Hoping the success of this framework! I also hope you guys starts to support SavedStateHandle of ViewModel as well in the future.
I didn't understand why the top-level functions strategy was necessary. Couldn't you have an abstract class in common that has the common code, then an expected concrete subclass of it that has the merhods that you need to be platform-dependent, with the actual classes providing the implementations that call the common base class methods? I'm not an expert on the subleties of expect/actual, so I'm predicting there's a good reason why this isn't possible!
It's possible to do so though, you can have ˋComposableˋ functions has methods of classes too, so if you want to handle your project that way you can do so, but you would still need to use expect and actual