Skip to content

Getting Started

Try It Online

The Soil library for Kotlin Multiplatform now includes experimental support for Kotlin Wasm. If your browser supports WasmGC, you can run the sample app directly in the browser.

👉 Sample App

Source code: https://github.com/soil-kt/soil/tree/1.0.0-alpha10/sample/

Download

  1. Prepare a Kotlin Multiplatform project or an Android project

Recommendation

If you are starting a new Kotlin Multiplatform project, tools like the Kotlin Multiplatform Wizard or the Compose Multiplatform Wizard can be very helpful.

  1. Add Maven Central to your repositories if needed
kts
repositories {
    mavenCentral()
}
  1. Add the desired dependencies to your module's build.gradle file
kts
dependencies {
    val soil = "1.0.0-alpha10"

    // Query
    implementation("com.soil-kt.soil:query-core:$soil")
    // Query for Compose
    implementation("com.soil-kt.soil:query-compose:$soil")
    // optional - receivers for Ktor (3.x)
    implementation("com.soil-kt.soil:query-receivers-ktor:$soil")
    // optional - Test helpers
    testImplementation("com.soil-kt.soil:query-test:$soil")

    // Form
    implementation("com.soil-kt.soil:form:$soil")

    // Space
    implementation("com.soil-kt.soil:space:$soil")

    // Experimental
    implementation("com.soil-kt.soil:lazyload:$soil")
    implementation("com.soil-kt.soil:optimistic-update:$soil")
    implementation("com.soil-kt.soil:reacty:$soil")
}
yaml
[versions]
soil = "1.0.0-alpha10"

[libraries]
# Query
soil-query-core = { module = "com.soil-kt.soil:query-core", version.ref = "soil" }
# Query for Compose
soil-query-compose = { module = "com.soil-kt.soil:query-compose", version.ref = "soil" }
# optional - receivers for Ktor (3.x)
soil-query-receivers-ktor = { module = "com.soil-kt.soil:query-receivers-ktor", version.ref = "soil" }
# optional - Test helpers
soil-query-test = { module = "com.soil-kt.soil:query-test", version.ref = "soil" }
# Form
soil-form = { module = "com.soil-kt.soil:form", version.ref = "soil" }
# Space
soil-space = { module = "com.soil-kt.soil:space", version.ref = "soil" }
# Experimental
soil-lazyload = { module = "com.soil-kt.soil:lazyload", version.ref = "soil" }
soil-optimistic-update = { module = "com.soil-kt.soil:optimistic-update", version.ref = "soil" }
soil-reacty = { module = "com.soil-kt.soil:reacty", version.ref = "soil" }

Compose Multiplatform compatibility

Supported targets:

  • Android
  • iOS
  • Desktop (JVM)
  • Web (Wasm)

What's Next?

Try out the features you're interested in right away!

🌱 Query - A seamless data fetching and caching. written more declaratively, leading to more readable code.

🌱 Form - A extensible validation control and form state management. minimizes the impact of re-composition.

🌱 Space - A flexible scoped state management. collaborating with the navigation library to create new scopes.

Love the project? ⭐ it on GitHub and help us make it even better!