Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

react-chatbotify

react-chatbotify24.4kMIT2.3.0TypeScript support: included

A modern React library for creating flexible and extensible chatbots.

react, chat, chatbot, conversational-bot, conversational-ui, frontend-library, react-chatbotify

readme

React ChatBotify

Table of Contents

Introduction

Welcome to React ChatBotify, an intuitive and versatile library that allows you to build responsive chatbots with ease. Whether you're aiming to create a simple FAQ bot or a sophisticated conversational interface integrated with Large Language Models (LLMs) such as OpenAI or Google Gemini, React ChatBotify provides the tools and flexibility you need to bring your vision to life.

Designed with developers in mind, React ChatBotify simplifies the chatbot development process without compromising on functionality. Its intuitive API and comprehensive customization options allow you to tailor your chatbot to meet specific project requirements seamlessly. From handling basic interactions to managing complex and advanced conversational flows, our library empowers you to deliver engaging user experiences. Head over to our community showcases or join our discord to get inspired and start crafting your chatbot today!

React ChatBotify is currently compatible with React versions 16, 17, 18, and 19. Get started by installing the library with the following command:

npm install react-chatbotify --save

Note that this repository contains the code for the core library. If you're looking for the repositories of other React ChatBotify projects, you may look here.

Features

React ChatBotify is packed with a comprehensive set of features designed to elevate your chatbot development experience. Explore some of its standout capabilities:

  • Themes: Customize the chatbot's appearance with a wide variety of community themes, or combine multiple themes to achieve your desired look and feel.
  • Plugins: Extend your chatbot's functionality with numerous custom plugins (e.g. LLM Connector), or create your own to meet specific needs.
  • Dynamic Outputs: Craft interactive conversations by dynamically generating messages and defining multiple dialogue paths based on user inputs.
  • Custom Components: Easily integrate your own custom components into the chatbot interface to boast your application's unique design and functionality.
  • Stream Responses: Connect with Large Language Models (LLMs) and custom endpoints to stream/simulate bot responses, enhancing user engagement and experience.
  • Timeouts and Auto-Transitions: Configure timeouts and automate transitions between conversation paths to guide users seamlessly through their interactions.
  • Voice Input & Audio Output: Empower users to interact using voice commands and receive spoken responses, adding a hands-free dimension to your chatbot.
  • Chat Notifications: Keep users informed with real-time notifications, ensuring they stay updated with the latest messages and interactions.
  • Checkbox & Options Support: Incorporate checkboxes and selectable options within the chat interface, enabling users to make choices effortlessly.
  • Emoji Picker: Allow users to express their personalities and emotions in conversations by incorporating emojis, enhancing user engagement.
  • File Attachments: Facilitate the exchange of documents, images, and other files within the chat, allowing users to upload content seamlessly.
  • Sensitive Input: Protect user privacy by masking sensitive information inputted into the chatbot, ensuring confidentiality.
  • Mobile-Friendly Interface: Deliver a smooth and responsive user experience across all devices with our optimized mobile-friendly design.
  • Custom Events: Utilize custom events emitted by the chatbot to trigger application-specific logic, enhancing integration and interactivity.
  • Custom Hooks: Leverage the provided custom hooks to interact with the chatbot from your own components, streamlining integration and functionality.

These features, along with many others, empower developers to create highly interactive and personalized chatbot experiences tailored to their specific application requirements.

Technologies

Technologies used by React ChatBotify are as below:

Done with:

ReactJS

Typescript

Project Repository

Other Associated Projects

Quickstart

For a thorough walkthrough on getting started, you may refer to the Quickstart Guide on the Documentation Website.

Documentation

A full documentation (along with a live playground) for the library can be found at the following link:

Examples on the website are also run on a live editor so feel free to explore to your heart's content!

Team

Contributing

If you are looking to contribute, please refer to the Contributing Guide. A special section has also been added for Hacktoberfest participants!

Support

If there are any questions pertaining to the application itself (usage or implementation wise), you may create an issue, reach out on discord, or drop me an email at: **cjtanjin@gmail.com**.

Attributions

Images

Credits are to be given for the following images:

Note: Some buttons are hand-drawn.

Sound

Credits are to be given for the notification sound:

Inspirations

As I have used similar alternatives at some point in my developer journey, some inspirations have been taken from them and they ought to be credited here:

changelog

CHANGELOG.md

v2.3.0 (14-08-2025)

