This issue tracks reimplementing the work from stale PR #4471, which has been closed because it is too far out of date to merge directly.
Original pull request
What the original PR was trying to do
What Kotlin Multiplatform client SDK for SpacetimeDB, targeting JVM and iOS (arm64, simulator-arm64, x64). This brings first-class Kotlin/Java/Swift (via KMP interop) support to the SpacetimeDB ecosystem. Why There's currently no way to build native Android/JVM or iOS clients without going through the Cor Rust SDKs. The Kotlin SDK fills this gap and opens up the entire JVM and Apple platform ecosystem — Android apps, backend services, iOS apps, and any Kotlin target. Architecture - Wire protocol: Full v2.bsatn.spacetimedb support with BSATN binary serialization - Transport: Ktor 3.0.3 WebSocket client (OkHttp engine on JVM, Darwin engine on iOS) - Concurrency: kotlinx-coroutines with Mutex-serialized message handling, atomicfu for transport flags - Compression: Configurable (None/Gzip/Brotli) via withCompression(). Gzip on both platforms via expect/actual, Brotli on JV...
Closure context
- @AndroidPoet This is a very helpful PR! We're planning to add Swift, Go, and Kotlin support in the near future, both on the server and on the client. The wrinkle is that we're currently maintaining a bunch of different SDK codebases separately. Before expanding our language support, we'd like to create a central Rust client "core" which we link with all the different languages. Given that work on that is on going, I'm going to close this PR and create an issue to track it. I don't think this PR will merge as is, but it will be a great reference for our future PR!
Reimplementation notes
- Reimplement this work on top of current
master in a new PR.
- Keep the original PR linked as historical context and as a source of useful implementation ideas where still relevant.
This issue tracks reimplementing the work from stale PR #4471, which has been closed because it is too far out of date to merge directly.
Original pull request
What the original PR was trying to do
What Kotlin Multiplatform client SDK for SpacetimeDB, targeting JVM and iOS (arm64, simulator-arm64, x64). This brings first-class Kotlin/Java/Swift (via KMP interop) support to the SpacetimeDB ecosystem. Why There's currently no way to build native Android/JVM or iOS clients without going through the Cor Rust SDKs. The Kotlin SDK fills this gap and opens up the entire JVM and Apple platform ecosystem — Android apps, backend services, iOS apps, and any Kotlin target. Architecture - Wire protocol: Full v2.bsatn.spacetimedb support with BSATN binary serialization - Transport: Ktor 3.0.3 WebSocket client (OkHttp engine on JVM, Darwin engine on iOS) - Concurrency: kotlinx-coroutines with Mutex-serialized message handling, atomicfu for transport flags - Compression: Configurable (None/Gzip/Brotli) via withCompression(). Gzip on both platforms via expect/actual, Brotli on JV...
Closure context
Reimplementation notes
masterin a new PR.