Pre release

LiveSync

Build stateful interactive applications that scale

Copy link to clipboard

Keep clients in realtime sync with any database

LiveSync abstracts all the complexity of keeping large volumes of clients in realtime sync with one or more relational databases. While LiveSync takes care of the low-level sync, you can focus on core app functionality. 

You can power any realtime collaborative application where the source of truth for the app state is stored in the database.

Copy link to clipboard

Why use LiveSync?

Build reliable interactive applications using your preferred stack.

Backend-agnostic

LiveSync already integrates with Postgres - and in the future, it will work with all the popular relational databases.

End-to-end data integrity

Changes and user actions always sync correctly, thanks to our hard guarantees for data integrity and exactly-once delivery.

Snappy user interaction

Your end-users don't need to keep refreshing their page or watching the wheel spin while waiting for updates, thanks to our optimistic updates at API level.

No need to poll for updates

Subscribers are automatically notified of new data as soon as it becomes available. So there is no need to poll the server for updates.

Highly reliable & scalable

Change events are distributed through a global system with no single point of failure and a 99.999% uptime SLA. And thanks to autoscaling systems that actively manage capacity, we can absorb very large spikes in concurrent users or interactive actions.

Copy link to clipboard

How LiveSync works

Copy link to clipboard

Client-side SDK

LiveSync's client-side Models SDK makes it simple to build live, observable data models for any frontend framework. It drastically simplifies state management, with out-of-the-box support for channel lifecycle management, change event ordering & de-duplication, mutations, and optimistic updates.

import Models from '@ably-labs/models';
import { Realtime } from 'ably';

// instantiate the library
const ably = new Realtime.Promise({ key: 'YOUR_API_KEY' });
const models = new Models({ ably });

// create a model instance
const model = models.Model('post');

// register methods
await model.$register({
  $sync: getPost,
  $update: {
    'posts': { 'update': onPostUpdated },
    'comments': { 'add': onAddComment },
  },
  $mutate: { updatePost, addComment },
});

// subscribe to live changes with optimistic updates
model.subscribe((err, post) => {
    if (err) throw err;
    // post updated!
}, { optimistic: true });

// mutate the post
const [result, confirmation] = await model.mutations.updatePost('new value');

// wait for confirmation of the change from the backend
await confirmation;
Copy link to clipboard

Backend database connector

LiveSync interacts with your database through a database connector, whose only point of contact with your database is an outbox table. Through the connector, clients automatically receive relevant change events via Ably's Pub/Sub channels. Subscribers are notified of data as soon as it becomes available. There is no need to poll the server for updates.

Sign up for early access

LiveSync, the latest product from Ably, will soon be available for early access. Sign up to register your interest today!

Sign up for early access