Added:

  • Added a new chatButtonHoveredStyle
  • Added support for callback function parameter in replaceMessages, replacePaths, replaceToasts, replaceSettings and replaceStyles

v2.2.0 (06-07-2025)

Fixed:

  • Improved/fixed header title styles to be consistent when updated with just a string type

Added:

  • Added a new slots prop to ChatBot that provides composability of major UI components (e.g. header, footer) (docs updated here)

v2.1.0 (13-06-2025)

Note: The themes upstream repository has been moved to the React ChatBotify GitHub Org. With this touchup, v2 is now officially stable! That said, refinements will still be ongoing - do feel free to report bugs or provide suggestions/feedback!

v2.0.0-beta.39 (12-06-2025)

Added:

  • Added a newgetIsChatBotVisible utility function to the useChatWindow hook

v2.0.0-beta.38 (23-05-2025)

Fixed:

  • Fixed an issue where dimensions provided in strings to styles were not handled correctly for internal calculations

v2.0.0-beta.37 (20-05-2025)

Added:

  • Added a new export RcbEvent that is an enum for all React ChatBotify events
  • Added a new useOnRcbEvent that accepts RcbEvent as the first parameter and an event handler as the second parameter

Note: This update is primarily meant for plugin developers. The addition of useOnRcbEvent should make registering of events much cleaner (especially within plugins). Filtering of bot ids is handled automatically within this hook, which means multi-bot users (and plugin developers) no longer have to check for bot ids to prevent chatbot events being caught by each other. A custom CLI tool will also be released soon to facilitate setups for developing plugins, themes etc. These changes are all part of an overall effort to improve developer experience.

v2.0.0-beta.36 (16-05-2025)

Fixed:

  • Fixed an issue with restartFlow not triggering the start block again
  • Fixed an issue where an interruptable transition is not respected in restartFlow
  • Fixed an issue where events emitted may be missed during the initial loading of the chatbot
  • Fixed an issue with file uploads not resetting properly (note that the files type was updated from FileList to Array<File>)

v2.0.0-beta.35 (13-05-2025)

Fixed:

  • Fixed an issue where messages removed are still persisted in chat history storage
  • Fixed an issue where params.userInput is not updated when user messages are added through utility functions
  • Fixed an issue where notifications count for unread messages may be inaccurate

v2.0.0-beta.34 (13-05-2025)

Important:

  • This version introduces integration with the LLM Connector Plugin and with that, successfully provides out-of-the-box integration with LLMs! The LLM Connector plugin is ready and will be made available on NPM soon.

Breaking Changes:

  • Renamed params.openChat to params.toggleChatWindow for consistency with the useChatWindow hook
  • The injectMessage, streamMessage, simulateStreamMessage and removeMessage functions now return the entire Message object instead of just the id

