Ok. For the last, like, 15 years, I've constantly been told that CRDTs (and Yjs in particular) solve collaborative text editing. Both the offline and live-collab cases. After an excruciatingly painful evaluation, I argue not only is this completely false, they're generally not appropriate for production-grade editors... at all.
Yeah, I know: everyone uses Yjs, so the problem must be us. Right? That's what I thought too. Well, did you know that on every single collaborative keystroke, Yjs will REPLACE YOUR ENTIRE DOCUMENT? (See this GitHub issue:
github.com/yjs/y-prosemirror…) Did you know that this is BY DESIGN? (See this discussion on the ProseMirror boards:
discuss.prosemirror.net/t/of…) Did you know that this breaks, like, every editor plugin? (See the ProseMirror author's commentary here:
discuss.prosemirror.net/t/of…)
I am not trying to bag on anyone, but to me this kind of mistake belies a fundamental misunderstanding of what text editors need to perform well, in any situation, let alone a collaborative one.
Anyway, learn from my pain. I wrote a somewhat long-form article about all the other challenges we ran into with CRDTs on our blog:
moment.dev/blog/lies-i-was-t…