Skip to main content
A read marks the conversation as read up to target, surfacing a read receipt to the sender where the platform supports one. space.send(read(message)) is the canonical outbound API; message.read() and space.read(message) are sugar that delegate here. Reads are fire-and-forget — providers handle them inside their send action and the resolved value is undefined. Granularity is per-platform:
  • WhatsApp Business: per-message receipt via markRead(target.id), which also marks every earlier message in the conversation as read.
  • iMessage (remote): chat-level chats.markRead(chatGuid) — target only identifies the chat, and every unread message in it is marked read. Local mode rejects with UnsupportedError (warned and skipped).
  • Telegram / Slack: silently no-op. Neither surfaces read state for bot conversations (Telegram bot chats are effectively auto-read), so the signal is vacuously satisfied — same best-effort contract as typing.