Ask how to add offline sync to a React Native app and the same names usually come up: PowerSync, ElectricSQL, WatermelonDB, and RxDB. I tried to map all four onto Skulpt. Each one solved a larger problem than the one in front of me.
I built Skulpt, an open-source workout tracker for iOS and Android. The app keeps its data in an on-device SQLite database and works without a server. Sync sits on top as an optional layer. I wrote it in TypeScript without a third-party sync library or CRDTs, and it doesn't depend on Postgres replication slots.
Why I didn't use a sync library
The tradeoff was different in each case. PowerSync adds a server-side service, either managed or self-hosted. ElectricSQL assumes Postgres-backed sync infrastructure. WatermelonDB has its own database and expects the backend to follow its sync protocol. RxDB worked, but its bundle cost was hard to justify in this app.
I kept coming back to a shorter question: what does Skulpt need?
A user can change
Discussion
Don’t hold back—comment!
Don’t wait—start sharing your ideas now!