# Notifications

This page lists every notification that `stream-chat` and `stream-chat-react-native` publish, by type. `stream-chat-expo` publishes the same ones. Match on `type` to translate a notification, filter it, or show it somewhere of your own. How notifications are published and what they carry is on [Publishing notifications](https://getstream.io/chat/docs/sdk/react-native/state/publishing-notifications/). How the React Native components show them is on [Notifications UI](https://getstream.io/chat/docs/sdk/react-native/ui/components/notifications-ui/), and the text each type renders on [Notifications text](https://getstream.io/chat/docs/sdk/react-native/features/notifications/notifications-text/).

Types follow the pattern `domain:entity:operation:result`, explained in [Notification types](https://getstream.io/chat/docs/sdk/react-native/state/publishing-notifications/#notification-types). A notification's `origin.emitter` names the object or component that published it.

## stream-chat

Every type below is in `CORE_NOTIFICATION_TYPE`.

| Type                                       | Severity | `origin.emitter`                          | When                                                                                                                                           |
| ------------------------------------------ | -------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `api:attachment:upload:failed`             | error    | `AttachmentManager`                       | An upload request failed. Not for an upload the user cancelled.                                                                                |
| `validation:attachment:upload:blocked`     | error    | `AttachmentManager`                       | The app's upload settings refused a file. `metadata.reason` says which setting.                                                                |
| `validation:attachment:file:missing`       | error    | `AttachmentManager`                       | `AttachmentManager.uploadFile()` was given an attachment that has no file.                                                                     |
| `validation:attachment:id:missing`         | error    | `AttachmentManager`                       | `AttachmentManager.uploadFile()` was given an attachment that has no local id.                                                                 |
| `validation:attachment:upload:in-progress` | warning  | `MessageComposer`                         | A message was sent while an upload was running, with pending uploads off. The send doesn't go out.                                             |
| `validation:command:disabled`              | warning  | `MessageComposer`                         | A command was used while editing a message, or a moderation command while quoting one. `metadata.reason` is `'editing'` or `'quoted_message'`. |
| `validation:command:not-ready`             | warning  | `MessageComposer`                         | A command was sent without what it needs, such as `/ban` without a user.                                                                       |
| `api:message:send:failed`                  | error    | `MessageComposer`                         | `MessageComposer.send()` failed. The message stays in the list, marked `failed`.                                                               |
| `api:message:update:failed`                | error    | `MessageComposer`                         | `MessageComposer.update()` failed. The edit stays on the message, marked `failed`.                                                             |
| `api:poll:create:failed`                   | error    | `MessageComposer`                         | `MessageComposer.createPoll()` failed.                                                                                                         |
| `api:location:create:failed`               | error    | `MessageComposer`                         | `MessageComposer.sendLocation()` failed.                                                                                                       |
| `api:message:jump:failed`                  | error    | `MessagePaginator.jumpToMessage`          | Jumping to a message failed.                                                                                                                   |
| `api:message:jumpToLatest:failed`          | error    | `MessagePaginator.jumpToTheLatestMessage` | Jumping to the latest message failed.                                                                                                          |
| `validation:poll:castVote:limit`           | info     | `Poll`                                    | A vote was cast in a poll where the user has used all their votes.                                                                             |

With offline support, a send or an edit that fails because the device is offline publishes `api:message:send:failed` or `api:message:update:failed` too, although it waits as a pending task and goes out after the next reconnect.

## stream-chat-react-native

These are the types the React Native components publish, with the severity each one is published with. A type that ends in `success` is published with the severity `success`, and one that ends in `failed` with `error`, unless the table says otherwise. Where a type has more than one emitter, each of them publishes it.

### Messages

| Type                                                              | `origin.emitter`                        | When                                                                                                                 |
| ----------------------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `api:message:delete:success`, `api:message:delete:failed`         | `MessageActions`                        | The Delete Message action, after the user confirmed, deleted a message, or failed to.                                |
| `api:message:flag:success`, `api:message:flag:failed`             | `MessageActions`                        | The Flag Message action, after the user confirmed, flagged a message, or failed to.                                  |
| `api:message:markUnread:success`, `api:message:markUnread:failed` | `MessageActions`                        | The Mark as Unread action marked the channel unread from a message, or failed to.                                    |
| `api:message:pin:success`, `api:message:pin:failed`               | `MessageActions`                        | The Pin to Conversation action pinned a message, or failed to.                                                       |
| `api:message:unpin:success`, `api:message:unpin:failed`           | `MessageActions`                        | The Unpin from Conversation action unpinned a message, or failed to.                                                 |
| `clipboard:message:copy:success`, `clipboard:message:copy:failed` | `MessageActions`                        | The Copy Message action copied the text, or failed to.                                                               |
| `api:message:reactions:fetch:failed`                              | `Reactions`                             | Loading the reactions of a message, for the list of who reacted, failed.                                             |
| `channel:jumpToFirstUnread:failed`                                | `Channel`, `UnreadMessagesNotification` | Jumping to the first unread message failed, when `Channel` opened at it or when the unread notification was pressed. |

### Users

| Type                                                | `origin.emitter`                                  | When                                                                                       |
| --------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `api:user:mute:success`, `api:user:mute:failed`     | `MessageActions`, `UserActions`, `ChannelActions` | A user was muted from a message's actions or from the channel's actions, or muting failed. |
| `api:user:unmute:success`, `api:user:unmute:failed` | `MessageActions`, `UserActions`, `ChannelActions` | A user was unmuted, or unmuting failed.                                                    |
| `api:user:block:success`                            | `UserActions`, `ChannelActions`                   | A user was blocked.                                                                        |
| `api:user:unblock:success`                          | `UserActions`, `ChannelActions`                   | A user was unblocked.                                                                      |
| `api:user:block:failed`                             | `UserActions`, `ChannelActions`                   | Blocking or unblocking a user failed.                                                      |

### Channels

| Type                                                                      | `origin.emitter` | When                                                            |
| ------------------------------------------------------------------------- | ---------------- | --------------------------------------------------------------- |
| `api:channel:pin:success`                                                 | `ChannelActions` | The channel was pinned.                                         |
| `api:channel:unpin:success`                                               | `ChannelActions` | The channel was unpinned.                                       |
| `api:channel:pin:failed`                                                  | `ChannelActions` | Pinning or unpinning the channel failed.                        |
| `api:channel:archive:success`                                             | `ChannelActions` | The channel was archived.                                       |
| `api:channel:unarchive:success`                                           | `ChannelActions` | The channel was unarchived.                                     |
| `api:channel:archive:failed`                                              | `ChannelActions` | Archiving or unarchiving the channel failed.                    |
| `api:channel:mute:success`                                                | `ChannelActions` | The channel was muted.                                          |
| `api:channel:unmute:success`                                              | `ChannelActions` | The channel was unmuted.                                        |
| `api:channel:mute:failed`                                                 | `ChannelActions` | Muting or unmuting the channel failed.                          |
| `api:channel:leave:success`, `api:channel:leave:failed`                   | `ChannelActions` | The user left the channel, or leaving failed.                   |
| `api:channel:delete:success`, `api:channel:delete:failed`                 | `ChannelActions` | The channel was deleted, or deleting failed.                    |
| `api:channel:update-name:success`, `api:channel:update-name:failed`       | `ChannelActions` | The channel's name was saved, or saving it failed.              |
| `api:channel:update-image:success`, `api:channel:update-image:failed`     | `ChannelActions` | The channel's image was saved, or saving it failed.             |
| `api:channel:add-members:success`, `api:channel:add-members:failed`       | `ChannelActions` | Members were added to the channel, or adding them failed.       |
| `api:channel:remove-members:success`, `api:channel:remove-members:failed` | `ChannelActions` | Members were removed from the channel, or removing them failed. |

The `ChannelActions` emitter is the `useChannelActions()` hook, which the swipe actions of a channel row and the channel details screens call. [Channel preview hooks](https://getstream.io/chat/docs/sdk/react-native/reference/hooks/channel-preview-hooks/#channel-actions) lists its handlers.

### Channel details lists

| Type                                        | `origin.emitter`            | When                                                    |
| ------------------------------------------- | --------------------------- | ------------------------------------------------------- |
| `api:channel:query-members:failed`          | `ChannelMemberList`         | Loading the members of the channel details list failed. |
| `api:channel:query-users:failed`            | `AddChannelMembers`         | Loading the users to add to the channel failed.         |
| `api:channel:query-media:failed`            | `ChannelMediaList`          | Loading the shared photos and videos failed.            |
| `api:channel:query-file-attachments:failed` | `ChannelFileAttachmentList` | Loading the shared files failed.                        |
| `api:channel:query-pinned-messages:failed`  | `ChannelPinnedMessageList`  | Loading the pinned messages failed.                     |

### Polls and audio

| Type                                          | `origin.emitter`       | When                                                                                                                                 |
| --------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `api:poll:end:success`, `api:poll:end:failed` | `PollActions`          | A poll was ended, or ending it failed.                                                                                               |
| `validation:audio:recording:hold-required`    | `AudioRecordingButton` | The user tapped the record button instead of holding it. Severity `info`.                                                            |
| `permission:audio:recording:blocked`          | `AudioRecordingButton` | The device refused microphone access to start a recording. Severity `warning`, with no duration and an Open Settings action.         |
| `audioRecording:cancel:success`               | `AudioRecorder`        | The user deleted a voice recording. Severity `info`.                                                                                 |
| `browser:audio:playback:error`                | `AudioPlayer`          | Playing a voice recording or audio attachment failed, its format is not supported, or the player can't seek in it. Severity `error`. |

### Panel tags

A component publishes its notifications through `useNotificationApi().addNotification()`, which tags them for the target of the nearest `NotificationTargetProvider`. `Channel` provides the panel `channel`, `Thread` the panel `thread`, `ChannelList` the panel `channel-list`, `ThreadList` the panel `thread-list`, and the channel details screens the panel `channel-details`. The target is a tag such as `target:channel`, with the host as a second part, such as `target:channel:channel:messaging:general`.

While a notification list is mounted, a notification that is added without a target tag gets one: for the channel or thread of the composer in its `origin.context`, else for the target of the action that is running, else for the latest mounted target. This covers the notifications `stream-chat` publishes. The vote toggle of a poll runs its request as such an action, so `validation:poll:castVote:limit` shows in the panel the poll sits in.

None of the types on this page carries the tag `system`. The SDK publishes no system notification. [Notifications UI](https://getstream.io/chat/docs/sdk/react-native/ui/components/notifications-ui/) explains where each tag shows.

---

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/sdk/react-native/reference/notifications/](https://getstream.io/chat/docs/sdk/react-native/reference/notifications/).