As a backend engineer, I think local-first APIs should declare their conflict-resolution policy in the schema, not hide it in an SDK or client implementation. If two devices edit a note offline—one changes the title and the other changes the checklist—the API should make discoverable whether those changes are rejected, merged by field, or allowed to overwrite each other.
“Last write wins” is simple, but it can silently discard a legitimate edit when the object is treated as one blob. Firestore documents LWW for multiple changes to the same document; AppSync exposes alternatives such as optimistic concurrency, automatic merging, and custom resolution, though its policy is configured through service/resolver settings rather than necessarily the public schema.
A richer contract improves review, portability, and user expectations, but also makes schemas and tooling harder to understand. Should conflict semantics be as visible and mandatory as authentication or versioning? Disagree, or share an API that handles this well.