Masif Kadapa
← Back to work
00420224 months

Verso Editor

A collaborative rich-text editor with live cursors and sub-100ms perceived latency, offline-first.

RoleSolo / principal engineer
Timeline4 months
StackReact · Yjs · ProseMirror · WebRTC
Context

Verso helps product teams write together. Editing offline was non-negotiable: a contributor on a flight must keep writing without being punished.

The problem

The previous autosave flushed state without a guarantee, so work was lost. Concurrent edits on the same doc clobbered each other unpredictably.

How it was solved
  1. 01

    Adopted a CRDT (Yjs) so edits merge deterministically and offline is a first-class state.

  2. 02

    Wired live presence and cursors without a central authority.

  3. 03

    Persisted to IndexedDB so a reload never loses the document, and sync only merges when back online.

  4. 04

    Isolated the rendering layer so typing never blocks the main thread.

The detail worth mentioning
Because state is a CRDT, concurrent edits always converge. There is no 'last writer wins' branch for user data to be lost.
Outcome

99msp50 latency

across 25 simultaneous collaborators

  • Zero lost documents across 12 months of production use.
  • 25 collaborators edited a single doc with no conflict.
  • Offline-first editing that survived an in-flight demo.