Great writeup. We’ve used an offset based relay cursors as well as a way to start supporting a cursor-based graphql api without having to change the backend queries (although of course at some point we’d like to, to get the performance benefits).
Are you using PostgreSQL? If so, I’m curious if you’re taking advantage of composite values for sorting, eg
WHERE (created_at, id) > (x, y) to allow for primary sorts on a field that may be non-unique. To my knowledge other databases don’t support this.