Blog

Why your cursor never touches our database

Live collaboration with privacy in mind.

Robert Slate Jr.Founder, Varial
AustinBradYou

Open a shared file in Varial and you will see who else is there, and where their cursor is. It feels simple. Underneath, there are two very different kinds of traffic.

Two kinds of events

Room events matter later. Someone joined, someone left, a comment became a task. Those go through our server and are kept.

Cursor positions only matter right now. They change dozens of times a second, and nobody needs them a minute later.

Cursors are whispers

So cursor positions are whispered straight between the people in the room. They move through the realtime connection without being written anywhere. There is no cursor history to leak, back up, or delete.

Only readers get in

Before you can join a file's room, the server checks that you can read that file. No access, no room, no cursors.

For your own apps

The same presence client is available to developers:

ts
const room = useVarialFilePresence({ identity: { app: 'design', fileId }, title: 'Launch page' })
await room.start()
room.updateCursor({ x, y })