TalkJS Changelog logo
Back to Homepage

Changelog

Subscribe to Updates

Labels

  • All Posts
  • Bug fix
  • Announcement
  • Improvement
  • Chat UI
  • JavaScript SDK
  • REST API
  • Dashboard
  • Deprecated
  • New
  • React Native SDK
  • Flutter SDK
  • Security
  • React

Jump to Month

  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • January 2023
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • March 2022
  • February 2022
  • December 2021
  • November 2021
  • October 2021
  • August 2021
  • July 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
Changelog byAnnounceKit

Create yours, for free!

Bug fixImprovementChat UIJavaScript SDKDeprecatedReact Native SDK
3 weeks ago

Chat UI components preview, real-time messaging data, and more

Highlights

Chat UI components ✨ preview  ✨

TalkJS chat UI components (‘Components v2’) are now in preview and safe to use in production. 

Chat UI components give you ultimate flexibility to control the appearance and behavior of your chat. You can use the components with a ready-to-go pre-built theme, or customize your theme to get the exact look and feel you want.

Currently components are available for a chatbox UI with a range of basic features, which is continuously expanding. 

To work with chat UI components, you’ll need to combine the following two packages:

  • @talkjs/components — a library that provides both React components and web components that you can use with any frontend framework, such as Angular, Vue, or Svelte.
  • @talkjs/theme-default — a package with the default theme for @talkjs/components which lets you display a chat with any frontend framework. The default theme is fully open source, and you can fork and customize it to fit your own brand. See the default theme Github repository.

Use one of the dedicated getting started guides for chat UI components:

  • JavaScript getting started guide →
  • React getting started guide →
  • Next.js getting started guide →
  • Angular getting started guide →
  • Vue getting started guide →
  • Svelte getting started guide →

Note: Chat UI components are currently in preview. They're safe to use in production, but still offer limited features. Updates are added on a rolling basis and are always fully backward-compatible.

Real-time messaging data

You can now read, update, and subscribe to all your chat messaging data—no chat UI needed. This means that you can bring your own fully custom-built chat UI, and let TalkJS take care of the rest.

To work with real-time chat data, you have the following two options:

  • Realtime API, part of the JavaScript SDK
  • @talkjs/core, a standalone package now available on NPM

Want to get started directly? Here are some guides: 

  • 1:1 chat getting started guide →
  • Group chat getting started guide →

In a hurry? Copy a full working code example.

Overview of other changes

Added

  • JavaScript SDK (0.35.0): Added ConversationRef.subscribe to be able to subscribe to a conversation with the Realtime API. 
  • React Native SDK (0.13.0): The keyboardVerticalOffset prop is now also used in Android. This is part of the fix to ensure proper keyboard behaviour on apps targeting Android 15 and above. The default value on Android is 55 + StatusBar.currentHeight.

Changed

  • React Native SDK (0.13.0): Updated dependencies.

Deprecated

  • JavaScript SDK (0.35.0): Removed ConversationSnapshot.lastMessageAt. Use ConversationSnapshot.lastMessage.createdAt instead.

Fixed

  • React Native SDK (0.13.0): Fixed keyboard issues on Android 15 that arose due to Android's enforcement of edge-to-edge.
  • React Native SDK (0.13.0): Fixed internal event subscriptions not being cleaned up properly on re-renders.




Resources

Case study: FrostyWave is empowering young women with TalkJS messaging

Find out how FrostyWave is empowering young women to grow into their best selves with the TalkJS chat API.

Read FrostyWave's story.

Trying out TalkJS demos? Make it collaborative!

You can now use a one-click invite to try out TalkJS demos with colleagues in a shared conversation. Check out the latest demos:

  • Job board →
  • Virtual events →
  • Team collaboration →
  • Marketplace →




👋 Thoughts? Questions? Get in touch.

✨ Follow TalkJS on LinkedIn, Bluesky or 𝕏 to stay up to date.

👩🏾‍💻 Come join TalkJS! Check out the jobs page.

Bug fixChat UIJavaScript SDKREST APINewReact Native SDK
a month ago

Manage chat UI themes with the REST API, and more

Highlight

Manage themes with the REST API

You can now manage your chat UI themes using the TalkJS REST API. This includes the options to create, update, delete or export a theme. You can directly edit themes for your test environment. Once you’re happy with the updates, copy the changes to your live environment, and you’re all set.

Managing your themes through the REST API makes it easier to work with themes across multiple projects, or keep themes in your code base and update them when deploying.

Overview of other changes

Added

  • Added an endpoint to the REST API that allows you to get a user's notification reply-to email address for a conversation. Any emails sent to that email address appear in the conversation as being sent by the user.
  • JavaScript SDK (0.34.0): Added SendMessageParams that can be passed to ConversationRef.send to send a message by specifying its content directly. This allows you to send text messages with manually-specified formatting, in addition to file attachments and locations.
  • JavaScript SDK (0.34.0): Added EditMessageParams that can be passed to MessageRef.edit to edit a message by specifying its content directly. This allows you to edit text messages with manually-specified formatting, in addition to file attachments and locations.
  • JavaScript SDK (0.34.0): Added Session.uploadFile and file-subtype-specific variants. This returns a FileToken that you can use in SendMessageParams or EditMessageParams.
  • React Native SDK (0.12.0): Added the customEmojis prop to Chatbox and ConversationList. This prop adds a set of custom emoji images to the emoji picker, the emoji autocompleter, and emoji reactions. It allows users to send and receive custom emojis.
  • React Native SDK (0.12.0): Added keyboardVerticalOffset prop to Chatbox. This prop is basically identical to the one passed to KeyboardAvoidingView. The default value is 90. Note that the keyboardVerticalOffset prop is only used in iOS to fix an iOS bug. On Android, the KeyboardAvoidingView component isn’t available.

Changed

  • React Native SDK (0.12.1): Changed the default value for the keyboardVerticalOffset to 95.

Fixed

  • Fixed an issue where user IDs weren’t sent correctly, which caused user mentions to break.
  • Fixed an issue where user mentions would break when the user ID contained a pipe (|) character.
  • React Native SDK (0.12.1): Fixed a bug in iOS when New Architecture is enabled, where the whole UI would be scrollable when the keyboard is open.
  • React Native SDK (0.12.0): Fixed a bug in iOS, where opening the keyboard would cause the ChatHeader or the top messages to get hidden. 
  • React Native SDK (0.12.0): Fixed the TypeError: _messageField.getTextResolver is not a function (it is undefined), js engine: hermes. error.
  • React Native SDK (0.12.0): Fixed ref methods not working when called after a delay.

New tutorial

Send event invitations and other custom message types

Out of the box, TalkJS lets you send text, attachments and even voice clips, but what if you business has more specialized types of content to send? In this tutorial, TalkJS developer Frederik Creemers shows you a pattern to create a whole range of custom message types for your chat—from event invitations to payment requests, auction bids, and contact cards.    




👋 Thoughts? Questions? Get in touch.

✨ Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻 Come work at TalkJS! Check out our jobs page.

Bug fixJavaScript SDKREST APINew
2 months ago

Easier push notifications with FCM, real-time translation, and more

Highlight

Push notifications with Firebase Cloud Messaging

Want to keep your users engaged even when they're away from your chat? Learn how to set up web push notifications with Firebase Cloud Messaging (FCM) in TalkJS. Lucy Keer offers a step-by-step guide for adding push notifications for your website or app. 

Read more

Overview of changes

Added

  • Added the option to set a referencedMessageId when importing messages with the REST API.
  • Added a hook that triggers an event when a message is translated in real-time. The event includes the message ID, original message text (text), detected language, and the translated message text (translatedText). This way, you can store both the original and translated versions of the message.

Fixed

  • Fixed an issue where, in the Realtime API, publishes would not be received correctly if the conversation ID of the conversation you’re subscribed to contained special characters.
  • Fixed a bug where notifications didn’t pick up correctly on edits to a message text.

New resources

Real-time message translation for chat apps

Real-time chat translation reduces language barriers and allows you to offer global support. Follow this guide by Chris Meyns to set up real-time message translation for your website or app. 

Check out real-time translation 

Code samples

Want to add custom features to your chat? Refresh your chat UI? Use code samples! Whether you're building with regular JavaScript, React, Angular, Flutter, or other popular frameworks, you’ll find a wide range of ready-to-use examples. From integrating AI chatbots to adding custom features like GIF pickers or polls, we've got you covered.

Explore code samples


👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.

Bug fixImprovementJavaScript SDKDeprecated
3 months ago

Rich media attachments, data filtering in themes, and more


Added

  • JavaScript SDK 0.33.0: Added AudioBlock to support audio attachments on the Realtime API.
  • JavaScript SDK 0.33.0: Added VideoBlock to support video attachments on the Realtime API.
  • JavaScript SDK 0.32.0: Added ImageBlock to support image attachments on the Realtime API.
  • JavaScript SDK 0.32.0: Added VoiceBlock to support voice message attachments on the Realtime API.

Changed

  • Improved the options to filter data in your theme, by mapping and filtering lists. 

Deprecated

  • Removed the option to set a filename for a file attachment using FileBlock on the Realtime API.

Fixed

  • Fixed an issue where video playback in the upload preview on iOS on Safari wasn’t working properly. 
  • Fixed an issue where video thumbnails in message bodies were not showing up properly on Safari and Chromium WebView.
  • Fixed an issue where, on the Realtime API, message replies didn’t show the referenced message that was being replied to correctly. 




👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.

Bug fixFlutter SDKReact
4 months ago

Flutter SDK and React SDK updates

Added

  • Flutter SDK (0.15.0): Added registerBackgroundHandler property to Android Settings passed to registerPushNotificationHandlers().
  • Flutter SDK (0.15.0): Added a Talk.handleFCMBackgroundMessage function.

Changed

  • React SDK (0.1.11): Externalized react/jsx-runtime dependency (thanks to @KlotzJesse 🙌).
  • React SDK (0.1.11): Removed react-dom peer dependency.

Fixed

  • Fixed an issue where email notifications didn’t properly preserve whitespace.

💡Did you know that you can directly download over 50 TalkJS example projects? Check out the  talkjs-examples GitHub repo to get started. 




New case studies 

You’re doing amazing things with TalkJS! 

Two new case studies this month: how Caspar Health uses TalkJS to enable patients and healthcare professionals to communicate securely, and how Hotplate empowers home chefs to talk directly with their customers.




👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.

Bug fixAnnouncementImprovementJavaScript SDKDeprecatedFlutter SDKReact
5 months ago

Multiple webhooks, accessibility improvements, messages on the Realtime API, and more

Highlights

Multiple webhooks

You can now add multiple webhooks to your app. Webhooks can be useful as part of a chatbot interface, to inspect messages as they happen, or to trigger custom domain-specific actions.

A section of a page with the header ‘Webhooks’, and a button ‘Add New Webhook’. Below the button is a table which, for each webhook, the webhook URL, the events that are subscribed to, as well as buttons to either edit or delete the webhook.

To add a new webhook, go to the Settings page of your TalkJS dashboard, and select Add new webhook. Add your webhook URL, select the events that you’d like to subscribe to, and save your settings. 

You can add up to three webhooks if you’re on the Growth plan or higher.

Read more about webhooks.

Accessibility improvements

Chat just got more accessible:

  • Keyboard navigation: The scrollable area in the chatbox is now keyboard accessible. The area can get focus, so you can use your keyboard’s up and down arrow keys to scroll the container.
  • Screen reader: If you’ve got a conversation in focus and someone sends a new message into that conversation, a screen reader will read out the new message.

Do you have more accessibility wishes for your chat? We’d love to hear from you! Get in touch.

Messages on the Realtime API

Messages are available on the Realtime API. That means that you can now access a continuous, up-to-date flow of data related to messages, without needing to send repeated requests or open a chat UI. 

Version 0.31.0 of the JavaScript SDK adds the following:

  • ConversationRef.message: Reference to a message in a given conversation.
  • ConversationRef.subscribeMessages: Subscribe to the messages in a given conversation.
  • MessageSubscription: Subscription to the messages in a given conversation. 
  • MessageRef: Reference to a message.
  • MessageSnapshot.content: The main body of a given message. The body is a list of content blocks with entity trees, which means that you can render the message exactly as it would appear in the frontend.
  • ReferencedMessageSnapshot: Snapshot of a message's attributes at a given moment in time. 
  • MessageSnapshot.referencedMessage: Snapshot of the message that the given message is a reply to, or null if this message is not a reply. 
  • EditMessageParams, SendMessageParams, and MessageActiveState.

Overview of other changes

Added

  • JavaScript SDK (0.31.0): Added ConversationRef.send.
  • JavaScript SDK (0.30.0): Added ConversationSnapshot.lastMessage.
  • JavaScript SDK (0.29.0): Added ConversationRef.markAsRead and ConversationRef.markAsUnread
  • JavaScript SDK (0.28.0): Added ParticipantRef to the Realtime API.
  • JavaScript SDK (0.28.0): Added ConversationRef.participant to get a participant for a given conversation to the Realtime API.
  • JavaScript SDK (0.28.0): Added ConversationSnapshot.joinedAt to the Realtime API.
  • JavaScript SDK (0.27.0): Added ConversationRef.set and ConversationRef.createIfNotExists to the Realtime API.
  • Added the option to mark conversations as read or unread to the Realtime API.
  • Flutter SDK (0.14.0): Added the onUnreadsChange property to Session.

Changed

  • React SDK (0.1.10): Allow null as a value for the conversationId prop.
  • Changed the options for @mentioning a user. Only users who are a current participant in a conversation can be mentioned in that conversation. You can no longer mention guest users. 

Deprecated

  • Flutter SDK (0.14.0): Deprecated the unreads property of Session.

Fixed

  • Fixed a bug in Realtime API batching, where in some cases calls would be executed out-of-order.
  • Fixed an issue where the main chat would scroll down when you scrolled in a message search.
  • Fixed a bug where a participant who had been removed from a conversation could still be @mentioned in that conversation.




New guides and tutorials 

How to add a forward message feature to your chat

Create a custom AI chatbot with TalkJS and Claude

Create a custom chatbot with TalkJS and Gemini




👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.

Bug fixImprovementJavaScript SDKFlutter SDK
6 months ago

Realtime API updates, better accessibility labels, and more

Create and get conversations and participants with the Realtime API  ✨ preview  ✨

The Realtime API provides you with a continuous, up-to-date flow of your TalkJS data without the need to send repeated requests or open a chat UI. And the options available on the Realtime API keep expanding. From version 0.27.0 of the JavaScript SDK, you can use ConversationRef.set, which allows you to set properties of a conversation and manage a user’s participation within it. Additionally, with ConversationRef.createIfNotExists you can streamline the process of creating a conversation if it doesn’t already exist, and to automatically add the current user as a participant if they aren't already one.

Version 0.28.0 then adds ParticipantRef, which allows you to reference a specific user's participation in a conversation. This can be useful for operations such as joining or leaving a conversation, or controlling a user’s access. In addition, ConversationRef.participant offers easy access to a participant reference within a conversation, while ConversationSnapshot.joinedAt provides the date and time (as a Unix timestamp in milliseconds) that a user joined the conversation. With these updates, you have even greater flexibility in accessing and managing conversation conversations and participants of your chat.

Changed

  • The CloseButton, SearchButton  and ActionMenu built-in components available in ChatHeader now accept a label prop that allows you to set your own label for these buttons. Setting your own label can be useful if you’d like to add your own custom translation for these labels.
  • The count of the number of unread messages a user has in a conversation is now capped at a thousand. A user can have more than a thousand unread messages, but the count won’t increase beyond a thousand.
  • Users accessing TalkJS with multiple IDs on the same device can now manage their desktop notification preference settings separately, on a per-user basis.

Fixed

  • Flutter SDK (0.13.1): Fixed a stack overflow issue when comparing sessions.
  • Fixed issues where Flutter webview faced a build issue on Xcode 15 and Xcode 16/iOS 18.
  • Fixed an issue where the conversation actions button in the chat header didn't have an aria-label and title attribute set for screen readers.




New tutorial




👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.

Bug fixImprovementChat UIJavaScript SDK
7 months ago

Add custom emojis, and more

Highlight

Add custom emojis

You can now add your own custom emojis to your chat 😀

Using the customEmojis option, you can add images for emojis that your users can use in their messages, or as emoji reactions.

To add a custom emoji, specify an emoji name and a url to the emoji image you’d like to add. The emoji name must be unique, and must start and end with a colon, for example :coffee-mug:, :cool-doge: or :roomba-cat:. The image URL must be a URL to an image file, such as an SVG, GIF or PNG. The image itself can be any size, as long as it’s square (that is, has the same width and height). 

You can then add your custom emojis when creating your chat UI, for example as follows:

 customEmojis: {
   ':coffee-mug:': { url: 'https://example.com/images/coffee-mug.png' },
   ':roomba-cat:': { url: 'https://example.com/images/roomba-cat.gif' },
   ':cool-doge:': { url: 'https://example.com/images/cool-doge.gif' },
 }

Read more about custom emojis.

Overview of other changes

Added

  • JavaScript SDK (0.24.0): Added support for subscribing to a user via UserRef.subscribe, which returns a UserSubscription.
  • JavaScript SDK (0.26.0): Added customEmojis setting to createChatbox, createInbox and createPopup.

Changed

  • JavaScript SDK (0.25.0): Removed UserData from the Realtime API. Everything that previously returned UserData now returns UserSnapshot.
  • JavaScript SDK (0.25.0): Changed UserSnapshot.locale and SetUserParams.role, so that these are now correctly marked as nullable.

