React Native Chatbot UI Kit — Release Notes
Version history for dialogs_chatbotav_reactnative, the official pre-built chat and
audio/video-calling UI Kit for React Native. Releases are shown in reverse chronological order
— latest first.
This is the first public release of the React Native Chatbot UI Kit. It packages the chat
widget, the connection controller, and the native video-calling bridge into a single
installable npm package.
Package: dialogs_chatbotav_reactnative
Chat Experience
- Drop-in chat components:
EnxChatWidget(embeddable) andEnxChatScreen(full screen with title bar and back button). - Message bubbles for text, images, video, files, calendar prompts, single/multi-select suggestions, and action buttons.
- Markdown rendering inside bot messages (links, emphasis, lists) via
ChatMarkdown. - Rich link/company preview cards for URLs shared by the bot.
- Typing indicator, day separators, and WhatsApp-style centered system notices (handover, agent assigned, etc.).
- Two ready-made color themes (
defaultTheme,mobileClassicTheme) plus full theme overrides.
Messaging & Attachments
- Send text, single/multi-select suggestions, and files (camera, gallery, or document picker) to the bot.
- HTTP-cache-aware image loading and disk-cached video playback for repeat views.
- Automatic de-duplication of echoed user messages coming back from the bot connection.
Calling
- Audio/video call entry points in the input bar (
showCallingOptions,onAudioCall,onVideoCall). - Bot-initiated video sessions: full-screen native video call on iOS, in-app WebView overlay on Android, or a native EnableX UIKit room view when the bot hands off to click-to-call.
- Automatic camera/microphone permission requests immediately before a call starts.
Calling and click-to-call are powered by three native modules that must all be present and built correctly: react-native-webview (signaling / Android overlay), enx-rtc-react-native (the WebRTC media engine), and enx-uikit-react-native (the native call screen). See the Developer Guide for details on all three.
Platform Bridge
- iOS: native WKWebView bridge (
EnxChatBridge) — no React Native WebView is rendered on this platform. - Android: a hidden
react-native-webviewinstance bridges the chat page to native code. EnxChatController: a framework-agnostic connection/message controller you can own and drive yourself, independent of the widget UI.
Developer Experience
- Full TypeScript types for every exported component, hook, and data model.
useControllerVersionhook for driving custom UI off anEnxChatController.
Platform Support
| Platform / Tool | Minimum Version |
|---|---|
| React | 18.0 or later |
| React Native | 0.76 or later (built and tested against 0.84) |
| iOS (native) | iOS 15.0 or later |
| Android (native) | minSdkVersion 24 (Android 7.0) or later, compileSdk/targetSdk 35 |
| Node.js | 20.19.4+ recommended; the sample app targets Node 22 |
| Architecture | React Native New Architecture (Fabric/TurboModules) — mandatory on RN 0.82+ |
Required Plug-ins / Dependencies
Installing dialogs_chatbotav_reactnative pulls in the following native modules automatically as regular npm dependencies. Every one of them contributes native (Kotlin/Swift/Obj-C) code to your app, so a full clean rebuild is required after installing or upgrading the SDK.
| Package | Purpose |
|---|---|
react-native-webview | Carries chat/call signaling and renders the Android in-app video overlay. |
enx-rtc-react-native | EnableX real-time communication (WebRTC) engine — establishes and manages the audio/video media session. |
enx-uikit-react-native | EnableX native calling UI — the full native call screen used for click-to-call / native UIKit sessions. |
react-native-image-picker | Camera and photo library attachments. |
@react-native-documents/picker | Document/file attachments. |
@react-native-community/datetimepicker | Calendar / date-selection prompts from the bot. |
react-native-svg | Vector icons and inline SVG content. |
react-native-video | Inline and full-screen video playback. |
react-native-markdown-display | Markdown rendering in bot messages. |
lucide-react-native | Icon set used by the input bar and attachment sheet. |
enx-uikit-react-native declares react-native-gesture-handler (≥ 2.24.0), react-native-reanimated (≥ 4.2.0), @react-navigation/native and @react-navigation/stack (≥ 7.0.0) as peer dependencies — install these in your app if you use native (click-to-call / UIKit) video sessions.
Required Permissions
Full setup instructions are in the Developer Guide — Required Permissions section.
| Platform | Permissions |
|---|---|
| Android (AndroidManifest.xml) | INTERNET, CAMERA, RECORD_AUDIO, MODIFY_AUDIO_SETTINGS, ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION (if used) |
| iOS (Info.plist) | NSCameraUsageDescription, NSMicrophoneUsageDescription, NSLocationWhenInUseUsageDescription, NSPhotoLibraryUsageDescription, NSPhotoLibraryAddUsageDescription |
Important: a missing Info.plist usage-description key causes an immediate crash on iOS the first time that capability is used — not a silently-denied prompt.
Known Issues in Upstream Dependencies
These are pre-existing issues in third-party packages this SDK depends on. They are documented here so you are not blocked by them; workarounds are covered in the Developer Guide Troubleshooting section.
- Android build fails with a CMake “add_subdirectory” error. On React Native New Architecture builds,
enx-uikit-react-native's Android build script incorrectly registers itself for native TurboModule/Fabric codegen even though it ships no codegen spec files. Workaround: usepatch-packageto remove the offending Gradle block fromenx-uikit-react-native— see the Developer Guide. - Android build fails with “Duplicate class” errors.
enx-rtc-react-nativepulls in the long-abandonedandroid.arch.lifecycle:extensionslibrary, whose classes duplicate ones already shipped by AndroidX, causing a “Duplicate class” failure at build time. Workaround: exclude the dependency in your app-levelbuild.gradle. - TypeScript error referencing
react-native-webview'sWebViewtype.react-native-webviewversions 13.16.2 and later ship a typing regression that breaks any code referencing the bareWebViewtype (for exampleuseRef<WebView>()). This SDK pinsreact-native-webviewto the last known-good version, 13.16.1 — if your app installs a different version, make sure it resolves to 13.16.1 as well.
Breaking Changes
None — this is the first public release.
Support
For integration help, credentials, or to report an issue with this SDK, contact your EnableX account team or visit developer.enablex.io.