New to KendoReactStart a free 30-day trial

Getting Started with KendoReact Chat
Premium

The KendoReact Chat component enables you to create interactive conversational interfaces in your React applications. It provides a comprehensive set of features for building chat experiences, including message display, user input handling, and real-time conversation management.

After completing this guide, you will be able to reproduce the following example.

Change Theme
Theme
Loading ...

Before You Begin

sh
npm create vite@latest my-app -- --template react

This guide requires basic knowledge of React and TypeScript and assumes you have already created a blank React project.

You can speed up the development of your KendoReact application with the Kendo UI Template Wizard for Visual Studio Code.

Install the Component

sh
npm i @progress/kendo-react-conversational-ui

Importing the Component

After installing the package, import the Chat component in your React app. To enable message sending functionality, also import the Message entity.

In the src/App.js file of your React project, import the Chat component from the Conversational UI package:

jsx
// ES2015 module syntax
import { Chat, ChatSendMessageEvent, Message, User } from "@progress/kendo-react-conversational-ui";
jsx
// CommonJS format
const { Chat, ChatSendMessageEvent, Message, User } = require('@progress/kendo-react-conversational-ui');

Using the Component

  1. Add the required Chat entities: a user, bot, and initialMessages.
tsx
const user: User = {
    id: 1,
    avatarUrl: 'assets/dropdowns/contacts/RICSU.jpg',
    avatarAltText: 'KendoReact Conversational UI RICSU'
};

const bot: User = { id: 0 };

const initialMessages: Message[] = [
    {
        id: 1,
        author: bot,
        timestamp: new Date(),
        text: 'Hello, This is the KendoReact Chat component.'
    }
];
  1. Set the component messages and configure the updating of the messages collection in the state.
tsx
const App = () => {
    const [messages, setMessages] = React.useState<Message[]>(initialMessages);

    const addNewMessage = (event: ChatSendMessageEvent) => {
        setMessages([...messages, event.message]);
    };
  ...
  1. Add the component's markup and set the messages, authorId, and message sending handler. Optionally, configure placeholder text and the height of the Chat component.
tsx
return (
    <Chat
        messages={messages}
        authorId={user.id}
        onSendMessage={addNewMessage}
        placeholder={'Type a message...'}
        width={400}
        className="k-m-auto"
    />
);
  1. To style the Chat, install and import the Default theme, which is one of the three beautiful themes for KendoReact.

    4.1. Install the Default theme package.

    sh
    npm i @progress/kendo-theme-default

    4.2. Import the CSS file from the package in src/App.js. Add this import before your existing App.css import.

    jsx
    import '@progress/kendo-theme-default/dist/all.css';
  2. Build and run the application by typing the following command in the root folder of your project:

    sh
    npm start
  3. Navigate to http://localhost:3000 to see the KendoReact Chat component on the page.

Activating Your License Key

Important: The KendoReact Chat is a premium component that requires a license key file to be installed in your project. This applies to both trial and commercial usage:

Without a valid license key file, the component will display licensing warnings and watermarks.

Follow the instructions on the KendoReact My License page to download and install your license key file. You can skip this step if your application already contains a KendoReact license file.

Dependencies

The Chat component requires you to install the following peer dependencies in your application:

Package NameDescription
react 16.8.2*Contains the functionality necessary to define React components.
react-domContains the React renderer for the web.
@progress/kendo-licensingContains the internal infrastructure related to licensing.
@progress/kendo-react-buttonsContains the KendoReact Buttons components.
@progress/kendo-react-commonContains common utilities and helpers used across KendoReact components.
@progress/kendo-react-inputsContains the KendoReact Input components for handling user input.
@progress/kendo-react-labelsContains the KendoReact Label components for form labeling and accessibility.
@progress/kendo-react-layoutContains the KendoReact Layout components for building flexible layouts.
@progress/kendo-react-popupContains the KendoReact Popup component for displaying content in overlays.
@progress/kendo-react-treeviewContains the KendoReact TreeView component for hierarchical data display.
@progress/kendo-react-notificationContains the KendoReact Notification component for displaying alerts and messages.
@progress/kendo-react-uploadContains the KendoReact Upload component for file uploading functionality.
@progress/kendo-react-intlContains the KendoReact Internationalization package that applies the desired cultures by providing services and pipes for the parsing and formatting of dates and numbers.
@progress/kendo-svg-iconsContains the KendoReact SVG icons.