Elmslie is a minimalistic reactive implementation of TEA/ELM written in kotlin with java support.
Named after George Grant Elmslie, a Scottish-born architect.
- Scalable and Reusable: Built-in support for nesting components
- Multiplatform: Written with pure Kotlin and Coroutines, supports KMP (Android, iOS, JS)
- Single immutable state: Simplify state management
- UDF: Say no to spaghetti code with Unidirectional Data Flow
This is a visual representation of the architecture:
For more info head to the wiki
Samples are available here
Library is distributed through Maven Central
allprojects {
repositories {
mavenCentral()
}
}- Core - for pure kotlin ELM implementation
implementation 'money.vivid.elmslie:elmslie-core:{latest-version}'
- Android - for android apps only, simplifies lifecycle handling
implementation 'money.vivid.elmslie:elmslie-android:{latest-version}'
- BOM - pins every Elmslie module to one version
dependencies {
implementation(platform("money.vivid.elmslie:elmslie-bom:{latest-version}"))
implementation("money.vivid.elmslie:elmslie-core")
implementation("money.vivid.elmslie:elmslie-android")
}elmslie-core publishes Android, JVM, iOS, macOS, tvOS, watchOS, Linux, Windows,
JS and Wasm/JS targets. elmslie-android publishes Android only.

