What we're building

By the end of this tutorial, you'll have a working mental model — and working code — for implementing Conflict-Free Replicated Data Types in Kotlin Multiplatform shared code. We'll build an LWW-Register, compare state-based vs operation-based sync strategies, and walk through the architecture that lets you replace your entire sync backend with dumb blob storage.

Let me show you a pattern I use in every project with offline-first requirements.

Prerequisites

Kotlin Multiplatform project set up with commonMain, Android, and iOS targets