Files
burstein 75d0dc8a9a Fixed kmp ios updating
commit_hash:ff04403354785808ec26c644c8be7a3f7e497f78
2026-04-08 01:33:05 +03:00
..
2026-02-03 17:20:26 +03:00
2026-02-03 17:20:26 +03:00
2026-04-08 01:33:05 +03:00
2026-02-03 17:20:26 +03:00
2025-12-19 12:10:17 +03:00
2025-09-01 16:19:23 +03:00

DivKit Multiplatform (KMP)

Kotlin Multiplatform library that embeds DivKit into Kotlin Multiplatform apps. The repository includes:

  • divkit-multiplatform — KMP library with a simple Kotlin API
  • sample/app — KMP sample (Android + iOS targets)
  • sample/iosApp — native iOS project with CocoaPods integration

Running

Open the project in Android Studio. You can run both Android and iOS targets directly from the IDE. For iOS, ensure CocoaPods is installed; Android Studio will run the necessary CocoaPods steps for the sample. When integrating the library into your own app, make sure to add the DivKitKMP pod as described below.

Using the library in your KMP project

The library is published in Maven Central inside group com.yandex.divkit.multiplatform and versioned in accordance with the versions of the main DivKit library.

1) Gradle dependency

Add the library as a dependency of your shared module:

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("com.yandex.divkit.multiplatform:divkit-multiplatform:<divkit-version>")
        }
    }
}

2) iOS: add the DivKitKMP CocoaPod

The iOS implementation relies on a small bridging Pod DivKitKMP to correctly link Obj-C symbols. Add it to your iOS app Podfile and run pod install from the iOS app folder:

platform :ios, '13.0'
use_frameworks!

target 'YourApp' do
  pod 'DivKitKMP'

  # Other pods if needed
end

3) Render a Div card in Kotlin multiplatform

Common code:

DivKit(dependencies) {
    var greeting by variable(name = "greeting", value = "Hello, Username")
    Column(
        modifier = Modifier.padding(WindowInsets.safeDrawing.asPaddingValues()),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        DivView(
            cardId = "Sample",
            jsonData = jsonString,
            modifier = Modifier.wrapContentSize()
        )
        Button(
            onClick = {
                greeting = "Hello, DivKit User"
            },
            content = {
                Text("Say \"Hello\"")
            }
        )
    }
}

Also you can setup some platform-specific dependencies in platform-specific code. For example:

In Android part:

val environment = DivKitEnvironment.Builder(baseContext = this)
    .imageLoaderFactory { ctx -> PicassoDivImageLoader(ctx) }
    .lifecycleOwner(this)
    .build()

setContent {
    inject(environment) {
        MainScreen()
    }
}