finds.dev← search

// the find

YousefED/SyncedStore

★ 1,863 · TypeScript · MIT · updated Mar 2024

SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.

SyncedStore wraps Yjs CRDTs behind a MobX-style reactive proxy API, so you can mutate shared state with plain array/object operations and get automatic conflict-free sync across peers. It targets React, Vue, and Svelte developers who want collaborative/offline-first features without touching Yjs's lower-level API directly. The abstraction is genuine — `store.todos.push(...)` actually works and syncs.

Yjs underneath is battle-tested and used in production by Notion, VSCode Live Share, and others, so the CRDT semantics are sound. The proxy-based API genuinely hides the Yjs complexity — you don't need to understand Y.Array or Y.Map to get started. Framework adapters are first-class packages rather than bolted-on afterthoughts, and the interactive docs with live code samples are unusually good for a library this size. Monorepo structure is clean — core, react, svelte, and yjs-reactive-bindings are properly separated.

Last commit was March 2024 and activity has been sparse for over a year — this is a real maintenance risk if you hit edge cases. The abstraction leaks when you need to do anything advanced: you eventually have to understand Yjs primitives anyway, and the `boxed` type workaround for non-CRDT values is genuinely awkward. Only 59 forks for a collaborative editing library suggests it hasn't been widely adopted beyond demos, which means less community-found bug surface. No built-in persistence or sync provider is bundled — you wire up your own WebSocket/WebRTC provider, which is the right call architecturally but means more integration work than the README implies.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →