Custom message list layout, and more
This update brings greater flexibility for customizing your message list, and a range of SDK improvements across web and mobile.
Highlight
Customize your message list layout
Take full control over how your message list is structured. With the Components SDK (v0.1.0), you can now customize the areas above, inside of, and below the message list using newly introduced theme components.
This version adds a MessageListHeader component rendered above the message list container, complementing the existing MessageListFooter below it. Inside the message list container itself, you can now use the BeforeMessages theme component (rendered before the first message) and the AfterMessages component (after the last message).
Components inside the message list container scroll naturally along with messages, making it easy to add contextual UI elements such as system banners or onboarding hints. Existing functionality, such as typing indicators, now lives in AfterMessages, providing more flexibility for message list customization.
All of these are exposed as theme components, giving you fine-grained control over layout and styling without workarounds.
Overview
Added
Components SDK
- Version 0.1.1:
- Added a
Preactexport to @talkjs/web-components, allowing you to make your theme stateful withuseEffect,useState, and the like, using Preact. - Added a
useParticipants(conversationId, limit)hook that components can use to subscribe to a list of participants in a conversation.
- Added a
- Version 0.1.0: Added localizations for the emoji picker, including emoji data for multiple languages, allowing users to search for emoji using keywords in their native language.
JavaScript Data API
- Version 1.8.0: Added ParticipantRef.subscribe, which lets you subscribe to updates for a specific participant in a conversation. This can be useful, for example, to detect when a message sender has left a conversation.
- Version 1.7.0: Added support for full message and conversation search. Use Session.searchConversations() to search across a user's conversations, and Session.searchMessages() to search through messages across those conversations.
Flutter SDK
- Version 0.17.0: Added an
onErrorproperty to Session, Chatbox, and ConversationList, allowing you to provide a handler that is called whenever the JavaScript SDK encounters an error.
Changed
Components SDK
- Version 0.1.1: Made changes to the
ChatHeader,ConversationListItemProps,GroupChatImage, andMessagetheme files. Compare theme versions 0.1.0 and 0.1.1. - Version 0.1.0:Breaking change: Changed how the message list footer is rendered. The MessageListFooter theme component is now rendered below the message list container and no longer scrolls with the message list. Typing indicators have been moved to the new AfterMessages component. If you’ve customized
MessageListFooter, see the upgrade guide for required changes.
JavaScript Data API
- Version 1.8.0: Optimized
TalkSession.uploadFile()and related upload methods to perform an initial validation (such as for file size and filename checks) before uploading. Previously, files were fully uploaded before an error was returned. - Version 1.6.3:
Refobjects now maintain referential integrity. CallingSession.conversation("123")multiple times returns the sameConversationRefinstance, instead of creating new ones. - Version 1.6.2:
- Made
localeinSetUserParamsnullable. Settinglocaletonullmeans the user falls back to the default locale configured on the dashboard. - Improved performance when repeatedly calling
ConversationRef.get().
- Made
Flutter SDK
- Version 0.17.0: Breaking change: Updated the minimum supported SDK versions: minimum Flutter SDK version is now 3.32.0, and minimum Dart SDK version is now 3.8.0.
Deprecated
Components SDK
- Version 0.1.1: Deprecated the
common.participantstheme prop. Added the newuseParticipants()hook to use instead.
Fixed
Components SDK
- Version 0.1.1: Fixed a bug in @talkjs/web-components that prevented explicitly passing
nullto nullable props such asselectedConversationId. - Version 0.1.0: Fixed an issue where the waveform of audio files sometimes wouldn’t appear in Safari 26.
- Version 0.0.36: Fixed an issue where the list of participants shown in the mentions dropdown could be incomplete.
- Version 0.0.35: Fixed a bug where drag-and-drop file sharing didn't respect the file sharing setting configured on the dashboard.
- Version 0.0.34:
- Fixed an issue where enabling React Strict Mode could cause the UI to load indefinitely.
- Fixed an issue where upload previews for very tall images or videos could push the send button off-screen.
Flutter SDK
- Version 0.16.2:
- Fixed a crash when building with Xcode 26.2 and deploying to iOS 26.2.
- Fixed an issue where audio waveforms weren't generated until the user interacted with the audio on iOS 26.
JavaScript Classic SDK
- Fixed an issue where upload previews for very tall images or videos could push the send button off-screen.
- Fixed an issue where audio waveforms weren’t always rendered on Safari (both iOS and macOS).
- Fixed an issue where
setHighlightedWordsdidn’t accept empty arrays. You can now pass an empty array to reset highlighted words without reloading the UI. - Fixed an issue on mobile where the system media control panel didn’t correctly display the app’s name when playing audio or video.
👋 Thoughts or questions? Get in touch.
✨ Follow TalkJS on LinkedIn, Bluesky or 𝕏 to stay up to date.
👩🏾💻 Come join TalkJS! Check out the jobs page.