Components
← All components

Typing Indicator

stimeo--typing-indicator

"X is typing…" over Action Cable — realtime with almost zero JS of your own.

  • Core

The stimeo--typing-indicator controller is the first server-bound part: the state lives on the server's Action Cable stream, not in client memory. Typing anywhere inside the element broadcasts a throttled typing signal (leading edge, once per throttle ms) with this client's display name; signals received from OTHER clients are tracked per typist and rendered into the status live region ("X is typing…"), each auto-clearing after timeout ms of silence. Your own echoes are suppressed by comparing the name value. The server side is one thin channel that rebroadcasts the signal to the room — no state, no timers (this catalog's TypingChannel is the spec's sample plus a fixed-room allowlist for the public deploy). The announcement is localizable via the data-one/data-many templates, and the data-typing hook drives the visual treatment. Ships in the opt-in stimeo-ui/cable subpath (@rails/actioncable is an optional peer; the core stays zero-dependency), and reuses your app's existing consumer via setCableConsumer(). Authentication and the message body itself stay out of scope.

running

Open this page in a second tab side by side, then type in one composer: the other tab shows the indicator (your own tab stays quiet — own echoes are suppressed by design) and clears it about 3 seconds after you stop.

You appear to others as Guest cbb1.