Fixed

  • Fixed a bug where UserRef.set in the Realtime API would give an error if you didn’t specify a name.
  • Fixed an issue where, under certain conditions, you couldn’t add message translation for your preferred language.




New guides and tutorials




👋 Thoughts? Questions? Get in touch.

✨ Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻 We’re hiring! Check out our jobs page.

Bug fixImprovementChat UIJavaScript SDKREST APIDashboardReact Native SDKFlutter SDK
8 months ago

Customizable search UI, more push notifications options, and other changes

Highlights

Customizable search UI

You can now customize the conversation list search as part of your theme, to match your own brand’s look and feel. The conversation list search allows users to search for both conversations and messages when using the Inbox pre-built chat UI. 

Components that you can customize as part of your theme include: 

  • ConversationListSearchBox
  • MessageSearchResult
  • NoSearchResults
  • SearchResultHeader 
  • SearchResultFooter

For more information about customizing your search UI, check out the documentation for these theme components.

More push notification options on the Expo SDK

Are you using the Expo SDK for React Native? Then you now have yet more flexibility when setting up push notifications. In addition to Firebase, you can now also use Apple Push Notification Service (APNs) for push notifications when working with the React Native Expo SDK. You can choose either the expo-notifications or the @react-native-firebase/messaging library for your push notifications. 

For more details on setting up push notifications for Expo, see: Mobile Push Notifications: Expo.

Overview of other changes

Added

  • Added the option to have multiple secret keys. You can also rotate your secret keys directly from your TalkJS dashboard.
  • Added the option to mark a conversation as read or unread via the REST API.
  • JavaScript SDK (0.23.0): Added a ConversationRef to fetch and manipulate data about conversations on the Realtime API.
  • JavaScript SDK (0.23.0): Added Session.conversation(id: string): ConversationRef to get a reference to a conversation by its conversation ID.
  • React Native SDK (0.11.0): Added a scrollToMessage prop to the Chatbox component.
  • Flutter SDK (0.13.0): Added a scrollToMessage property to the Chatbox component.

Changed

  • Changed the option to get a conversation on the REST API to expose isUnread for each participant in a conversation, to identify whether or not the conversation is unread for that participant.

Fixed

  • Fixed an issue with pasting lists into the chat from Google Docs on Chrome on Windows.
  • Fixed an issue where scrolling to a specific message didn’t work properly when calling select. 
  • Fixed an issue where, under certain conditions, it wasn’t possible to run multiple sessions concurrently.
  • JavaScript SDK (0.23.1): Fixed ConversationSnapshot.createdAt and ConversationSnapshot.lastMessageAt to be number instead of Date.
  • React Native SDK (0.11.0): Fixed an issue where the device token wasn’t registered properly if the Session component was used immediately after the app had been launched.
  • Flutter SDK (0.13.0): Fixed an issue where the push notification device token registration didn’t work correctly in release builds.
  • Flutter SDK (0.13.0): Fixed an issue where Session.hasValidCredentials didn’t work correctly.

New guides and tutorials 

How to add chat to a Blazor web app with TalkJS
How to build a Django chat app with TalkJS


👋 Thoughts? Questions? Get in touch.

✨ Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻 We’re hiring! Check out our jobs page.

Bug fixJavaScript SDKREST APINewFlutter SDKReact
9 months ago

OpenAPI spec, status page, SDK updates, and more

Added

  • Added an OpenAPI specification for the TalkJS REST API. The specification is available in both YAML and JSON formats for the most recent version (2024-01-01) of the REST API.
  • Added a status page where you can monitor the current health status of the TalkJS infrastructure: status.talkjs.com.
  • JavaScript SDK (0.22.0): Added the UserRef.set and UserRef.createIfNotExists methods to the RealTime API.
  • React SDK (v0.1.9): Added a "use client" banner to build outputs.

Fixed

  • Fixed an issue due to which it was temporarily impossible to batch update users using the REST API.
  • Fixed an issue due to which the decimal expiry of JWT for authentication didn't work correctly.
  • Flutter SDK (0.12.1): Fixed a conflict with the flutter_inappwebview package.

New tutorial

  • Add chat to a Next.js app with TalkJS




👋 Thoughts? Questions? Get in touch.

✨Follow TalkJS on 𝕏 and LinkedIn to stay up to date.

👩🏾‍💻We’re hiring! Check out our jobs page.