Conflict resolution
Conflict Resolution Deep Dive¶
Overview¶
When local and remote changes conflict, determine winner.
Core Concepts¶
Strategies: - Last-write-wins (simplest, timestamp-based) - Remote-wins (server authority) - Merge (combine non-conflicting fields) - Manual (show UI)
Code Examples¶
// Last-write-wins merge
fun mergeUser(local: User, remote: User): User {
return if (local.modifiedAt > remote.modifiedAt) {
local
} else {
remote
}
}
// Merge fields
fun mergeUser(local: User, remote: User): User {
return User(
id = remote.id,
name = remote.name ?: local.name,
email = local.email, // prefer local
modifiedAt = maxOf(local.modifiedAt, remote.modifiedAt)
)
}
Senior-Level Insights¶
- Log conflicts for analytics
- Version vectors for causal ordering
- Expose unresolved conflicts in UI