Our plan to make Theatre.js Local-First
Theatre.js 0.8 (upcoming) supports real-time collaboration similar to GDocs and Figma.
We intend to make Theatre.js local-first.
Local-first removes the lock-in of a central server (although Theatre's server is also open-source). It also simplifies our backend and reduces maintenance costs.
But since local-first sync algorithms (CRDTs) haven't yet matured enough for creative apps, we decided to start with a server-ful approach and gradually transition to local-first.
Our server-ful implementation is called Saaz. Saaz' algorithm is a simple tree of registers, which allows us to gradually bring in domain-specific CRDT implementations for specific features (such as text, brush strokes, non-destructive bitmap editing, etc). As each of thse CRDTs mature, we can swap them in, and at some point, remove the server.
Source: theatre-js/theatre