Why your cursor never touches our database
Live collaboration with privacy in mind.
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:
const room = useVarialFilePresence({ identity: { app: 'design', fileId }, title: 'Launch page' })
await room.start()
room.updateCursor({ x, y })