Changelog: Twilio Chat JavaScript SDK
Danger
Programmable Chat has been deprecated and is no longer supported. Instead, we'll be focusing on the next generation of chat: Twilio Conversations. Find out more about the EOL process here.
If you're starting a new project, please visit the Conversations Docs to begin. If you've already built on Programmable Chat, please visit our Migration Guide to learn about how to switch.
We recommend using the following references in your projects. As we make patch releases, these links will automatically include those fixes with full backwards compatibility.
-
js — Non-minified Chat SDK bundled for browsers, hosted on Twilio CDN.
-
min — Minified Chat SDK bundled for browsers, hosted on Twilio CDN.
-
Documentation — Hosted on Twilio CDN.
-
npm install --save twilio-chat
Twilio Programmable Chat SDKs use Semantic Versioning. Twilio supports version N-1 for 12 months after the first GA release of version N. We recommend that you upgrade to the latest version as soon as possible to avoid any breaking changes. Version 5.x is the latest generation of the Javascript client SDK.
Support for 4.x will cease on May 17, 2022. Please upgrade to the latest version.
Support for 3.x ceased on July 17, 2021.
End-of-Life for 2.x occurred on May 18, 2020.
End-of-Life for 1.x occurred on June 30, 2019.
Links are provided to specific patch versions here. We don't recommend using these links unless you have a specific need for a certain patch of a release.
- Bump Node required version to current LTS (14).
- Default exports are removed in favor of named exports.
- Should now work with React Native and Angular.
- Added
.onWithReplay()
function to Conversation entities which could be used to subscribe to an event with replay. Upon subscribing, the most recent event (if any) will be re-emitted.
- Fix compilation of TS with type exports, broken since 5.0.1.
- Fixed polyfills for IE11.
- As part of the above fix, the package build process was also upgraded from
gulp
torollup
. Unfortunately, this caused change in the type exports. While not affecting the deployments in the wild, it made TS compilation impossible. The fix for it is deployed in 5.0.2 so please do not use this version explicitly.
- Major internals improvement (the "Sessionless" protocol). This improvement is designed primarily for improved reliability. While this is not a breaking code change, it does carry a meaningful impact on timing:
- SDK commands will return success or failure up to ~10% more quickly than before.
- Real-time updates of data is now likely to arrive after the command completes. For example,
Channel.updateAttributes()
will resolve successfully whileChannel#attributes
still contains the old value. To see the new value, we recommend waiting for an#updated
event.
- Passing
null
toChannel.sendMessage
will result with the message body being an empty string. User.updateFriendlyName
no longer accepts null as the value.Channel.updateFriendlyName
no longer accepts null as the value.
- Bugfixes.
- Dependency bumps.
- Various documentation improvements.
Message.timestamp
renamed toMessage.dateCreated
.Channel.lastMessage.timestamp
also renamed toChannel.lastMessage.dateCreated
.- Update reason
timestamp
forMessage
objects got also renamed todateCreated
. - Channel status
"known"
renamed to"notParticipating"
. Media.getContentUrl
renamed toMedia.getContentTemporaryUrl
.- Various
attributes
arguments now accept all valid JSON values (numbers, strings, objects, arrays, Booleans, nulls).
- Added read-only
state
property to the Channel class which reflects the Conversations state.
- Connection errors are now reported with more details about what actually happened.
- Typing timeout indicator now gets correctly set to reflect the setting for the instance on the console
- Logger name is now set to "twilio-chat"
- Extended media message sending documentation
- Fixed media messages send from node.js
- Extended documentation.
- Updated to latest twilio-sync with fixes in objects caching
- Fixed
Client.setPushRegistrationId
/Client.unsetPushRegistrationId
to resolve only after successful operation. - Fixed emitting
Client#channelRemoved
event correctly for private channels. - Improved documentation: added
Channel#removed
event. - Removed
isomorphic-form-data
from dependencies. - Fixed issues appearing in restrictive browser environments, enabling SDK operation without session storage.
- Updated twilio-sync.js dependency with security fixes
- Fixed a bug when removing a Member from Channel
- Added
Channel.getMemberBySid
method to get Member by provided Sid - Added
Channel.getMemberByIdentity
method to get Member by provided Identity - Property
Channel.createdBy
can be null - Added
Message.member_sid
property - Property
Message.author
can be null - Added
Message.getMember
method to get authoring Member of Message bymember_sid
(if available) and if not found then byauthor
(identity)
- Introduced
Client#event:connectionError
event. - Fixed a bug, where recovery after a partial network degradations the websocket did not reconnect.
- Consumed new version of Sync JS SDK version 0.10.3
- Link to the token generation material got updated
- Fixed a bug where sending messages while offline caused duplicate messages at network reconnect
- Improved error handling in operations with
User
,Member
,Channel
,Message
In this release we are introducing Member Attributes and the ability to change them.
- Added
dateCreated
,dateUpdated
,type
, andattributes
properties toMember
class - Added
Member.updateAttributes
method to set a Member's Attributes (requires new permissions to be added to the according role:editOwnMemberAttributes
oreditAnyMemberAttributes
)
- Fixed a connectivity bug that caused unhandled promise rejections
In this release we are introducing a User Notification Level to each Channel. The assigned level determines whether the currently logged-in User will receive pushes for that Channel. The assigned level be any of muted
or default
, where default
defers to global Chat Service push configuration.
- Added
Channel.setUserNotificationLevel
method to set User's Notification level - Added
notificationLevel
property toChannel
class
- Fixed a connectivity bug that caused reconnection recovery to fail, including when going into the background on iOS (react native).
- Improved startup and synchronization time in some cases
- Resolved potential issue in Channel synchronization on startup
- Fixed bug preventing building React Native apps in Release configuration
- Improve diagnostics, start adding timestamps to log lines
@types\loglevel
package is not required anymore in TypeScript projects usingtwilio-chat
In this release we have revised all updated events. Each revised event now receives an object which contains:
- updated object itself, i.e.
channel
,member
,message
,user
- array of reasons the event is being triggered, i.e. object is updated because of update in
attributes
,friendlyName
,body
, etc.
Additionally, the Channel.LastMessage
structure is updated to contain only last message's creation timestamp
and index
(effectively removing author
and sid
)
- updated events now include reasons for the update. Changed events are:
Client#event:channelUpdated
Channel#event:updated
Client#event:memberUpdated
Channel#event:memberUpdated
Member#event:updated
Client#event:messageUpdated
Channel#event:messageUpdated
Message#event:updated
Client#event:userUpdated
User#event:updated
- Changing
channel.sendMessage()
promise resolve type toPromise<number>
- Default
logLevel
is now set tosilent
, log lines now includes timestamp - Removed
sid
andauthor
properties fromChannel.LastMessage
type
- Adjust docs for
Client.shutdown()
, introducing new types for various methods - Adding new events on client:
tokenAboutToExpire
,tokenExpired
(essentially removing need forAccessManager
use) - Added
index
property toChannel.LastMessage
type
For older changelog entries including 2.x, click Changelog