Series · 11 parts · 8 coming soon
Offline-First KMP
When your mobile app must work without internet as a standard, not an edge case, the sync layer is just the first decision. What comes after — preserving user intent offline, trusting a "success" your server never actually confirmed, resolving conflicts as a human decision — is where offline-first actually gets hard. Field notes from a production KMP winery app.

- 1Choosing an offline-first sync layer for KMP

- 2Two writes for every tap

- 3Minting IDs Before the Server

- 4The Write You Never Clean Up

- 5HTTP 200 Is Not Success

- 6Your Schema Is Not Your Payload

- 7You Cannot Fix a Generated File

- 8Every Synced Row Needs an ID

- 9Your Sync Stack Fits in Three Containers

- 10HTTP 500 Is Not a Retry

- 11Witness, Not Judge

Coming Soon
Already written and on their way. If a published part mentions one of these, this is where it lands. Follow along on LinkedIn or the RSS feed to catch each one as it ships.
- 12A Shared ID Must TravelWhy the server rejected a wine that plainly existed: the root cause promised in Part 5.Coming soon
- 13A Version Bump Is Not a ConflictAuto-resolve fits in one clean line. Here is everything that clean line hides.Coming soon
- 14Not Everything Deserves a LedgerWe event-source the entities whose history is the product. The interesting category is the one in between.Coming soon
- 15Shared Logic Is Not Free"One module, three runtimes" is true for the rules. It is not free at the type boundary.Coming soon
- 16Make Drift a Compile ErrorAuto-resolve trusts a hand-written list of what each event changes. Hand-written lists rot.Coming soon
- 17Events Read More Than They WriteOur conflict resolver got archived entities right for a reason nobody designed, and wrong everywhere else.Coming soon
- 18Blocked Is Not IgnoredWe wrote the missing rule, put it in the right layer, and still got it wrong the first time.Coming soon
- 19Unsent Is Not SavedEvery promise an offline-first architecture makes about your data begins when the server has it.Coming soon






