Glossary
Chat History
Everything that was said before you opened the conversation. Where chat history lives, on the device or on the server, decides whether it survives a new phone, syncs across devices and can be retained or erased by policy.
General definition
Chat History is the persisted record of a conversation: the messages, attachments, reactions, edits, deletions and membership changes that took place before the current moment, in the order they happened. It is what lets a user scroll up, search for something said last month, or open the same conversation on a laptop and see what they wrote on their phone.
There are two basic designs, and they lead to very different products:
- Device-only history: messages are stored on each participant’s device and the server forgets them once delivered. This is typical of end-to-end encrypted consumer messengers. Losing the phone, or reinstalling, loses the history unless the user keeps a backup
- Server-side history: the server keeps the archive and clients fetch it on demand. New devices load the full conversation, search works across everything, and the operator can apply retention rules. This is the norm for team chat, customer support and regulated in-app messaging
Server-side history has to solve a few technical problems. Clients need to page backwards through a long conversation without downloading everything, catch up on messages that arrived while they were offline, and keep several devices in step. In XMPP these are handled by XEP-0313, Message Archive Management (MAM), which lets a client query the server archive by time range or message id, and XEP-0280, Message Carbons, which copies each message to all of a user’s connected devices. Custom WebSocket backends implement the same ideas with cursors and sync endpoints, and the server also becomes the source of truth for the unread count and the last message shown in the room list.
History also carries obligations. Regulated organisations must keep certain conversations for years, which is the domain of message archiving, while privacy law requires deleting personal data when it is no longer needed and honouring a user’s erasure request. A server-side history with configurable retention and per-user deletion can satisfy both; a device-only history can satisfy neither in a verifiable way.
In the Ethora ecosystem
Ethora keeps chat history server-side. Messages, attachments and room events are stored on the ejabberd XMPP server and made available to every client through XMPP archive queries and the Node.js API, so a user who signs in on a new device sees the full conversation, message search works across the archive, and unread counts and last-message previews are computed once on the server. The React Native SDK adds an encrypted local cache (AES-256) so recent history opens instantly and survives a poor connection.
Retention is a setting, not a default. Each App can configure how long history is kept, and per-user erasure removes an individual’s data on request to meet GDPR obligations. Alongside the live history the server keeps a read-only message archive for compliance, with an audit trail and immutable log export, so the history users scroll through and the record a compliance officer reviews are the same data. Export is available for chat transcripts when a conversation needs to leave the platform.