Show "typing..." in real-time. Transient signal: no persistence needed.
Client sends typing start event when user begins typing, stop event after seconds of inactivity. Server forwards to recipient's active connection only. Don't store, don't queue. If recipient offline, discard.
Rate limit to prevent spam: max typing event per second per conversation.