# Typing Indicators

If you use Stream's UI components, typing indicators are automatically handled.
The typing indicators can be turned on or off in the channel type settings.
This example below shows how to integrate typing indicators into your own message input UI.

## Sending Typing Events

When a user starts typing call the keystroke method. Optionally you can specify a thread id to have a thread specific typing indicator.
A few seconds after a user stops typing use stopTyping.

```cpp label="Unreal"
// The Unreal SDK keeps track of the typing state for you.
// Just call `Channel->Keystroke()` when the user types and
// `Channel->StopTyping()` when the user sends the message (or aborts)

// Sends a typing.start event at most once every two seconds,
// and a typing.stop event two seconds after the last keystroke
Channel->KeyStroke();

// Manually sends the typing.stop event, and cancels any pending
// typing.stop event queued by Keystroke()
Channel->StopTyping();
```

### Receiving typing indicator events

Listening to typing indicators uses the event system, an example is shown below

```cpp label="Unreal"
// You can manually subscribe to the typing channel events
Channel->On<FTypingStartEvent>(this, &UMyWidget::OnTypingStart);
Channel->On<FTypingStopEvent>(this, &UMyWidget::OnTypingStop);

// Alternatively you can bind to the OnTypingIndicator delegate (also from Blueprints)
Channel->OnTypingIndicator.AddDynamic(this, &UMyWidget::OnTypingIndicator);
```

<Admonition type="info">

Because clients might fail at sending `typing.stop` event all Chat clients periodically prune the list of typing users.

</Admonition>

### Typing Privacy Settings

Please take into account that `typing.start` and `typing.stop` events delivery can be controlled by user privacy settings:

<Tabs>

```json label="JSON"
// user object with privacy settings where typing indicators are disabled
{
  // other user fields
  "privacy_settings": {
    "typing_indicators": {
      "enabled": false
    }
  }
}
```

</Tabs>

If `privacy_settings.typing_indicators.enabled` is set to `false` , then `typing.start` and `typing.stop` events will be ignored for this user by Stream's server and these events will not be sent to other users. In other words other users will not know that the current user was typing.


---

This page was last updated at 2026-08-11T17:19:22.183Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/unreal/typing-indicators/](https://getstream.io/chat/docs/unreal/typing-indicators/).