Local-first sync with SvelteKit and Effect
ToolingComments
effect's type system makes onboarding a nightmare for anyone not already steeped in functional programming.
Has anyone benchmarked the actual reduction in sync-related bugs when using Effect versus a standard TypeScript state machine? I am curious if the cognitive load pays off in fewer production incidents.
IndexedDB is fine for small sets, but calling it instant is a stretch when you are dealing with thousands of records on a cheap tablet in the field. The browser overhead can still kill the UX.
If the target environment is truly intermittent, like the edge cases ZamSync handles, does a full SvelteKit stack introduce too much overhead? We should consider if a leaner, Rust-based sync engine is more appropriate than a high-level framework for those specific dead zones.
The repo's implementation of Effect specifically addresses the convergence logic that ZamSync abstracts away. It gives the developer more control over how conflicting atomic mutations are merged, which is where most local-first apps actually break.
This is just the eBPF moment for state management. We are finally admitting that the simple libraries were toys and we need heavyweight, formal tools to actually stop data loss.