Read receipts
Sync read state across a user's own devices. When a user reads a message on their phone, their tablet and laptop can clear the same unread badge. The platform stays out of your way: your app decides when a message counts as read, the relay never infers it.
How it works
- Your UI decides a message has been read (scrolled into view, conversation opened, whatever your product means by "read").
- You call
markRead(messageId, conversationId?). - The relay forwards the receipt to that user's other devices, and only those devices. It is never sent to the message's sender, and the server stores no read state.
- The other devices receive it via
onReadReceiptand clear whatever unread count or badge your app maintains for that message.
What the platform does not do
DropOnAir does not compute unread counts, does not auto-mark messages read, and in this release does not notify the sender that a recipient read their message. Those are product decisions left to you. Unread counts live entirely in your client.
Quick start (JavaScript)
// When YOUR UI decides the message is read
client.markRead(messageId, peerUserId);
// On the user's other devices
client.onReadReceipt(e => {
// e.messageId was read elsewhere - clear your unread state
});Turning it off
Read receipts are a capability, not a mandate. The app owner can switch them off in the dashboard under App Settings; when off, the relay silently drops the receipt and other devices simply never see it. Your markRead() calls stay harmless no-ops.
Compatibility
Requires SDK 0.11.0+ on JavaScript, Android, and iOS (PROTOCOL_VERSION 6). Verify via GET /api/info: the features array includes "read_receipts".