Skip to content
s3nd
Menu

Local-first sync engines

A Replicache alternative for one-shot moves rather than multiplayer

Optimistic local writes, an app that keeps working offline, and data that shows up on the user’s other device.

What Replicache is

In its own terms.

A client-side sync framework from Rocicorp. Your app writes to a local cache through mutators, Replicache pushes them to your backend and pulls updates back, and you implement push and pull on your server against your own database. Rocicorp now builds Zero, a query-driven successor with its own sync server.

Side by side

Where they part ways.

 s3ndReplicache
What it isA CLI, a library and React hooks over your own S3 bucketClient sync framework with push and pull on your backend
Where the data livesYour bucket: S3, R2, MinIO, Scaleway, WasabiYour backend database, cached on the client
Both ends online at onceNo. The code is redeemed later, until it expiresNo
From inside your web appYes, through one route on your serverYes
AccountsNone. The code is the whole handshakeWhatever your backend requires
HostingYour bucket, plus your server when a browser takes partYour backend; Zero adds a sync server
PriceFree. You pay your storage provider for a few objects that expireFree
LicenseMITSource available; Zero is Apache-2.0

The differences

What actually changes.

A framework with a backend contract versus a primitive

Replicache asks you to implement push and pull, keep a version per client and per space, and store everything in a backend database. s3nd asks for a bucket and gives you put and get.

Multiplayer versus a personal transfer

Replicache is built for many clients editing shared data in realtime with rebase and conflict resolution. s3nd is built for one person carrying their own data to their next device.

Identity implied versus none

Push and pull need to know who the client is. A sync code needs to know nothing.

The decision

Pick the one that fits.

Pick Replicache when

  • Multiplayer, realtime, optimistic UI against your own backend.
  • You are ready to implement push and pull, or to adopt Zero.

Pick s3nd when

  • There is no backend database to sync against.
  • The move happens once, or a backup is rewritten occasionally.
  • Codes, not accounts.

Put a file. Hand over the code.

Point it at the bucket you already pay for. Nothing to deploy, nothing to sign up for, nothing in the middle.

npm install -g @s3nd/clis3nd init --provider r2 --bucket drops3nd put ./anything.zip