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. How the React Native components show them is on Notifications UI, and the text each type renders on Notifications text.

Types follow the pattern domain:entity:operation:result, explained in 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 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 explains where each tag shows.