Skip to content
s3nd
Menu

Local-first sync engines

A PouchDB alternative that does not need a CouchDB

IndexedDB in the browser, the same data on another device, and a design that treats offline as normal rather than as an error.

What PouchDB is

In its own terms.

A JavaScript database that runs in the browser, on IndexedDB, and replicates with CouchDB or anything that speaks its replication protocol. Bidirectional, incremental, with conflict detection through revision trees, and around for over a decade.

Side by side

Where they part ways.

 s3ndPouchDB
What it isA CLI, a library and React hooks over your own S3 bucketBrowser database with CouchDB replication
Where the data livesYour bucket: S3, R2, MinIO, Scaleway, WasabiA CouchDB server, or a compatible one
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 handshakeCouchDB authentication
HostingYour bucket, plus your server when a browser takes partSelf-hosted or hosted CouchDB
PriceFree. You pay your storage provider for a few objects that expireFree
LicenseMITApache-2.0

The differences

What actually changes.

A database versus a snapshot of yours

PouchDB is the database, with its document model and its revisions. s3nd leaves your database alone, whatever it is, and moves an export of it.

A CouchDB versus a bucket

Replication needs a CouchDB, or a compatible server, running somewhere. s3nd needs object storage and nothing else.

Continuous replication versus a code

PouchDB syncs as long as it is connected. s3nd moves the data once, when the user asks, and the code is the only credential.

The decision

Pick the one that fits.

Pick PouchDB when

  • You want a database that syncs, with revisions and conflicts as first-class concepts.
  • A CouchDB you already run, or a hosted one you are happy to rent.
  • Continuous bidirectional replication is the feature.

Pick s3nd when

  • You keep your own IndexedDB schema and your own wrapper.
  • Object storage is all you want to run.
  • New device with a code, backup, or encrypted export.

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