Real-time updates
Once a user signs in, the inbox opens a realtime connection. New messages appear live. Read, opened, and archived states sync across every device where that user is signed in. The connection uses the same authenticated session, so a valid JWT is all it needs. The socket has no separate authentication. The same live feed drives a custom UI. See to build your own inbox, with pagination, on any platform.Message retention
A message stays in the feed until it is archived or expires. A message sent with an expiration (expiresAt) drops from the feed when that time passes. Read and archive states persist across sessions and devices.
Troubleshooting
Updates are not live. Check that the user is signed in with an unexpired JWT. An expired token ends the session, and no updates arrive until you sign in again with a fresh token. See . Custom UI shows stale data. Read from the datastore and respond to its change events. Do not cache a one-time snapshot.FAQ
Do real-time updates work with JWT authentication?
Do real-time updates work with JWT authentication?
The realtime connection uses the same . The socket has no separate authentication.
Can I build a fully custom inbox UI?
Can I build a fully custom inbox UI?
See . Build the whole UI on any platform, or on the web SDKs keep the built-in inbox and swap individual parts.
How long do messages stay in the inbox?
How long do messages stay in the inbox?
Until they are archived or reach their expiration. A message sent with an
expiresAt drops from the feed when that time passes. Without one, it persists. See Message retention.