The format is based on Keep a Changelog.
- It's safe now to use
ChatChannel
andChatMessage
across multiple threads #984 - Web socket reconnection logic better handles the "no internet" errors #970
April 09, 2021
- Channels are properly marked as read when
ChatChannelVC
is displayed #972
- Fix
ChannelController
s created withcreateChannelWithId
andcreateChannelWithMembers
functions not reporting their initial values #945 - Fix issue where channel
lastMessageDate
was not updated when new message arrived #949 - Fix channel unread count not being updated in the real time #969
- Fix updated values not reported for some controllers if the properties were accessed for the first time after
synchronize
has finished. Affected controllers wereChatUserListController
,ChatChannelListController
,ChatUserSearchController
#974
Logger.assertationFailure
was renamed toLogger.assertionFailure
#935
March 29, 2021
- Fix
ChannelDoesNotExist
error is logged byUserWatchingEventMiddleware
when channels are fetched for the first time #893 - Improve model loading performance by lazy loading expensive properties #906
- Fix possible loops when accessing controllers' data from within delegate callbacks #915
- Fix
channel.updated
events failing to parse due to missinguser
field #922 This was due to backend not sendinguser
field when the update was done by server-side auth.
- Introduce support for multitenancy -
teams
forUser
andteam
forChannel
are now exposed. #905 - Introduce support for pinned messages #896
- Expose
pinnedMessages
onChatChannel
which contains the last 10 pinned messages #896 - Expose
pinDetails
onChatMessage
which contains the pinning information, like the expiration date #896 - Add support for pinning and unpinning messages through
pin()
andunpin()
methods inMessageController
#896 - Add new optional
pinning: Pinning
parameter when creating a new message inChannelController
to create a new message and pin it instantly #896 - Add
lastActiveMembers
andlastActiveWatchers
toChatChannel
. The max number of entities these fields expose is configurable viaChatClientConfig.localCaching.chatChannel
#911
ChatChannel.latestMessages
now by default contains max 5 messages. You can change this setting inChatClientConfig.localCaching.chatChannel.latestMessagesLimit
#923
ChatChannel
's propertiescachedMembers
andwatchers
were deprecated. UselastActiveMembers
andlastActiveWatchers
instead #911
March 12, 2021
- Fix app getting terminated in background during an unfinished background task #877
- Introduce
MemberEventMiddleware
to observe member events and update database accordingly #880 - Expose
membership
value onChatChannel
which contains information about the current user membership #885 ChatChannelMember
now contains channel-specific ban information:isBannedFromChannel
andbanExpiresAt
#885- Channel-specific ban events are handled and the models are properly updated #885
March 09, 2021
- Add support for slow mode. See more info in the documentation #859
- Add support for channel watching events. See more info in the documentation #864
- Add support for channel truncating #864
ChatChannelNamer
is now closure instead of class so it allows better customization of channel naming inChatChannelListItemView
.
- Fix encoding of channels with custom type #872
- Fix
CurreUserController.currentUser
returning nil beforesynchronize()
is called #875
February 26, 2021
- Fix localized strings not being loaded correctly when the SDK is integrated using CocoaPods #845
- Fix message list crash when rotating screen #847
February 22, 2021
- Fix user devices not being removed locally when removed on the backend #882
- Fix issue with bad parsing of malformed attachment data causing channelList not showing channels #834
February 12, 2021
- Add support for custom attachment types with unknown structure #795
- Add possibility to send attachments that don't need prior uploading #799
- Improve serialization performance by exposing items as
LazyCachedMapCollection
instead ofArray
#776 - Reduce amount of fake updates by erasing touched objects #802
- Trigger members and current user updates on UserDTO changes #802
- Extracts the connection handling responsibility of
CurrentUserController
to a newChatConnectionController
. #804 - Allow delete/edit message for all users #809 By default, only admin/moderators can edit/delete other's messages, but this configurable on backend and it's not known by the client, so we allow all actions and invalid actions will cause backend to return error.
- Simplify attachment send API by combining
attachment
andattachmentSeeds
parameters. #815
- Fix race conditions in database observers #796
- Revert changeHash that became obsolete after #802 #813
February 2nd, 2021
- Add support for
enforce_unique
parameter on sending reactions #770
- Fix development token not working properly #760
- Fix lists ordering not updating instantly. #768
- Fix update changes incorrectly reported when a move change is present for the same index. #768
- Fix issue with decoding
member_count
forChannelDetailPayload
#782 - Fix wrong extra data cheat sheet documentation link #786
January 22nd, 2021
- Offline support: Browse channels and send messages while offline.
- First-class support for
SwiftUI
andCombine
: Built-it wrappers make using the SDK with the latest Apple frameworks a seamless experience. - Uses
UIKit
patterns and paradigms: The API follows the design of native system SDKs. It makes integration with your existing code easy and familiar. - Currently, 3.0 version is available only using CocoaPods. We will add support for SPM soon.
To use the new version of the framework, add to your Podfile
:
pod 'StreamChat', '~> 3.0'
In order to provide new features like offline support and SwiftUI
wrappers, we had to make notable breaking changes to the public API of the SDKs.
Please don't upgrade to version 3.0
before you get familiar with the changes and their impact on your codebase.
To prevent CocoaPods from updating StreamChat
to version 3, you can explicitly pin the SDKs to versions 2.x
in your podfile
:
pod 'StreamChat', '~> 2.0'
pod 'StreamChatCore', '~> 2.0' # if needed
pod 'StreamChatClient', '~> 2.0' # if needed
The framework naming and overall structure were changed. Since version 3.0, Stream Chat iOS SDK consists of:
Contains low-level logic and is meant to be used by users who want to build a fully custom UI. It covers functionality previously provided by StreamChatCore
and StreamChatClient
.
Contains a complete set of ready-to-use configurable UI elements that you can customize a use for building your own chat UI. It covers functionality previously provided by StreamChat
.
The best way to explore the SDKs and their usage is our sample app. It contains an example implementation of a simple IRC-style chat app using the following patterns:
UIKit
using delegatesUIKit
using reactive patterns and SDK's built-inCombine
wrappers.SwiftUI
using the SDK's built-inObservableObject
wrappers.- Learn more about the sample app at its own README.
- Cheat Sheet Real-world code examples showcasing the usage of the SDK.
- Controller Overview This page contains a list of all available controllers within StreamChat, including their short description and typical use-cases.
- Glossary A list of names and terms used in the framework and documentation.