UI components

Pre-built chat UI components you can make your own

Save months of design and development work with a ready-to-use chat UI. Add it to your website or app and customize it to fit your brand.
import { Chatbox } from '@talkjs/react-components';
import '@talkjs/react-components/default.css';
import { TalkSession } from '@talkjs/core';
import { useEffect } from 'react';

function Chat() {
  const appId = '<APP_ID>';
  const userId = 'frank';
  const otherUserId = 'nina';
  const conversationId = 'new_conversation';
  const session = getTalkSession({ appId, userId });

  useEffect(() => {
    session.currentUser.createIfNotExists({ name: 'Frank' });
    session.user(otherUserId).createIfNotExists({ name: 'Nina' });

    const conversation = session.conversation(conversationId);
    conversation.createIfNotExists();
    conversation.participant(otherUserId).createIfNotExists();
  }, [session, conversationId, otherUserId]);

  return (
    <div style={{ width: '400px', height: '800px' }}>
      <Chatbox
        appId={appId}
        userId={userId}
        conversationId={conversationId}
      />
    </div>
  );
}
You
Hey, I’m having trouble accessing my account. It says my password is incorrect.
5m ago
SupportBot
Hi there! No problem — let’s get that sorted. Have you tried resetting your password using the 'Forgot password?' link?
4m ago
thinking
thumbs-up
You
Yes, but I haven’t received the reset email yet.
3m ago
SupportBot
Thanks for confirming. I’ve just sent a new reset link to your email. Please check your inbox and spam folder.
2m ago
SupportBot
Is there anything else I can help you with?
just now
Got it — checking my inbox now!
Dev A
Hey, I'm trying to lift state up from a child component, but I'm getting undefined errors. Any ideas?
8m ago
You
Are you passing the state and the setState function correctly as props?
6m ago
Dev A
I think so, yes. But maybe I’m missing something.
5m ago
ok-hand
thinking
You
Maybe you're not binding the handler in the constructor. That might be the issue.
2m ago
Dev A
typing...
just now
Write a reply...

Ready-made chat UI you can customize

The chat UI comes with three different layouts—that are highly customizable—which you can mix and match to suit your needs. You have complete control over the styling, the layout, and document structure of the chat messages and the possibility to show metadata.
Inbox
The TalkJS Inbox shows the chat history on the left, selected conversation on the right. It's designed to act as the messaging center of your app, usually living on its own page.
Chatbox
The TalkJS Chatbox is just the right half of the Inbox UI mode. It takes up less space and is designed to be embedded in your app near an order confirmation, a booking, or user profile.
Popup
You can also show a conversation in a popup that only shows up when the user clicks a button somewhere. When shown, the popup is positioned on the bottom right of your page.
Coosto logo
The power of TalkJS is that it's highly customizable and user-friendly. We can offer our customers a plug and play solution and give them the possibility to adjust the chat widget to their needs.
Paul Van Den Broek
Product Manager, Coosto

Integrate chat with a few lines of code

You just need to tell us which conversation to display, who’s chatting, and where to show it on the page. We take care of the rest! And if you want a deeper integration, we have all the APIs you’ll need to add functionality or integrate into your own systems.
<Session appId="9352938974" userId={me.id}>
  <Chatbox conversationId={conversation.id}/>          
</Session>

Customize everything and anything

Themes give you full control over the styling, layout, and structure of the TalkJS chat UI. You can customize:
  • Fonts, colors, and spacing
  • Layouts for inbox, chatbox, and popup
  • Message bubbles and system messages
  • Markup and document structure
  • Use cases like live comments next to video
Themes go beyond appearance—they shape functionality too. Build a theme that fits your product, whether it’s a team chat app, a mobile messenger, or a live comments section next to a video stream.

Complete messaging feature set

Build an in-app messaging experience your users actually love. Everything you need to drive engagement and retention, powered by a fast, reliable messaging infrastructure.
Replies
Voice messages
Mentions
Emoji reactions
Link previews
Edit messages
Private 1-1 chat
Group chat
Large public group chat
AI chatbot integration
Notifications
Threads
Read receipts
Message search
Conversation search
Persistent message history
File sharing
Media attachments
Typing indicator
Message translation
Announcements
Admin messages
Moderation
Mute user in channel
Ban user
Block user
Flag messages
Profanity filter
Spam protection
Domain filter
Silent messages
Location sharing
Presence indicators
Unread message count
Custom message actions
Custom message types
Analytics
Data export
Third-party integrations
Voice and video call integration
Webhooks
Multi-tenancy support
User roles
Channel list
Catawiki logo
We needed chat and didn’t want to build it ourselves because it needs to be really great. The TalkJS team is laser-focused on chat, and we’re focused on building a great auction marketplace.
Dennis Pereira
Head of Product, Catawiki