How would we deal with conflicts (e.g. syncing back several conflicting offline clients for the same user) with something based on the Session Extension?
So you need to be carful how you design your schema, but very possible.
One option is to use something like Yjs and a JSON column to get proper CRDTs for merging.