Build chat in minutes with Sendbird UIKit open source code.
suggestedRepliesDirection
global option which serves as vertical/horizontal scroll option for SuggestedReplies
<App
appId={appId}
userId={userId}
uikitOptions={{
groupChannel: {
// Below turns on the `SuggestedReplies` feature (see v3.8.0 release changelog). Default value is false.
enableSuggestedReplies: true,
// Below changes scroll direction from horizontal to vertical.
suggestedRepliesDirection: 'vertical'
}
}}
/>
Header
(import Header from '@sendbird/uikit-react/ui/Header'
) which replaced all existing header componentsshowSuggestedRepliesFor
is set to 'last_message_only'TemplateMessageItemBody
now supports CarouselView
type templateMessageContent
when value exists in message.extendedMessagePayload['ui']['container_type']
TemplateMessageItemBody
borderRadius
, backgroundColor
, and color
for message template itemsEmoji Reactions
feature in the super group channel
Tooltip
displaying who reacted will only appear in the normal group channel, not in the super group channel.MessageFeedbackFailedModal
component for consistency with other message feedback-related components.renderMenuItem
to the MessageMenu
component
<GroupChannel
renderMessageContent={(props) => (
<MessageContent
{...props}
renderMessageMenu={(props) => (
<MessageMenu
{...props}
renderMenuItem={(props) => {
const {
className,
onClick,
dataSbId,
disable,
text,
} = props;
return <MenuItem /> // Render Custom Menu Item
}}
/>
)}
/>
)}
/>
onBeforeDownloadFileMessage
to the <GroupChannel />
and <Thread />
modules
const ONE_MB = 1024 * 1024;
/**
* Use this list to check if it's displayed as a ThumbnailMessage.
* (https://github.com/sendbird/sendbird-uikit-react/blob/main/src/utils/index.ts)
*/
const ThumbnailMessageTypes = [
'image/jpeg',
'image/jpg',
'image/png',
'image/gif',
'image/svg+xml',
'image/webp', // not supported in IE
'video/mpeg',
'video/ogg',
'video/webm',
'video/mp4',
];
<GroupChannel // or Thread
onBeforeDownloadFileMessage={async ({ message, index = null }) => {
if (message.isFileMessage()) {
const confirmed = window.confirm(`The file size is ${(message.size / ONE_MB).toFixed(2)}MB. Would you like to continue downloading?`);
return confirmed;
}
if (message.isMultipleFilesMessage()) {
const confirmed = window.confirm(`The file size is ${(message.fileInfoList[index].fileSize / ONE_MB).toFixed(2)}MB. Would you like to continue downloading?`);
return confirmed;
}
return true;
}}
/>
onDownloadClick
to the FileViewer
, FileViewerView
, MobileBottomSheet
, MobileContextMenu
, and MobileMenu
MembersModal
, MutedMembersModal
, and OperatorsModal
Operator
description on the MembersModal
width
size of the OGMessageItemBody
component (You)
with the StringSet CHANNEL_SETTING__MEMBERS__YOU
in the UserListItem