Releases: sendbird/sendbird-uikit-react-native
v3.3.0
3.3.0 (2023-11-23)
Release notes
-
Add typing indicator bubble feature.
TypingIndicatorBubble
is a new typing indicator UI that can be turned on throughtypingIndicatorTypes
option.
When turned on, it will be displayed inGroupChannelMessageList
upon receiving typing event in real time.import { SendbirdUIKitContainer, TypingIndicatorType } from '@sendbird/uikit-react-native'; const App = () => { return ( <SendbirdUIKitContainer uikitOptions={{ groupChannel: { typingIndicatorTypes: new Set([TypingIndicatorType.Bubble]), }, }} /> ); };
-
Add
bottomSheetItem
to the props of renderMessage.bottomSheetItem
is a new prop forrenderMessage
that can be utilized to add a custom item to the bottom sheet of a message.
It can be used to add a custom menu item to the bottom sheet of a message.import { GroupChannelMessageRenderer } from '@sendbird/uikit-react-native'; import { useBottomSheet } from '@sendbird/uikit-react-native-foundation'; const GroupChannelScreen = () => { const { openSheet } = useBottomSheet(); const onOpenMessageMenu = (bottomSheetItem) => { if (!bottomSheetItem) return; openSheet({ ...bottomSheetItem, sheetItems: [ // Update bottomSheetItem.sheetItems or append your custom menu item ...bottomSheetItem.sheetItems, { icon: 'search', title: 'Search', onPress: () => console.log('Search') }, ], }); }; return ( <GroupChannelFragment renderMessage={(props) => { return ( <GroupChannelMessageRenderer {...props} onLongPress={() => onOpenMessageMenu(props.bottomSheetItem)} /> ); }} /> ); };
-
Fix the not found
Promise.allSettled
error in Hermes. -
Fix the vertical alignment of iOS TextInput.
Changelogs
Features
- add bottomSheetItem to props of renderMessage (83f8710)
- add typing indicator bubble ui and logic (9223b43)
Bug Fixes
v3.2.0
3.2.0 (2023-11-03)
Release notes
-
Add chat init params to
chatOptions
inSendbirdUIKitContainer
props. -
Add
reaction.onPressUserProfile
toSendbirdUIKitContainer
props. -
Add
scrollToMessage
toGroupChannelContexts.MessageList
. -
Add Voice message
const App = () => { return ( <SendbirdUIKitContainer uikitOptions={{ groupChannel: { enableVoiceMessage: true, }, }} platformServices={{ recorder: RecorderService, player: PlayerService, }} /> ); };
Before using it, you should implement the
RecorderService
andPlayerService
platform services.
You can implement this easily by using helper functions.- CLI
- Install
react-native-permissions
andreact-native-audio-recorder-player
. - Create platform services using
createNativeRecorderService
andcreateNativePlayerService
.
- Install
- Expo:
- Install
expo-av
- Create platform services using
createExpoRecorderService
andcreateExpoPlayerService
.
- Install
- CLI
-
Fix the display of a message unavailable text if the message is not accessible.
-
Fix the search for messages within an accessible range.
-
Fix the usage of color variants in unknown group channel messages.
-
Fix the ensure that the UIKit configuration is always initialized, even in offline mode.
Changelogs
Features
- add chat init params to chatOptions (7742853)
- add createRecordFilePath method to FileServiceInterface (0b7fd40)
- add reaction.onPressUserProfile to SendbirdUIKitContainer props (379bcce)
- add scrollToMessage to group channel contexts (df48e2c)
- add string set for microphone permission (9e9c2e1)
- add string set for muted and frozen when sending a voice message (0c8d1f5)
- add voice message config to uikit container (6f5de2c)
- add yalc for local deployment (7778d67)
- foundation: add audio icon (366d6af)
- foundation: add progress bar component (af6a2fb)
- foundation: add voice message input color set (b94d230)
- foundation: implement voice file message component (f6d90db)
- foundation: update icons (85d7d58)
- implement cli player service (b136de4)
- implement cli recorder service (e05cf93)
- implement recorder and player service for expo (851ec0e)
- implement voice message input (9e6bc75)
- implement voice message logic (337d022)
Bug Fixes
- await onClose for voice message input before displaying permission alert (62ef277)
- CLNP-983: display a message unavailable text if the message is not accessible (e38512a)
- CLNP-983: search for messages from an accessible range (b025f7f)
- foundation: fixed to use color variant in unknown group channel message (1b8576a)
- reset player and recorder if input closed with back button press (e8e43ec)
- UIKIT-4452: uikit configuration should always be initialized (1e539bb)
Improvements
- lift up the flatListRef to the provider and created MessageList context (4a6efdc)
v3.1.2
3.1.2 (2023-10-04)
Release notes
- Add
chatOptions.localCacheEncryption
to SendbirdUIKitContainer props - Filter deactivated users when making mention suggestions
- In the case of a resolved version, an android inverted flatlist warning message is not displayed.
Changelogs
Features
- add localCacheEncryption interface to container prop (3341992)
Bug Fixes
- filter deactivated users when making mention suggestions (ee1e9c2)
v3.1.1
v3.1.0
3.1.0 (2023-08-11)
Release notes
- Added Quote reply feature in group channels (default: turned on)
const App = () => { <SendbirdUIKitContainer appId={APP_ID} uikitOptions={{ groupChannel: { replyType: 'none', // 'none', 'quote_reply' }, }} />; };
- Updated the minimum chat SDK version to v4.9.8.
- Improved video thumbnail fetching and caching logic in the native media service.
- Enhanced stability.
Changelogs
Features
- add video thumbnail component (e702155)
- UIKIT-4240: implement basic quote reply logic (#103) (b4add0e)
Bug Fixes
v3.0.4
v3.0.3
v3.0.2
v3.0.1
3.0.1 (2023-07-04)
Release notes
Update expo modules and support backward compatibility
- Latest version support for
expo-av
module - Latest version support for
expo-clipboard
module - Latest version support for
expo-document-picker
module - Latest version support for
expo-file-system
module - Latest version support for
expo-image-manipulator
module - Latest version support for
expo-image-picker
module - Latest version support for
expo-media-library
module - Latest version support for
expo-notifications
module - Latest version support for
expo-video-thumbnails
module
Changelogs
Bug Fixes
v3.0.0
3.0.0 (2023-06-28)
Release notes
Feature configurations
- The minimum
@sendbird/chat
version has been increased from 4.3.0 to 4.9.2. - You can now configure the features of UIKit through the
uikitOptions
prop ofSendbirdUIKitContainer
.
<SendbirdUIKitContainer
uikitOptions={{
common: {
enableUsingDefaultUserProfile: true,
},
groupChannel: {
enableMention: false,
enableOgtag: true,
enableReaction: true,
enableTypingIndicator: true,
input: {
camera: {
enablePhoto: true,
enableVideo: true,
},
gallery: {
enablePhoto: true,
enableVideo: true,
},
enableDocument: true,
},
},
groupChannelList: {
enableTypingIndicator: true,
enableMessageReceiptStatus: true,
},
groupChannelSettings: {
enableMessageSearch: true,
},
openChannel: {
enableOgtag: true,
input: {
camera: {
enablePhoto: true,
enableVideo: true,
},
gallery: {
enablePhoto: true,
enableVideo: true,
},
enableDocument: true,
},
},
}}
/>
Breaking changes
Project configurations
The minimum React-Native version has been increased from 0.63.3 to 0.65.0.
- Supports stable Metro bundler version.
- Supports stable React-Native APIs (e.g. EventSubscription).
- Minimum iOS version for deployment has been changed to 11. (link)
- An increase in the minimum Gradle version is required for stable operation.
- https://react-native-community.github.io/upgrade-helper/?from=0.63.5&to=0.65.3
Local cache is now a mandatory requirement.
- You must inject localCacheStorage into SendbirdUIKitContainer.
<SendbirdUIKitContainer chatOptions={{ localCacheStorage: AsyncStorage }} />
Code migrations and removal of deprecated items
Feature configurations
-
The feature configuration options that were previously present in the
chatOptions
prop ofSendbirdUIKitContainer
have been moved touikitOptions
prop.chatOptions.enableUserMention
is replaced withuikitOptions.groupChannel.enableMention
chatOptions.enableGroupChannelOGTag
is replaced withuikitOptions.groupChannel.enableOgtag
chatOptions.enableChannelListTypingIndicator
replaced withuikitOptions.groupChannelList.enableTypingIndicator
chatOptions.enableChannelListMessageReceiptStatus
is replaced withuikitOptions.groupChannelList.enableMessageReceiptStatus
chatOptions.enableMessageSearch
is replaced withuikitOptions.groupChannelSettings.enableMessageSearch
chatOptions.enableOpenChannelOGTag
is replaced withuikitOptions.openChannel.enableOgtag
chatOptions.enableUsingDefaultUserProfile
is replaced withuikitOptions.common.enableUsingDefaultUserProfile
Resources
-
StringSet
OPEN_CHANNEL.LIST_BANNER_FROZEN
is replaced withLABELS.CHANNEL_MESSAGE_LIST_FROZEN
GROUP_CHANNEL.LIST_BANNER_FROZEN
is replaced withLABELS.CHANNEL_MESSAGE_LIST_FROZEN
GROUP_CHANNEL.DIALOG_MESSAGE_COPY
is replaced withLABELS.CHANNEL_MESSAGE_COPY
GROUP_CHANNEL.DIALOG_MESSAGE_EDIT
is replaced withLABELS.CHANNEL_MESSAGE_EDIT
GROUP_CHANNEL.DIALOG_MESSAGE_SAVE
is replaced withLABELS.CHANNEL_MESSAGE_SAVE
GROUP_CHANNEL.DIALOG_MESSAGE_DELETE
is replaced withLABELS.CHANNEL_MESSAGE_DELETE
GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_TITLE
is replaced withLABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE
GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_OK
is replaced withLABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK
GROUP_CHANNEL.DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL
is replaced withLABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL
GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_RETRY
is replaced withLABELS.CHANNEL_MESSAGE_FAILED_RETRY
GROUP_CHANNEL.DIALOG_MESSAGE_FAILED_REMOVE
is replaced withLABELS.CHANNEL_MESSAGE_FAILED_REMOVE
GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA(LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA)
is replaced withLABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO
andLABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO
GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY
is replaced withLABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY
GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES
is replaced withLABELS.CHANNEL_INPUT_ATTACHMENT_FILES
GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE
is replaced withLABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE
GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED
is replaced withLABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED
GROUP_CHANNEL.INPUT_PLACEHOLDER_MUTED
is replaced withLABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED
GROUP_CHANNEL.INPUT_EDIT_OK
is replaced withLABELS.CHANNEL_INPUT_EDIT_OK
GROUP_CHANNEL.INPUT_EDIT_CANCEL
is replaced withLABELS.CHANNEL_INPUT_EDIT_CANCEL
GROUP_CHANNEL_MEMBERS.USER_BAR_ME_POSTFIX
is replaced withLABELS.USER_BAR_ME_POSTFIX
GROUP_CHANNEL_MEMBERS.USER_BAR_OPERATOR
is replaced withLABELS.USER_BAR_OPERATOR
-
Theme
Messsage
in colors is replaced withGroupChannelMessage
(colors.ui.message
->colors.ui.groupChannelMessage
)
Components
-
GroupChannelFragment
(GroupChannelProps
),- In order to specify the local cache as mandatory, the
queryCreator
prop has been removed.
- In order to specify the local cache as mandatory, the
-
ChannelMessageList
(GroupChannelProps
,OpenChannelProps
)onPressImageMessage
prop is replaced withonPressMediaMessage
onLeaveScrollBottom
prop is replaced withonScrolledAwayFromBottom
onPressAvatar
prop is replaced withonShowUserProfile
-
ChannelInput
(GroupChannelProps
,OpenChannelProps
)onSendFileMessage
prop is replaced withonPressSendUserMessage
onSendUserMessage
prop is replaced withonPressSendUserMessage
onUpdateFileMessage
prop is replaced withonPressUpdateUserMessage
onUpdateUserMessage
prop is replaced withonPressUpdateFileMessage
-
GroupChannelListFragment
(GroupChannelListProps
)- In order to specify the local cache as mandatory, the
queryCreator
prop has been removed. renderGroupChannelPreview
has been changed from(channel: SendbirdGroupChannel, onLongPressChannel: () => void) => React.ReactElement | null
to(props: { channel: SendbirdGroupChannel; onPress: () => void; onLongPress: () => void; }) => React.ReactElement | null
.
- In order to specify the local cache as mandatory, the
-
MessageRenderer
component is replaced withGroupChannelMessageRenderer
Hooks
useGroupChannelMessages
,useOpenChannelMessages
nextMessages
andnewMessagesFromMembers
properties are replaced withnewMessages
Changelogs
⚠ BREAKING CHANGES
- update signature of channel preview prop in group channel list and open channel list
- removed queryCreator from the group channel and group channel list
- update minimum chat sdk version
- bumped peer dependency version of chat sdk
- react-native minimum version changed to 0.65.0 from 0.63.3
- made
chatOptions.localCacheStorage
ofSendbirdUIKitContainer
required - deprecated item removal in foundation package
- deprecated item removal in ChannelInput
- deprecated MessageRenderer removal (replaced to GroupChannelMessageRenderer)
- deprecated item removal in ChannelMessageList
- deprecated item removal in uikit-chat-hooks package
- deprecated item removal in StringSet
Features
- added AttachmentsButton to ChannelInput component (687f3a0)
- bumped peer dependency version of chat sdk (a57aff0)
- deprecated item removal in ChannelInput (6a326ca)
- deprecated item removal in ChannelMessageList (3a68a33)
- deprecated item removal in foundation package (96f9717)
- deprecated item removal in StringSet (956236b)
- deprecated item removal in uikit-chat-hooks package (48fabfe)
- deprecated MessageRenderer removal (replaced to GroupChannelMessageRenderer) (488e0b6)
- hide ui elements when the channel is ephemeral (eacc2da)
- made
chatOptions.localCacheStorage
ofSendbirdUIKitContainer
required (2f07d0d) - react-native minimum version changed to 0.65.0 from 0.63.3 (39a9852)
- support options for default user profile(default: false) (6671a61)
- support options for ogtag in channel (d80b8a0...