Skip to main content
Convex Sync illustration

Everything, always in sync

Convex is a stateful sync platform. Everything syncs in real-time. The server pushes query results to the client, and the client queues all mutations to execute on the server. Occasional network blips are handled gracefully.

Get started

Realtime, all the time

Convex keeps all client apps synchronized in real-time. Convex query functions track all their dependencies, including arguments and the precise data in the database. Queries re-run automatically when any dependency changes. The results are pushed to the clients to keep them up-to-date.

Automatic perfect caching

In the same way query results are automatically synced to the client, they are also automatically synced to the backend cache. There is no manual cache management. Convex’s sync engine ensures perfect caching, maximizing both performance and freshness.

Consistency on the
server and client

Convex uses ACID-compliant transactions to interact with the database. Your server always has a consistent view of all the data, and every client query is automatically updated to the same consistent view of the database. Every surface of your product will look correct.

Think about an e-commerce site with products in a shopping cart. If an item is in the cart, it isn’t available on the shelf. There will never be a screen of the app where the item is in two places or mysteriously not there at all.

FAQ

Have a question? Reach out to us on Discord, we’d love to talk.

Join our community

Does Convex use WebSockets?

Yes. Convex uses WebSockets to push updated query results to the client and send mutations to the server. You don’t have to think about it if you are using the provided client libraries.

Does Convex do local offline sync?

Convex will automatically handle intermittent network blips. Convex doesn’t currently provide a full offline sync mechanism, but some customers have used tools like Replicache. The team is actively exploring this space.

How is sync different from making a fetch request?

When you make an http call with fetch from your app, you only get one result at the time you make the request. With sync, you replace the fetch with a live subscription that is updated whenever the query result changes. You get a consistent view of the data and your writes are serialized.

Resources

More about Convex

How Convex Works

How does Convex actually work? With our recent open source release, now is a perfect time to answer this question.

Building a Multiplayer Game

Building multiplayer games requires a lot of synchronization logic and event systems. However, using Convex, we get a lot of this for free!

Get your app up and running in minutes
Start building