I'm bullish on sync engines, but I admit there's a lot of downsides to...


I'm bullish on sync engines, but I admit there's a lot of downsides to consider too.

Here's 9.

1. Distributed state is a complex mental model

2. Handling conflicts well is a tricky UX problem with many edge cases and few "silver bullets"

3. Ideally you'll want to understand complexities like CRDTs and Operational Transform to handle conflicts well, and there are a lot of intimidating white papers in this space

4. The UX benefits are minor if user internet is fast and reliable

5. Storing data local is risky on public machines

6. Typically limits DB options / BAAS providers

7. Mostly young/alpha/beta libraries and services

8. Extra costs to pay for a hosted sync engine, or extra complexities if you self host

9. “Sticky” – Hard to change sync engines later since proprietary sync engine APIs are used throughout the UI in lieu of calling a REST/GraphQL backend. Some sync engines use a proprietary DB too, which may be tricky to migrate away from if necessary.

Again, I'm excited about the innovation in this space, but I want to be candid about the tradeoffs I see.

View original on X