Skip to main content

Share Mutators

If your Replicache backend is written in JavaScript, it is possible to share mutator functions between client and server. This prevents you from having to write them twice.

This does require that your backend datamodel is key/value oriented like Replicache, so that the same code can run against both storage systems with minimal branching.

For example, our samples use PostgreSQL with a single entry table having text key and JSON value columns. Another option would be to use a document database, like Google Cloud Firestore.


Although using a relational database as a document store is somewhat unconventional, Postgres has excellent JSON support and does support this usage. This can be a very convenient way to get a Replicache project up and running quickly.

replicache-transaction Helper Package

We provide the replicache-transaction package to make this usage easier. It adapts Replicache's WriteTransaction interface to some backend key/value storage that you provide. See PostgresTransaction in replicache-express for an example.

Other Backend Datastores

If you want to use Replicache with some non-key/value backend datastore, such as a normalized SQL database, it typically makes more sense to implement the mutators twice.

See Replicache on Rails for a JS helper library that can automate much of the client-side.