
Enterprise-grade server-driven UI SDK rendering native remote screens smoothly, with type-safe polymorphic serialization, dynamic condition and validation engines, reactive state recovery, accessibility and optional signed screens.
The extensible Server-Driven UI framework for Kotlin Multiplatform & Compose.
HeimUI Core is an enterprise-grade Server-Driven UI (SDUI) SDK designed for Android and iOS using Kotlin Multiplatform (KMP) and Compose Multiplatform. It renders remote UI layouts natively at 60/120 FPS without WebViews or JavaScript bridges.
| Core SDK | This repository — renders the screens on Android and iOS | Apache 2.0 |
| Documentation | Guides, the screen schema, hydration and signing references | heimui-docs |
| Demo app | A full integration you can run | Apache 2.0 |
| HeimUI Studio | The visual editor that authors and publishes screens | Commercial — heimui.io/studio |
The SDK is free and always will be: it lives inside your application, and nobody should have to take an SDK on trust. The Studio is the product.
kotlinx.serialization (ProGuard / R8 safe).Container, Box, LazyColumn, LazyRow, Text, Image, Card, Badge, Button, TextField, Switch, Icon, Spacer, Divider, Custom/Unknown.visibleIf) supporting logical and comparison operators.HeimStateManager) with persistent recovery across app restarts.X-Heim-Signature from a server, or a sealed object from a bucket that cannot send one. The app carries public keys only, so extracting them from an APK gains nothing. Off until trustedSigningKeys names a key.io.heimui.core/
│
├── domain/ # Pure Kotlin (Zero Compose, Zero Platform APIs)
│ ├── model/ # Polymorphic @Serializable contracts
│ │ ├── component/HeimComponent.kt # 15 Core UI Primitives
│ │ ├── action/HeimAction.kt # Polymorphic actions (Navigate, Submit, etc.)
│ │ ├── accessibility/HeimA11y.kt # Screen reader semantic roles
│ │ ├── validation/ValidationRule.kt # Input validation definitions
│ │ └── HeimScreenResponse.kt # Root screen payload contract
│ ├── evaluator/
│ │ ├── HeimConditionEvaluator.kt # Evaluates visibleIf expressions
│ │ └── HeimValidationEngine.kt # Validates form inputs against rules
│ └── repository/
│ └── HeimScreenRepository.kt # Abstract repository interface
│
├── data/ # Network, Cache, & Security Layer
│
└── presentation/ # UI & State Management Layer
└── state/HeimStateManager.kt # StateFlow state machine & interpolation
dependencies {
implementation("io.heimui:heimui-core:0.0.1-alpha-1")
}Android and iOS, from a Kotlin Multiplatform module. The iOS artifacts are published as klibs, so
the consumer is a KMP module that exports its own framework -- the demo module and iosApp in
this repository are a working example of exactly that.
Full integration guide, including the signing and caching options: heimui.io/sdk
To test a change from this repository against your own app without waiting for a release:
./gradlew publishLocalThat publishes to your local Maven repository under a -LOCAL suffix, so it sits alongside the
released coordinate instead of overwriting it -- and a failure always names which build it came
from. Then, in the consuming project, make sure mavenLocal() is among its repositories and depend
on the suffixed version that the task prints when it finishes.
Run ./gradlew verify before pushing: it runs everything CI runs.
./gradlew allTests./gradlew :androidApp:assembleDebugOpen the iosApp directory in Xcode and run the target.
HeimUI Core is open source under the Apache License 2.0 — free to use in commercial applications, with an explicit patent grant. It ships inside your app, so you should be able to read every line of it.
Third-party components it links in keep their own licences, listed in NOTICE.
The extensible Server-Driven UI framework for Kotlin Multiplatform & Compose.
HeimUI Core is an enterprise-grade Server-Driven UI (SDUI) SDK designed for Android and iOS using Kotlin Multiplatform (KMP) and Compose Multiplatform. It renders remote UI layouts natively at 60/120 FPS without WebViews or JavaScript bridges.
| Core SDK | This repository — renders the screens on Android and iOS | Apache 2.0 |
| Documentation | Guides, the screen schema, hydration and signing references | heimui-docs |
| Demo app | A full integration you can run | Apache 2.0 |
| HeimUI Studio | The visual editor that authors and publishes screens | Commercial — heimui.io/studio |
The SDK is free and always will be: it lives inside your application, and nobody should have to take an SDK on trust. The Studio is the product.
kotlinx.serialization (ProGuard / R8 safe).Container, Box, LazyColumn, LazyRow, Text, Image, Card, Badge, Button, TextField, Switch, Icon, Spacer, Divider, Custom/Unknown.visibleIf) supporting logical and comparison operators.HeimStateManager) with persistent recovery across app restarts.X-Heim-Signature from a server, or a sealed object from a bucket that cannot send one. The app carries public keys only, so extracting them from an APK gains nothing. Off until trustedSigningKeys names a key.io.heimui.core/
│
├── domain/ # Pure Kotlin (Zero Compose, Zero Platform APIs)
│ ├── model/ # Polymorphic @Serializable contracts
│ │ ├── component/HeimComponent.kt # 15 Core UI Primitives
│ │ ├── action/HeimAction.kt # Polymorphic actions (Navigate, Submit, etc.)
│ │ ├── accessibility/HeimA11y.kt # Screen reader semantic roles
│ │ ├── validation/ValidationRule.kt # Input validation definitions
│ │ └── HeimScreenResponse.kt # Root screen payload contract
│ ├── evaluator/
│ │ ├── HeimConditionEvaluator.kt # Evaluates visibleIf expressions
│ │ └── HeimValidationEngine.kt # Validates form inputs against rules
│ └── repository/
│ └── HeimScreenRepository.kt # Abstract repository interface
│
├── data/ # Network, Cache, & Security Layer
│
└── presentation/ # UI & State Management Layer
└── state/HeimStateManager.kt # StateFlow state machine & interpolation
dependencies {
implementation("io.heimui:heimui-core:0.0.1-alpha-1")
}Android and iOS, from a Kotlin Multiplatform module. The iOS artifacts are published as klibs, so
the consumer is a KMP module that exports its own framework -- the demo module and iosApp in
this repository are a working example of exactly that.
Full integration guide, including the signing and caching options: heimui.io/sdk
To test a change from this repository against your own app without waiting for a release:
./gradlew publishLocalThat publishes to your local Maven repository under a -LOCAL suffix, so it sits alongside the
released coordinate instead of overwriting it -- and a failure always names which build it came
from. Then, in the consuming project, make sure mavenLocal() is among its repositories and depend
on the suffixed version that the task prints when it finishes.
Run ./gradlew verify before pushing: it runs everything CI runs.
./gradlew allTests./gradlew :androidApp:assembleDebugOpen the iosApp directory in Xcode and run the target.
HeimUI Core is open source under the Apache License 2.0 — free to use in commercial applications, with an explicit patent grant. It ships inside your app, so you should be able to read every line of it.
Third-party components it links in keep their own licences, listed in NOTICE.