01 · Before and afterThe pattern
-- before: ties at the same timestamp are skipped
WHERE created_at > $cursor_ts ORDER BY created_at
-- after: total order, cursor = (ts, id) stored by value
WHERE (created_at, id) > ($cursor_ts, $cursor_id)
ORDER BY created_at, id02 · Run it on your appThe check
Does your “load newer” or sync endpoint page by timestamp alone?
If the honest answer is no or not sure, this is worth a look before it reaches production.