React Native Voicebot UI Kit — Release Notes
Version history for enx-voice-bot-react-native, the official voice bot calling
client for React Native. Releases are shown in reverse chronological order — latest first.
First general-availability release of the React Native SDK, ported from the existing EnableX
Flutter voice bot SDK to keep call-control and audio behavior consistent across platforms.
Package: enx-voice-bot-react-native
Highlights
- Outbound voice bot calling via a single REST call (
POST /v2token) that returns a voice session ID and a WebSocket URL. - Real-time, full-duplex audio streaming over WebSocket using Pipecat protobuf frames (16 kHz mono microphone upload, bot audio playback).
- Native audio bridge for Android and iOS handling low-latency microphone capture and speaker playback.
- Automatic microphone permission request/verification using
react-native-permissionsbefore a call starts. - Mute / unmute microphone during an active call.
- DTMF digit sending for calls where the bot indicates a keypad is available.
- Speaking-state callbacks so the host app can show “user speaking” / “bot speaking” indicators.
- Selectable QA and Production environments (
EnxSdkConfig), or a fully custom environment viaEnxSdkConfig.fromEnvironment(). - A runnable ExampleApp demonstrating connect, disconnect, mute, and live event logging.
Fixes Included in This Release
The following issues found during iOS/Android bring-up were resolved prior to this release:
- Fixed an Android issue where call audio was not reliably routed to the device speaker (audio routing /
AudioManagercommunication-device handling). - Fixed iOS build and native-module integration issues encountered when installing the SDK into a host application.
- Corrected the iOS CocoaPods podspec/Pod file configuration so
pod installcompletes cleanly in host apps.
Known Issues and Limitations
- Outbound calls only — the SDK initiates calls to a virtual number; there is no inbound call handling.
- One active call per
EnxVoiceClientinstance; create a new instance (or fully disconnect) before starting another call. - No automated test suite is published with this release (
npm testis a placeholder). - DTMF sending requires the bot session to report keypad support; otherwise
sendDtmf()returnsfalse. - Verbose debug logging is enabled by default under the QA configuration; use
EnxSdkConfig.productionor setenableLogging: falsefor release builds.
Compatibility
| Requirement | Supported version |
|---|---|
| React | >= 18.0.0 |
| React Native | >= 0.71.0 (validated with the bundled ExampleApp on 0.73.0) |
| iOS deployment target | 15.0 or later |
| Android | Standard React Native 0.71+ Android toolchain; Gradle autolinking |
| Node.js | >= 18 (for building/running the ExampleApp) |
Required Plug-ins
These packages are installed automatically as dependencies of enx-voice-bot-react-native. No manual installation is required beyond npm install (and pod install on iOS).
| Package | Type | Purpose |
|---|---|---|
react-native-permissions | Runtime dependency | Requests and checks the microphone permission before a call starts. |
react-native-live-audio-stream | Runtime dependency | Captures raw PCM microphone audio for streaming to the bot. |
protobufjs | Runtime dependency | Encodes/decodes Pipecat protobuf audio and control frames sent over the WebSocket. |
eventemitter3 | Runtime dependency | Lightweight event emitter used internally for native/WebSocket event plumbing. |
react, react-native | Peer dependency | Host application's React and React Native runtime. |
Required Permissions
The SDK requests the microphone permission at runtime and requires the following platform declarations in the host application. See the Developer Guide for the exact manifest and Info.plist entries.
| Platform | Permission | Reason |
|---|---|---|
| Android | android.permission.RECORD_AUDIO | Capture microphone audio to send to the voice bot. |
| Android | android.permission.MODIFY_AUDIO_SETTINGS | Route call audio to the speaker/earpiece via AudioManager. |
| Android | android.permission.INTERNET | REST and WebSocket connectivity to the EnableX voice service. |
| iOS | NSMicrophoneUsageDescription | Required Info.plist usage-description string shown when requesting microphone access. |
Upgrade Notes
- This is the first published version; there are no breaking changes to migrate from.
- When upgrading in the future, re-run
pod installin the iOS project after bumping the package version, since native iOS sources ship inside the pod. - Review
EnxSdkConfigusage before release builds — useEnxSdkConfig.production(orfromEnvironmentwithenableLogging: false) to disable verbose SDK logging.
Support
For integration support or to report an issue, contact your EnableX account representative or visit the EnableX developer portal.