## 1.0.0
*April 1, 2026*
| Type | Changes |
|------|----------|
| **Added** | • BREAKING CHANGES: `Channel.join()` signature changed from `join(callback, params)` returning `JoinResult` to `join(params)` returning `Membership`. It no longer subscribes to messages or sets `lastReadMessageTimetoken`.<br/>• Added `Chat.destroy()` method for explicit cleanup of Chat SDK resources.<br/>• Added `onMessageReceived()`, `onTypingChanged()`, `onUpdated()`, `onDeleted()` callbacks on `Channel`. Deprecates `connect()` and `getTyping()`.<br/>• Added `onThreadMessageReceived()` and `onThreadChannelUpdated()` callbacks on `ThreadChannel` returning typed `ThreadMessage` and `ThreadChannel`.<br/>• Added `onUpdated()` and `onDeleted()` entity-first streaming callbacks on `Membership`, deprecating `streamUpdates()`.<br/>• Added `onUpdated()`, `onDeleted()`, `onMentioned()`, `onInvited()`, `onRestrictionChanged()` callbacks on `User`. Deprecates `streamUpdates()`.<br/>• Added `onUpdated()` on `Message` and `onThreadMessageUpdated()` on `ThreadMessage`. Deprecates `streamUpdates()`.<br/>• Added `onMessageReceived()` callback on `ChannelGroup` entity.<br/>• Added `Channel.emitCustomEvent()` and `Channel.onCustomEvent()` for custom event publishing and listening with optional message type filtering.<br/>• Added `Channel.getInvitees()` to return channel members with pending (invited) status.<br/>• Added `Channel.hasMember()` and `Channel.getMember()` convenience methods for checking and retrieving a user's membership on a channel.<br/>• Added `User.isMemberOf()` and `User.getMembership()` convenience methods for checking and retrieving the user's membership on a specific channel.<br/>• Added `Membership.delete()` for deleting a membership relationship.<br/>• `Membership.update()` now accepts optional `status` and `type` alongside `custom`.<br/>• Added `Message.createThread(text, SendTextParams)` returning `CreateThreadResult` with thread channel and updated parent message. Deprecates `createThreadWithResult()`.<br/>• `ThreadChannel` returns typed `ThreadMessage` from `getHistory()`, `getMessage()`, `getPinnedMessage()`. `ThreadMessage` returns typed results from `editText()`, `toggleReaction()`, `restore()`. |
| **Modified** | • BREAKING CHANGES: `Chat.deleteUser()` and `Chat.deleteChannel()` no longer accept `DeleteParameters` with `soft` flag. They permanently delete and return `Promise<true>`.<br/>• BREAKING CHANGES: `Channel.delete()` and `User.delete()` no longer support soft delete parameter. They permanently delete and return `Promise<true>`.<br/>• BREAKING CHANGES: `Message.reactions` changed from `{ [key: string]: Action[] }` to `MessageReaction[]` with `value`, `isMine`, `userIds`, and `count` properties.<br/>• BREAKING CHANGES: `Message.removeThread()` no longer returns action result and channel data. It now resolves when the thread is removed.<br/>• BREAKING CHANGES: `Channel.sendText()` options changed from `SendTextOptionParams` to `SendTextParams`. Use `sendTextLegacy()` for the old rich-send behavior.<br/>• `createMessageDraft()` is now V2 by default. `createMessageDraftV1()` provides backward compat. `createMessageDraftV2()` is deprecated.<br/>• `GetCurrentUserMentionsResult` adds `mentions` array using `UserMention` type. Old `enhancedMentionsData` field is deprecated.<br/>• `Chat.emitEvent()` and `Chat.listenForEvents()` marked `@deprecated`. Use entity-level methods instead: `channel.emitCustomEvent()`, `user.onMentioned()`, etc. |
## 0.14.2
*January 16, 2026*
| Type | Changes |
|------|----------|
| **Added** | • Add the createThreadWithResult method that returns the ThreadChannel and an updated parent Message with hasThread property set to true.<br/>• Add limit and offset parameters to whoIsPresent method on Chat, Channel, and ChannelGroup. |
| **Fixed** | • Fix slow performance when creating a direct conversation with retryConfiguration enabled. |
## 0.14.1
*October 8, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • [JS] Fixed function streamUpdates on Message entity. |
## 0.14.0
*July 31, 2025*
| Type | Changes |
|------|----------|
| **Added** | • AddConnectionStatusListener, reconnectSubscriptions, disconnectSubscriptions. |
## 0.13.0
*July 21, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add suport for channel groups. |
## 0.12.1
*June 4, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Adds an internal function workaround to get messages from an auto moderation report, which doesn't contain a message timetoken. |
## 0.12.0
*May 9, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add possibility to invite users to public channels.<br/>• Add new Chat method returning unread message counts with pagination tokens. |
## 0.11.7
*March 12, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Add missing `version` and `auth_method` fields in APNS payload. |
## 0.11.6
*February 24, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed bug rel. to setRestriction. When 'Enforce referential integrity for memberships' is enabled then when setting restriction(channelMembers) we need to make sure that both channel and user exist in AppContext. |
## 0.11.5
*February 6, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed method sendEvent for event types different from custom . |
## 0.11.4
*February 4, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Added missing streamMessageReports method in JS. |
## 0.11.3
*January 30, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • When using the CustomPayloads configuration option in JS, allow the user to specify custom keys and preserve them when receiving messages. |
## 0.11.2
*January 30, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed input type in createConversation methods. |
## 0.11.1
*January 22, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Add missing userId field in getUsersRestrictions result. |
## 0.11.0
*January 16, 2025*
| Type | Changes |
|------|----------|
| **Modified** | • The JS Chat SDK now uses TS types from recent versions of PubNub JS SDK instead of the ones in the `@types/pubnub` community resource. Changes to customer code might be required to accommodate this change. |
## 0.10.0
*January 8, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Added status and type to Membership. |
## 0.9.6
*January 2, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Channel type was erased (set to `null`) on edits to other Channel fields.<br/>• Custom events sending/receiving in JS. |
## 0.9.5
*December 20, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Make setRestrictions work with Enforce referential integrity for memberships enabled on keyset. |
## 0.9.4
*December 19, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Crash when using `sort` parameter in various methods.<br/>• GetChannels incorrectly returning an object with `users` property instead of `channels`. |
## 0.9.2
*December 12, 2024*
| Type | Changes |
|------|----------|
| **Added** | • MessageDraftV2 format to match other platforms Chat SDKs.<br/>• Lock moderated messages from editing. |
| **Fixed** | • Wrong user suggestion source for message draft created on ThreadChannel.<br/>• Wrong type of last user activity time stored on server (precision).<br/>• Remove usage of `crypto` global (which required a polyfill). |
| **Modified** | • Moderation events are now sent to a channel prefixed with PUBNUB_INTERNAL_MODERATION. |
## 0.9.1
*December 7, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix ES module named imports. |
## 0.9.0-dev
*December 6, 2024*
| Type | Changes |
|------|----------|
| **Modified** | • Internal code changes. |
## v0.8.4
*November 26, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Lock messages from being edited.<br/>• Remove reactions list if everyone removed them. |
## v0.8.3
*November 15, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add statusField for channel members. |
## v0.8.2
*August 27, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Customize message reactions. |
## v0.8.1
*August 1, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Bump JS SDK version to 8.2.7. |
## v0.8.0
*July 31, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Message report events are now sent to a moderation sub-channel. Methods for user reporting and message reporting to a global admin channel are now deprecated and renamed with a DEPRECATED_ prefix. |
## v0.7.3
*June 18, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Take membership related events while updating users into account . |
## v0.7.2
*June 10, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Respect eTag and updated fields in the Membership object. |
## v0.7.1
*June 5, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Extend filter property for getMemberships. |
## v0.7.0
*May 22, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Update JS SDK to 8.2.0.<br/>• Remove look behind regexes for old Safari compatibility. |
## v0.6.2
*May 22, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • APNS environment was not set in push payloads. |
## v0.6.1
*May 21, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Fix whose memberships are returned when using user.getMemberships(). |
## v0.6.0
*March 11, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Check PAM permissions before sending signals.<br/>• Allow custom payloads while sending and receiving messages. |
## v0.5.2
*January 16, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Make ThreadMessage.streamUpdatesOn return ThreadMessage[] instead of Message[]. |
## v0.5.1
*December 18, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add missing reason parameter to user restrictions. |
## v0.5.0
*December 14, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add restore method to the Message entity.<br/>• Add reason for user restrictions.<br/>• Muted | banned | lifted). |
## v0.4.0
*December 6, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add CryptoModule support. |
## v0.3.1
*November 8, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Updated pubnub dependency to 7.4.3. |
| **Fixed** | • Typo in moderation setRestrictions method names. |
## v0.3.0
*November 7, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Updated pubnub dependency to 7.4.2.<br/>• New type of software license.<br/>• New `invite` custom event emitted when users are added to channels.<br/>• Auto generation of channel IDs in every type of channel creation method, that can be bypassed.<br/>• Fully optional parameters for `getUsers` and `getChannels` methods.<br/>• Improved parameter lists for custom event related methods.<br/>• Ability to forward message to the original channel. |
| **Fixed** | • Behavior of spaces around mentions in Message Drafts. |
## v0.2.0
*October 23, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add moderation restriction methods.<br/>• Change the way unread message count is calculated. |
| **Fixed** | • Removing threads. |
## v0.1.0
*September 26, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Initial release. |
| Added | - BREAKING CHANGES:
Channel.join() signature changed from join(callback, params) returning JoinResult to join(params) returning Membership. It no longer subscribes to messages or sets lastReadMessageTimetoken. - Added
Chat.destroy() method for explicit cleanup of Chat SDK resources. - Added
onMessageReceived(), onTypingChanged(), onUpdated(), onDeleted() callbacks on Channel. Deprecates connect() and getTyping(). - Added
onThreadMessageReceived() and onThreadChannelUpdated() callbacks on ThreadChannel returning typed ThreadMessage and ThreadChannel. - Added
onUpdated() and onDeleted() entity-first streaming callbacks on Membership, deprecating streamUpdates(). - Added
onUpdated(), onDeleted(), onMentioned(), onInvited(), onRestrictionChanged() callbacks on User. Deprecates streamUpdates(). - Added
onUpdated() on Message and onThreadMessageUpdated() on ThreadMessage. Deprecates streamUpdates(). - Added
onMessageReceived() callback on ChannelGroup entity. - Added
Channel.emitCustomEvent() and Channel.onCustomEvent() for custom event publishing and listening with optional message type filtering. - Added
Channel.getInvitees() to return channel members with pending (invited) status. - Added
Channel.hasMember() and Channel.getMember() convenience methods for checking and retrieving a user's membership on a channel. - Added
User.isMemberOf() and User.getMembership() convenience methods for checking and retrieving the user's membership on a specific channel. - Added
Membership.delete() for deleting a membership relationship. Membership.update() now accepts optional status and type alongside custom.- Added
Message.createThread(text, SendTextParams) returning CreateThreadResult with thread channel and updated parent message. Deprecates createThreadWithResult(). ThreadChannel returns typed ThreadMessage from getHistory(), getMessage(), getPinnedMessage(). ThreadMessage returns typed results from editText(), toggleReaction(), restore().
|
| Modified | - BREAKING CHANGES:
Chat.deleteUser() and Chat.deleteChannel() no longer accept DeleteParameters with soft flag. They permanently delete and return Promise<true>. - BREAKING CHANGES:
Channel.delete() and User.delete() no longer support soft delete parameter. They permanently delete and return Promise<true>. - BREAKING CHANGES:
Message.reactions changed from { [key: string]: Action[] } to MessageReaction[] with value, isMine, userIds, and count properties. - BREAKING CHANGES:
Message.removeThread() no longer returns action result and channel data. It now resolves when the thread is removed. - BREAKING CHANGES:
Channel.sendText() options changed from SendTextOptionParams to SendTextParams. Use sendTextLegacy() for the old rich-send behavior. createMessageDraft() is now V2 by default. createMessageDraftV1() provides backward compat. createMessageDraftV2() is deprecated.GetCurrentUserMentionsResult adds mentions array using UserMention type. Old enhancedMentionsData field is deprecated.Chat.emitEvent() and Chat.listenForEvents() marked @deprecated. Use entity-level methods instead: channel.emitCustomEvent(), user.onMentioned(), etc.
|
| Added | - Add the createThreadWithResult method that returns the ThreadChannel and an updated parent Message with hasThread property set to true.
- Add limit and offset parameters to whoIsPresent method on Chat, Channel, and ChannelGroup.
|
| Fixed | - Fix slow performance when creating a direct conversation with retryConfiguration enabled.
|
| Fixed | - [JS] Fixed function streamUpdates on Message entity.
|
| Added | - AddConnectionStatusListener, reconnectSubscriptions, disconnectSubscriptions.
|
| Added | - Add suport for channel groups.
|
| Fixed | - Adds an internal function workaround to get messages from an auto moderation report, which doesn't contain a message timetoken.
|
| Added | - Add possibility to invite users to public channels.
- Add new Chat method returning unread message counts with pagination tokens.
|
| Fixed | - Add missing
version and auth_method fields in APNS payload.
|
| Fixed | - Fixed bug rel. to setRestriction. When 'Enforce referential integrity for memberships' is enabled then when setting restriction(channelMembers) we need to make sure that both channel and user exist in AppContext.
|
| Fixed | - Fixed method sendEvent for event types different from custom .
|
| Fixed | - Added missing streamMessageReports method in JS.
|
| Fixed | - When using the CustomPayloads configuration option in JS, allow the user to specify custom keys and preserve them when receiving messages.
|
| Fixed | - Fixed input type in createConversation methods.
|
| Fixed | - Add missing userId field in getUsersRestrictions result.
|
| Modified | - The JS Chat SDK now uses TS types from recent versions of PubNub JS SDK instead of the ones in the
@types/pubnub community resource. Changes to customer code might be required to accommodate this change.
|
| Added | - Added status and type to Membership.
|
| Fixed | - Channel type was erased (set to
null) on edits to other Channel fields. - Custom events sending/receiving in JS.
|
| Fixed | - Make setRestrictions work with Enforce referential integrity for memberships enabled on keyset.
|
| Fixed | - Crash when using
sort parameter in various methods. - GetChannels incorrectly returning an object with
users property instead of channels.
|
| Added | - MessageDraftV2 format to match other platforms Chat SDKs.
- Lock moderated messages from editing.
|
| Fixed | - Wrong user suggestion source for message draft created on ThreadChannel.
- Wrong type of last user activity time stored on server (precision).
- Remove usage of
crypto global (which required a polyfill).
|
| Modified | - Moderation events are now sent to a channel prefixed with PUBNUB_INTERNAL_MODERATION.
|
| Fixed | - Fix ES module named imports.
|
| Added | - Lock messages from being edited.
- Remove reactions list if everyone removed them.
|
| Added | - Add statusField for channel members.
|
| Added | - Customize message reactions.
|
| Added | - Bump JS SDK version to 8.2.7.
|
| Added | - Message report events are now sent to a moderation sub-channel. Methods for user reporting and message reporting to a global admin channel are now deprecated and renamed with a DEPRECATED_ prefix.
|
| Added | - Take membership related events while updating users into account .
|
| Added | - Respect eTag and updated fields in the Membership object.
|
| Added | - Extend filter property for getMemberships.
|
| Added | - Update JS SDK to 8.2.0.
- Remove look behind regexes for old Safari compatibility.
|
| Fixed | - APNS environment was not set in push payloads.
|
| Added | - Fix whose memberships are returned when using user.getMemberships().
|
| Added | - Check PAM permissions before sending signals.
- Allow custom payloads while sending and receiving messages.
|
| Added | - Make ThreadMessage.streamUpdatesOn return ThreadMessage[] instead of Message[].
|
| Added | - Add missing reason parameter to user restrictions.
|
| Added | - Add restore method to the Message entity.
- Add reason for user restrictions.
- Muted | banned | lifted).
|
| Added | - Add CryptoModule support.
|
| Added | - Updated pubnub dependency to 7.4.3.
|
| Fixed | - Typo in moderation setRestrictions method names.
|
| Added | - Updated pubnub dependency to 7.4.2.
- New type of software license.
- New
invite custom event emitted when users are added to channels. - Auto generation of channel IDs in every type of channel creation method, that can be bypassed.
- Fully optional parameters for
getUsers and getChannels methods. - Improved parameter lists for custom event related methods.
- Ability to forward message to the original channel.
|
| Fixed | - Behavior of spaces around mentions in Message Drafts.
|
| Added | - Add moderation restriction methods.
- Change the way unread message count is calculated.
|
| Fixed | |