// the find
evoluhq/evolu
TypeScript library and local-first platform
Evolu is a local-first SQLite library for TypeScript that handles sync via CRDT, with first-class support for React, React Native, Expo, Electron, Svelte, Vue, and Angular. It's aimed at developers who want offline-capable apps with end-to-end encrypted sync without running a traditional backend. The relay server is self-hostable and dead simple — it's basically a dumb message broker.
The CRDT approach means no manual conflict resolution — you get automatic merging that actually works for the append-heavy workloads most apps have. The schema system uses branded types and Kysely for queries, so you get real type safety from schema definition through to query results, not just 'any' everywhere. Framework support is genuinely broad: the examples cover Next.js, Vite PWA, Expo, Electron, Svelte, and Vue, and they're not toy demos. Privacy is structural — the relay never sees plaintext data, encryption happens on-device.
The README is a stub that just points to the docs site, which is a real friction point for evaluating the library quickly. Star count (1.8k) and fork count (72) suggest this is still early-adopter territory — production war stories are thin. The relay server is required for cross-device sync, which means you're either self-hosting or trusting a third-party service; there's no built-in P2P fallback. Migrations in a local-first SQLite context are legitimately hard — every client runs its own schema version — and the docs page on this topic is worth reading carefully before you commit.