Typing & Activity Indicators
The WebSocket version shows real-time activity indicators when a conversation participant is doing something — typing a message, recording a voice message, or uploading a file. Each activity has its own distinct icon. The indicator appears instantly and disappears when the activity ends. The "is typing…" pattern that defines modern chat apps, built into Better Messages.
Activity indicators require the persistent WebSocket connection. The free version doesn't show real-time typing state.
What it adds#
- "Is typing…" indicator when someone is composing a text message
- "Is recording…" indicator when someone is recording a voice message
- "Is uploading…" indicator when someone is uploading a file attachment
- Distinct icons for each activity type
- Real-time via WebSocket — sub-200 ms latency
- Works in DMs, group chats, and chat rooms
- Appears in conversation header AND inline above the input
How it works#
When a user starts typing, their browser fires a "typing started" event through the WebSocket. The cloud relay forwards this to all conversation participants. Their UI shows the indicator. When the user stops typing for a couple seconds or sends the message, a "typing stopped" event fires, and the indicator disappears.
| User action | Indicator shown to others |
|---|---|
| Starts typing in input | "is typing…" with pen icon |
| Pauses typing > 3 seconds | Indicator disappears |
| Starts recording voice | "is recording…" with microphone icon |
| Cancels recording | Indicator disappears |
| Starts file upload | "is uploading…" with file icon |
| Upload completes / cancelled | Indicator disappears |
| Sends the message | All indicators disappear; message appears |
In group conversations, multiple users can have indicators at once — e.g., "Anna and Mike are typing…".
When typing indicators matter#
| Use case | Why it improves the experience |
|---|---|
| Sales chat | Visitor knows the rep is composing — won't abandon |
| Coaching session | Client feels heard while the coach formulates a response |
| Group chat | Avoids interruptions — wait for the typing person to finish |
| Customer support | Sets expectations — "the agent is responding now" |
| Dating | Adds liveness to the conversation flow |
Privacy considerations#
Per-user typing-broadcast opt-out is not exposed as a built-in setting today. The indicator is either on or off site-wide. Sites that need a per-user opt-out can wire one through a custom user-meta toggle plus a React component override.
Frequently asked questions#
Does the indicator stay forever if I stop typing without clearing the input?#
After ~3 seconds of no typing, the indicator auto-clears. The threshold is configurable.
Can users disable seeing typing indicators?#
Not in the default UI. To add a per-user toggle, hook the user-settings panel and use the appropriate filter.
Are typing indicators shown for AI bots?#
Yes — when an AI bot is generating a response, it shows "AI is typing…". Useful for letting users know to wait.
What about offline users? Do they see I was typing?#
No — typing events are real-time only. A user who comes online later sees only the final sent message, not the typing history.
Does typing indicator work in voice / video calls?#
Calls have their own real-time medium (live audio/video). Typing in the chat alongside an active call works normally — the typing indicator displays in the chat panel.
See also#
- Presence indicator — online / away / busy status
- Message status (sent/delivered/seen) — per-message state
- Instant delivery — why typing updates are real-time
- Voice messages — async voice (the "is recording…" indicator targets this)
- File sharing — file attachments (the "is uploading…" indicator targets this)