Why a sync conflict cannot happen here.
Two devices, one box, and nothing to choose between. This is how.
Syncing a state needs a referee
The obvious way to sync flashcards is to sync the state of each card: when it is next due, how stable the memory is, how many times you have lapsed. That works until two devices both change it. Then there are two versions of one fact, and the only honest thing an app can do is ask you which one to throw away.
Deckist syncs the record instead
Every answer you give is one entry: this card, this moment, this rating, this device. Entries are never edited, and each one carries an identity derived from its own contents, so recording the same answer twice produces the same entry twice and collapses to one.
What that buys
Merging two devices becomes a set union. Union is commutative, associative and idempotent, which in plain terms means it does not matter which device syncs first, which order the batches arrive in, or how many times a flaky connection retries. The answer is the same, and nobody's work is dropped.
Your schedule is then recomputed from the merged record rather than reconciled. Two devices holding the same entries necessarily agree about what is due, without exchanging a single due date. The box on every device is sorted the same way because it is sorted from the same record.
And what it costs
Keeping every review is more rows than storing one number per card. That is the trade, and it is a good one: the history is also what lets Deckist fit the algorithm to you, show you honest statistics, and rebuild your collection from scratch on a new device.
The proof is a test
The merge has a test suite that pins commutativity, associativity, idempotence, three-way convergence, and that derivation depends on the set of entries and not their arrival order. If one of those failed, this page would be false, so every release runs them first and a failing one stops it.