Fixed:

  • Fixed an issue where streamMessage prevents users from scrolling away
  • Fixed an issue where message processing may fail due to a missing type check
  • Fixed an issue where rendering messages in code blocks can occasionally cause contents to be cut-off
  • Fixed an issue where endStreamMessage did not properly emit the message data in its event
  • Fixed an issue with audio not playing in simulate message stream due to changes in the previous version
  • Optimized all toggle states (resolves rare scenarios where toggles don't work correctly)

Added:

  • Added scrollToBottom and toggleIsBotTyping utility functions to the useChatWindow hook
  • Enhanced all toggle functions (toggleAudio, toggleVoice, toggleNotifications, toggleChatWindow, toggleTextAreaDisabled, toggleTextAreaSensitiveMode) to allow an optional active parameter which basically specifies desired end state (if no parameter is passed in, it continues to function just as a simple toggle)
  • Added rcb-pre-process-block and rcb-post-process-block events

v2.0.0-beta.33 (23-04-2025)

Breaking Change:

  • The botBubble.simStream and userBubble.simStream settings have been renamed to botBubble.simulateStream and userBubble.simulateStream for greater clarity
  • The botBubble.simulateStream and userBubble.simulateStream settings are no longer applied to params.injectMessage, and are only applied to the message attribute within a block (you should now defer to the newly added params.simulateStreamMessage for simulating streaming via utility function)
  • The simStreamChunker data field has been renamed to simulateStreamChunker and moved from rcb-pre-inject-message event to the newly added rcb-start-simulate-stream-message event

Added:

  • Added a new speakAudio utility function to the useAudio hook
  • Added a new params.simulateStreamMessage for users to simulate stream message
  • Added new rcb-start-simulate-stream-message and rcb-stop-simulate-stream-message events

Note:

A couple of breaking changes have been introduced this patch to be more consistent with how messages are handled. This consistency is aimed at simplifying future development work both on the core library and for plugins. If you are using the Markdown Renderer Plugin or HTML Renderer Plugin, you should update both plugins to version 0.2.0 or higher which adds support for listening to the new simulate stream message events.

v2.0.0-beta.32 (16-03-2025)

Fixed:

  • Fixed an occasional issue where loading plugins can cause infinite re-renders
  • Fixed an issue where stale messages may be used within the useMessages hook

v2.0.0-beta.31 (25-02-2025)

Deprecated:

  • Removed botBubble.dangerouslySetInnerHtml and userBubble.dangerouslySetInnerHtml properties, whose logic has now been shifted to the newly published HTML Renderer plugin

Added:

  • Added a new rcb-start-audio-speak event
  • Added a new optional tags property to Message component, targeted at plugins looking to add identifiers to messages (for example, to know when a message was processed by a plugin)
  • Added a new simStreamChunker data field to rcb-pre-inject-message event, which allows custom parsing of simulated stream
  • Added a new hasChatHistoryLoaded state to the useChatHistory hook to determine if chat history has been loaded

v2.0.0-beta.30 (19-02-2025)

Fixed:

  • Fixed an issue introduced in the previous version where custom components are wrapped in chat bubbles

v2.0.0-beta.29 (18-02-2025)

Fixed:

  • Fixed issues with stream message events

Added:

  • Added a new optional contentWrapper property to Message component, targeting niche use cases where additional parsing/rendering of strings for a message are required before it is wrapped in a chat message bubble

Note: The addition of the niche property contentWrapper is not typical - in general, we avoid niche implementations in the core library. In this case however, it provides an elegant solution for supporting plugins that need to render messages in specific formats. For example, the newly published Markdown Renderer uses this new property.

v2.0.0-beta.28 (13-02-2025)

Fixed:

  • Fixed an issue with redundant styles being applied
  • Fixed an issue where specific static svg imports are missing in the final build

v2.0.0-beta.27 (12-02-2025)

Fixed:

  • Fixed an issue where updateStyles may not reflect updates for certain components
  • Fixed an issue where restart flow does not properly reset isSensitive attribute
  • Fixed an issue where restart flow does not sync live history messages with storage

Added:

  • Added a new blurTextArea utility function to the useTextArea hook
  • Added a new chatWindow.showTypingIndicator setting to allow configuration for whether bot typing indicator is shown (defaults to true)
  • Extended the voice.timeoutPeriod setting which can now be disabled with a value of 0 (i.e. voice stays on until user turns it off manually)

v2.0.0-beta.26 (25-11-2024)

Fixed:

  • Fixed a bug introduced in v2.0.0-beta.25 that caused simulate streaming of messages to fail

v2.0.0-beta.25 (25-11-2024)

Fixed:

  • Fixed an issue with z-index causing display issues in embedded chatbots
  • Fixed and improved stream logic for messages

Note: The message sender field now defaults to being fully capitalized (i.e. bot -> BOT). However, it is also no longer case sensitive so no action is required.

v2.0.0-beta.24 (13-11-2024)

Fixed:

  • Fixed an issue where toasts showed up incorrectly positioned in embedded chatbots

v2.0.0-beta.23 (07-11-2024)

Minor Breaking Change:

  • All functions in params are now async, with the addition of these functions in this version:
    • params.showToast
    • params.dismissToast
    • params.goToPath
    • params.setTextAreaValue
    • params.openChat
  • The following functions from hooks are now async:
    • showToast
    • dismissToast
    • toggleAudio
    • toggleNotifications
    • toggleVoice
    • toggleChatWindow
    • goToPath
    • setTextAreaValue

Fixed:

  • Fixed stale values in toggle events
  • Fixed an issue with toasts not being positioned properly
  • Fixed an issue where new message prompts are not dismissed in embedded chatbots
  • Fixed an issue with the chatbot potentially crashing in react native webview
  • Fixed warning messages when loading chat history

Added:

  • Added support for async event handlers (push promises into event.promises for them to be awaited till resolved)
  • Added Plugin type as an export
  • Improved logic for simulating stream messages

v2.0.0-beta.22 (31-10-2024)

Fixed:

  • Fixed a rare issue where the latest message sent may not be saved into chat history
  • Fixed error messages in console when chat history loads options or checkboxes

Added:

  • Added a new storageType property to settings.chatHistory that allows users to specify LOCAL_STORAGE or SESSION_STORAGE for storing chat messages
  • Improved plugin experience by allowing plugin developers to include auto-setups
  • Toasts styles are now handled independently, allowing different toasts to show up concurrently

v2.0.0-beta.21 (22-10-2024)

Minor Breaking Change:

  • The desktopEnabled and mobileEnabled properties previously found under settings.general have been moved to a new settings.device section

Fixed:

  • Fixed an issue with notification sound spams when streaming messages

Added:

  • Added a new sendIconHoveredStyle to allow users to define send icon styles on hover
  • Added a new device section (which the desktopEnabled and mobileEnabled properties are moved to)
  • Added a new applyMobileOptimizations property to the newly added settings.device section

v2.0.0-beta.20 (21-10-2024)

Fixed:

  • Fixed an issue with the default chatbot footer icon
  • Improved checks for desktop/mobile devices
  • Reduced unnecessary re-renders (minor optimizations)
  • Properly fixed chatbot svg icon on mobile

Added:

  • Added new replaceSettings, replaceStyles, replaceMessages, replacePaths and replaceToasts utility functions to their respective hooks (replaces their respective state setters)

Note: Hooks no longer directly expose state setters (not a great practice, and hinders optimizations that can be done within the library itself). The new functions serve as a drop-in replacement for the state setters.

v2.0.0-beta.19 (18-10-2024)

Fixed:

  • Fixed an issue where using ChatBotProvider for hooks will cause infinite re-renders
  • Fixed an issue where audio service will read out html tags
  • Fixed an issue where sendOutput field is being ignored for options and checkboxes attributes
  • Fixed an issue where tooltip had a much lower z-index than chat window, causing it to be partially hidden
  • Fixed an issue with the useToasts hook not being imported correctly
  • Fixed an issue where chatbot button svg icon was not rendered correctly on mobile devices

Added:

  • Added a new updateSettings utility function to the useSettings hook (refer to documentation for details)
  • Added a new updateStyles utility function to the useStyles hook (refer to documentation for details)

v2.0.0-beta.18 (14-10-2024)

Fixed:

  • Excluded comments from theme css files parsing
  • Fixed an issue where icon was not rendered correctly in footer

v2.0.0-beta.17 (13-10-2024)

Fixed:

  • Fixed improper parsing of css files in themes
  • Fixed toast animation not working

Added:

  • Updated button with svgs from: https://fonts.google.com/
  • Added disabled icon support for all buttons (now possible to have different icons for enabled/disabled state)
  • Added svg component support for button icons (conveniently use the fill attribute to recolor icons!)
  • Added a new sendIconDisabledStyle
  • Loading of chat history no longer locks the text area
  • Standardized keyframe naming conventions

v2.0.0-beta.16 (08-10-2024)

Fixed:

  • Fixed an issue where themes may not load properly
  • Buttons now properly inherit base styles even in different states (e.g. disabled, hovered)

v2.0.0-beta.15 (06-10-2024)

Fixed:

  • Fixed an issue where having settings.chatHistory.autoLoad: true will cause the chat history to disappear
  • Fixed an issue where loading of chat history may cause previously disabled text area to become enabled
  • Renamed id inside event.detail to botId for better clarity

Added:

  • Added a new rcb-pre-load-chatbot event
  • Added a new rcb-post-load-chatbot event
  • Added a new useBotId hook

v2.0.0-beta.14 (03-10-2024)

Fixed:

  • Fixed an issue where having multiple chatbots can cause styling conflicts with themes
  • Fixed an issue where removeMessage was not working due to outdated messages state
  • Fixed an issue where defaultToggledOn property for voice did not properly register voice inputs
  • Fixed an issue where settingdefaultOpen to true for chatWindow does not make it open by default
  • Fixed an issue where toggling open the chat window does not emit its associated event
  • Fixed a rare issue where spamming messages too fast can cause autoscroll to bottom to not work properly
  • Fixed notification badge style to prevent it from becoming oval-shaped
  • Fixed an issue with the library packaging process, reduces overall size by nearly 60%!
  • Renamed useToast hook to useToasts for consistency

Added:

  • Added proper support for React 19!
  • Added a new ariaLabel section to improve accessibility support
  • Added a new useChatHistory hook that provides 3 new actions (showChatHistory, getHistoryMessages and setHistoryMessages)
  • Added a new sendButtonDisabledStyle (send button is now properly disabled when textarea is disabled as well)
  • Improved localised styling of chatbots to reduce conflicts with host websites (and with other chatbots)

Note: This update brings about a couple of fantastic improvements - drastically reduced library size (by nearly 60%), React 19 support, improved localised styles and better accessibility support!

v2.0.0-beta.13 (26-09-2024)

Fixed:

  • Fixed an issue where the toggle voice event was not properly triggered

Added:

  • Improved support for ssr (users now no longer need to rely on dynamic imports as a workaround)

v2.0.0-beta.12 (20-09-2024)

Fixed:

  • Fixed an issue where toasts do not obey max limit
  • Fixed an issue where toasts are not positioned properly
  • Fixed an issue where notification sound does not play correctly in useNotifications

v2.0.0-beta.11 (20-09-2024)

Added:

  • Added a new useFlow hook that grants access to retrieving and restarting the conversation flows
  • The hasFlowStarted boolean which was previously found in useFirstInteraction has been moved to useFlow for better consistency

Fixed:

  • Fixed an issue where states were not updated in conversation flow

Note:

There have been confusions surrounding the use of ChatBotProvider such as what props it should be given if used. To reduce the mental load on developers, all props are now centralized to only ChatBot, regardless of whether you are using ChatBotProvider or not. There is no functionality change, but developers can now just remember that ChatBot is what accepts all props so if you're currently passing props to ChatBotProvider, move them all to ChatBot instead.

v2.0.0-beta.10 (18-09-2024)

Fixed:

  • Fixed an issue where chatbot view on mobile devices may not resize correctly
  • Fixed an issue where uuids are not generated properly for non-https environments

v2.0.0-beta.9 (16-09-2024)

Breaking Changes (Advanced Users):

  • If you are manually manipulating the messages array via advanced messages, note that the message elements now enforce that the following fields must be present (more details here):
    • id
    • sender
    • content
    • type
    • timestamp
  • If you are currently using any of the advanced features (e.g. SettingsContext, StylesContext, MessagesContext or PathsContext), note that these have been removed in favor of a single provider (ChatBotProvider). The advance configuration section has also been removed from settings as the entire concept of advanced features is being dropped (more details here).

Breaking Changes (All Users):

  • The isOpen variable in settings which tracked the open/close state of the chatbot window has been removed, in favor of useChatWindow hook. More details here.
  • Last beta release, a new params.injectToast was added. This has been renamed to params.showToast to avoid conceptual similarities with messages.

Fixed:

  • Fixed an issue where params.setTextAreaValue may not respect the character limit of the text area (if set).

Added:

  • A new id prop has been added to uniquely identify a bot (relevant for firing events when there are multiple chatbots).
  • A new plugins prop is now available. However, there are no plugins released yet - they will come in October. More details here.
  • A new hooks feature is now available, granting extreme flexibility in interacting with the chatbot from your own components. This is achieved by nesting your components within a single <ChatBotProvider/>. More details here.
  • A new events feature is now available, allowing you to listen for chatbot events and run your own application logic. Events are an opt-in feature so you'll need to enable them in settings. More details here.
  • A message id (string) is now returned for injectMessage and streamMessage which identifies the message the content is sent in (returns null if sending of message was prevented in event listeners).
  • A toast id (string) is now returned for showToast which identifies the toast the content is sent in (returns null if sending of toast was prevented in event listeners).
  • The transition attribute now accepts a number as well (defaults interruptable to false).

Note: This beta release includes large scale changes in order to deliver on the events/plugins feature. Pending major bugs or implementation issues, this will be the last round of introducing massive changes as we strive towards a stable version for v2. Note that given the scale of these changes, there are minor breaking changes (in addition to the initial beta release), which largely affects advanced users. For users updating from the older beta versions, I've put together the sections to catch up on for addressing breaking changes:

v2.0.0-beta.8 (06-09-2024)

Fixed:

  • Fixed an issue where bot typing indicator is not shown when params.goToPath is used

Added:

  • A new params.setTextAreaValue has been added for users to directly set the text area value
  • A new params.injectToast has been added for users to show toasts within the chatbot
  • A new toast section has been added to settings which contains 3 properties (maxCount, forbidOnMax and dismissOnClick) along with 3 new additions to styles (toastPromptContainerStyle, toastPromptStyle, toastPromptHoveredStyle)
  • The checkboxes block attribute now accepts an array of strings as well, and will populate items property with it (all other values defaulted)
  • The checkboxes block attribute has 2 new properties sendOutput and reusable, which determines whether the selected checkboxes should be sent in chat and whether the checkboxes can be reused
  • The options block attribute now accepts an object as well, accepting 3 properties which are items, sendOutput and reusable (current array input still works)

Note: This update adds on to and expands the checkboxes and options block attributes. There are no breaking changes but if users are keen to leverage on the new features, do refer to the attributes documentation. In addition, 2 new parameters (params.setTextAreaValue and params.injectToast) have also been added which greatly enhances the capabilities of the chatbot and sets the groundwork for the impending events/plugins update. Details of their usage can be found in params documentation.

v2.0.0-beta.7 (01-09-2024)

Added:

  • Added rcbTypingIndicatorContainerStyle and rcbTypingIndicatorDotStyle for ease of styling typing indicator

v2.0.0-beta.6 (24-08-2024)

Fixed:

  • Fixed an issue where chat icon will not fit in the button correctly
  • Fixed an issue where baseUrl was wrongly named base_url

Added:

  • Added caching of themes locally to improve performance
  • Added optional cacheDuration field when specifying themes which specifies in seconds the duration to cache the theme for (defaults to 30 days)

v2.0.0-beta.5 (15-08-2024)

Fixed:

  • Fixed an issue where cursor disabled icon was not showing up on mac devices

Added:

  • Added a bunch of new style props for buttons and icons to improve convenience in styling: ` // new button styles audioButtonStyle?: React.CSSProperties; audioButtonDisabledStyle?: React.CSSProperties; closeChatButtonStyle?: React.CSSProperties; emojiButtonStyle?: React.CSSProperties; emojiButtonDisabledStyle?: React.CSSProperties; fileAttachmentButtonStyle?: React.CSSProperties; fileAttachmentButtonDisabledStyle?: React.CSSProperties; notificationButtonStyle?: React.CSSProperties; notificationButtonDisabledStyle?: React.CSSProperties; voiceButtonStyle?: React.CSSProperties; voiceButtonDisabledStyle?: React.CSSProperties;

// new icon styles chatIconStyle?: React.CSSProperties; audioIconStyle?: React.CSSProperties; audioIconDisabledStyle?: React.CSSProperties; closeChatIconStyle?: React.CSSProperties; emojiIconStyle?: React.CSSProperties; emojiIconDisabledStyle?: React.CSSProperties; fileAttachmentIconStyle?: React.CSSProperties; fileAttachmentIconDisabledStyle?: React.CSSProperties; notificationIconStyle?: React.CSSProperties; notificationIconDisabledStyle?: React.CSSProperties; voiceIconStyle?: React.CSSProperties; voiceIconDisabledStyle?: React.CSSProperties; sendIconStyle?: React.CSSProperties;


**Note:**
There were minor shifting of a few classes to better separate buttons and icons. This should not be an issue for the vast majority of users, but if you've done very specific changes to button/icon styles by targeting the CSS classes, it is advisable to visually check the appearance of said buttons/icons.

## v2.0.0-beta.4 (02-08-2024)

**Fixed:**
- Fixed an issue where disabling `chatInput` globally cannot be overriden by block-level `chatDisabled` attribute

## v2.0.0-beta.3 (28-07-2024)

**Fixed:**
- Fixed an issue where themes will override the current `isOpen` value in `settings`, causing it to open/close unexpectedly

## v2.0.0-beta.2 (25-07-2024)

**Fixed:**
- Fixed an issue where theme conflicts are not properly resolved
- Fixed an issue where invalid sections are not caught in themes
- Fixed an issue where sensitive inputs permanently mask the remaining conversations
- Fixed an issue where chatbot loses focus in text area when transitioning from a previously disabled state

## v2.0.0-beta.1 (24-07-2024)

**Note:**
v2.0.0-beta.1 is a major release with **breaking changes**. All details are available in the [**migration guide**](https://react-chatbotify.com/docs/introduction/migration_v2). 

## v1.7.0 (10-06-2024)

**Added:**
- Added a new `language` property to the `voice` section for managing voice input language
- Added a new `flowStartTrigger` property to the `theme` section for managing when flow starts

**Fixed:**
- Fixed an issue where embedded chatbot notifications are played while chatbot is visible

**Note:**

This release has a minor breaking change for developers who are using advance custom paths. If you are currently initializing paths with `["start"]`, note that specifying the `start` block is no longer needed. This means you can simply use `[]` as shown in the updated custom paths example [here](https://react-chatbotify.com/docs/examples/custom_paths).

## v1.6.3 (05-06-2024)

**Fixed:**
- Fixed a rare issue where streaming of messages can sometimes cause `undefined` to appear

## v1.6.2 (25-05-2024)

**Added:**
- Added a new `allowNewline` property to the `chatInput` section which determines if user input can contain newline (`\n`)
- The notifications feature is now properly supported for embedded chatbots and will chime only if the chatbot is scrolled out of view

**Fixed:**
- Fixed an issue where voice detection may not be properly disabled while the chatbot is still streaming messages
- Fixed an issue where **shift + enter** submits user input instead of attempting to add newline
- Fixed an issue where newline is automatically converted to whitespace in user and bot bubbles

## v1.6.1 (19-05-2024)

**Added:**
- Added a new `showCount` property to the `notification` section which allows showing/hiding of unread message count on the top right corner of chatbot button

**Fixed:**
- Improved performance for streaming messages
- Fixed an issue where streaming messages while `dangerouslySetInnerHtml` is set to `true` will pause briefly on encountering html tags
- Fixed an issue where notification sound may occasionally chime when chatbot is embedded
- Fixed an issue where textarea styles may be inconsistent when disabled/focused
- Fixed an issue where the bot may crash on rare occasions when users spam the voice button
- Fixed an issue where embedded chatbot will force input focus on new messages even when scrolled out of page view

## v1.6.0 (11-05-2024)

**Added:**
- Added a new `sensitiveInput` configuration section to cater for sensitive information (refer to [API documentation](https://react-chatbotify.com/docs/api/bot_options#sensitiveinput))
- Added a new `autoLoad` property to the `chatHistory` section which allows chat history messages to be automatically loaded on start
- Added a new `dangerouslySetInnerHtml` property to both `userBubble` and `botBubble` which allows setting of raw HTML content (use with caution)

**Fixed:**
- Fixed several type definitions within the library itself
- Fixed an issue where the load chat history button can appear distorted if given a long text string
- Fixed an issue where some chat history messages may not be saved when using real-time stream
- Fixed an issue where chat input textarea may resize when focused on some occasions
- Fixed selection of emoji causing textarea to lose focus
- Improved performance for saving chat history
- Further reduced assets file size

**Note:**

This update contains significant additions but they have been documented on the [API documentation](https://react-chatbotify.com/docs/api/bot_options#sensitiveinput) and you will also find new live examples for [Sensitive Input](https://react-chatbotify.com/docs/examples/sensitive_input) and [Markup Message](https://react-chatbotify.com/docs/examples/markup_message). This will be one of the last few (if not the last) release before v2.0.0 arrives. Feel free to join [discord](https://discord.gg/6R4DK4G5Zh) to stay up to date!

## v1.5.2 (08-04-2024)

**Added:**
- Added 2 new style props for `chatInputAreaFocusedStyle` and `chatInputAreaDisabledStyle`

**Fixed:**
- Fixed a few instances where chat history options/checkboxes are not rendered correctly
- Reduced notification sound file size

## v1.5.1 (30-03-2024)

**Fixed:**
- Fixed an issue where library css file is not injected for commonjs users
- Fixed an issue where tooltip mode may not be respected
- Fixed an issue where option boxes do not stretch on much larger chatbot window width
- Fixed an issue where overflowing text are not hidden for checkboxes/option boxes
- Fixed an issue where if `header` section is used, then `showAvatar` is a required property
- Fixed usage of oversized images (improves default chatbot load time!)

## v1.5.0 (29-03-2024)

**Added:**
- Added a new `animate` option to both `userBubble` and `botBubble` to easily toggle animations on and off for them

**Fixed:**
- Fixed an issue where empty chat bubbles from stream messages are being saved to chat history

**Miscellaneous:**
- As of this version (**1.5.0**), it is no longer necessary to import `react-chatbotify.css` file in your projects (injected implicitly). Keeping the import statement will not cause any issues currently but this will be a **breaking change** in version **2.0.0**. It is recommended to remove the import statement as soon as possible and the documentation website has also been updated to reflect this change.

## v1.4.0 (22-03-2024)

**Added:**
- A new `chatWindow` section has been added into the [**Configurations**](https://react-chatbotify.com/docs/introduction/bot_options#configurations) category with the following default values:

chatWindow: { showScrollbar: false, autoJumpToBottom: false, showMessagePrompt: true, messagePromptText: "New Messages ↓", messagePromptOffset: 30, } ` Explanations for what each property does can be found on the documentation website.

Fixed:

  • Fixed an occasional issue where stream messages do not autoscroll when user is at the bottom of the chat
  • Fixed an issue where users can interrupt the start block if it is streaming
  • Fixed a bug where users can pinch-zoom the chat window on mobile devices to cause it to be distorted
  • Fixed a rare bug where the chat window could be scrolled out of view
  • Fixed a longstanding issue where playing notification sounds on mobile devices causes media controls to appear in notifications tray

Note:

Initially planned for only bug fixes, I eventually added a whole new chatWindow section simply because I felt there were many small areas that could use enhancements (hiding the scrollbar, showing new message prompts instead of forcing users to the bottom etc). This led to version 1.4.0 which was entirely focused on cleaning up the imperfections from the several changes that have been made in the last few releases.

v1.3.2 (16-03-2024)

Fixed:

  • Fixed an issue where chat window auto-scrolling does not work for streamed messages
  • Fixed an issue where loading chat history caused current scroll position to shift
  • Fixed an issue where extremely long words get abruptly cut-off at the tail end of the message bubble

v1.3.1 (13-03-2024)

Added:

  • Added simStream and streamSpeed options for userBubble to be consistent with botBubble

Fixed:

  • Fixed an issue where users can quickly click on options or checkboxes in rapid succession resulting in multiple inputs
  • Fixed an issue where simulating stream messages would ignore the blockSpam option

v1.3.0 (12-03-2024)

Added:

  • Added simStream and streamSpeed options within botBubble to simulate streaming of messages
  • Added params.streamMessage parameter that allows real-time streaming of messages (great for integration with LLMs)

Modified:

  • The isUser field within Message component has been replaced with sender.
  • Both params.injectMessage and newly added params.streamMessage are now async functions (previously, params.injectMessage was non-async)

Miscellaneous:

  • Internally, logic for chat history, notifications and a few other minor areas have been updated to support stream messages

Note:

The documentation website has been updated to reflect all the latest information. A possible "breaking" change would be params.injectMessage which is now async. Depending on your existing usage, there might not be a need to make any changes. However, if you are using multiple params.injectMessage in quick succession, this could mean multiple messages are being sent at once without the use of await.

v1.2.0 (12-02-2024)

Fixed:

  • Fixed chatbot window resizing on mobile devices (previously window is out of view on some devices/browsers)
  • Fixed chatbot window orientation (previously chatbot would not re-orientate on phone rotation)

Note:

The above fixes are important for users who wish to properly support the chatbot on mobile devices. While there has been significantly more mobile view tests done for these fixes, it is near-impossible to exhaustively run through all devices/browsers. Should anyone still encounter issues with mobile view, please do not hesitate to reach out.

v1.1.0 (28-01-2024)

Added:

  • Added support for enforcing & showing character count/limit via the following options:
    • chatInput.showCharacterCount: false
    • chatInput.characterLimit: -1
  • Added support for styling the above character limit display via the following styles:
    • characterLimitStyle
    • characterLimitReachedStyle

Note:

The above additions have been updated on the documentation website for reference.

v1.0.6 (10-09-2023)

Fixed:

  • Fixed async file uploads

Miscellaneous:

  • Disabled speech recognition on unsupported browsers (e.g. Opera)

v1.0.5 (31-08-2023)

Fixed:

  • Fixed missing support for user defined async functions (important fix if you wish to make use of API calls and wait for completion)

v1.0.4 (13-08-2023)

Fixed:

  • Fixed module export (imports by consumers should work properly for both cjs and mjs)

v1.0.3 (05-08-2023)

Added:

  • Added desktopEnabled and mobileEnabled options under the theme section to allow developers to control chatbot visibility based on platform

Fixed:

  • Fixed a bug with distorted layout for embedded chat windows on mobile

v1.0.2 (03-08-2023)

Fixed:

  • Fixed missing export in package.json

v1.0.1 (03-08-2023)

Miscellaneous:

  • Cleanup dist folder (halved the build size)
  • Cleanup unused exports
  • Cleanup documentation and configurations

v1.0.0 (02-08-2023)

Added:

  • Initial Release