multiplatform-viewmodel ?

Create shared ViewModel‘s for shared business logic using our ViewModel base class.


  • Uses Jetpack ViewModel on Android for lifecycled
  • Exposes a CoroutineScope to be used in your methods

Overview of Package

This package has 1 component to it: A ViewModel class you can base your view models on.

Getting Started

Add Dependency

commonMain {
    dependencies {
        // ...

Expose it to iOS native side

ios {
    binaries {
        framework {
            baseName = "shared"
            export(Deps.viewmodel) // required to expose the class to iOS

Using the ViewModel

class ExampleViewModel: ViewModel() {
    private val _viewState = MutableStateFlow(UIViewState())
    val viewState: StateFlow<UIViewState> = _viewState
    fun onLaunched() {
        scope.launch {
            // fetch some data

Using your ViewModel on iOS with a UIViewController

When using it on iOS you’ll want to make sure that you call clear() on your ViewModel on deinit to properly kill the CoroutineScope


View Github