Releases: twilio/twilio-voice-react-native
1.6.1
1.6.1 (July 7, 2025)
Changes
Platform Specific Changes
Android
- Added Bluetooth permissions to the Twilio Voice RN SDK manifest.
Fixes
Platform Specific Fixes
Android
- Updated Audioswitch library to version
1.2.2
. This should fix missing Bluetooth audio devices on Android platforms.
1.6.0
1.6.0 (June 18, 2025)
Features
-
Added support for React Native applications using the New Architecture. If you are migrating your app from the Old Architecture to the New Architecture, and are already using the Twilio Voice React Native SDK, you will need to adjust your
MainApplication.java
file. Please see the updated Getting Started docs for Java or Kotlin.- If you are encountering this error:
java.lang.IllegalArgumentException: You can call getDefaultReactHost only with instances of DefaultReactNativeHost
when attempting to use this SDK with a NewArch application, please update your application logic in accordance with our updated Android Getting Started guides as linked above.
- If you are encountering this error:
1.5.0
1.4.0
1.4.0 (Feb 11, 2025)
Changes
Platform Specific Changes
Android
- Updated the Twilio Voice Android SDK dependency to
6.7.1
.
iOS
- Updated the Twilio Voice iOS SDK dependency to
6.12.1
.
1.3.0
1.3.0 (Dec 10, 2024)
Changes
-
Added a new API for customizing the displayed name for incoming calls in CallKit on iOS.
Seevoice.setIncomingCallContactHandleTemplate
and the associated API docs for more information. -
Added a new API for customizing the displayed name for outgoing, incoming, and answered call notifications on Android.
Seevoice.setIncomingCallContactHandleTemplate
andvoice.connect
for more information.
Fixes
- Fixed a scenario where posting feedback for a call with the
Echo
issue would not post correctly to Twilio Insights.
1.2.1
1.2.1 (Oct 31, 2024)
Features
Platform Specific Features
Android
- Added opt-out functionality for the built-in Firebase Messaging service.
Please see this document for more details.
Fixes
Platform Specific Fixes
Android
- Fixed crash issue where system restarts service without an Intent (intent == null).
1.2.0
1.2.0 (Sep 16, 2024)
Changes
Call Message Events (GA)
The Call Message Events feature in the Twilio Voice React Native SDK, previously released in 1.0.0
as Beta, is promoted to Generally Available (GA).
-
(Breaking) The error code for attempting to send a call message with a payload size exceeding maximum limits has changed from
31209
to31212
. -
The behavior of
call.sendMessage
has been changed to support futurecontentType
s.
Please see the API Docs for more information.
Platform Specific Changes
Android
- Now pulling version
6.6.2
of the Twilio Voice Android SDK.
iOS
- Now pulling version
6.11.2
of the Twilio Voice iOS SDK.
1.1.1
1.1.1 (Aug 28, 2024)
Changes
Platform Specific Changes
Android
- Bumped
minSdkVersion
to23
to match the latest versions of React Native.
Fixes
Platform Specific Fixes
Android
-
Fixed crash issue on API 34 when activity is not running in background or foreground and an incoming call is received.
-
Fixed some RTCStats members not available on Android. Specifically,
mos
,bytesSent
, andbytesReceived
.
1.1.0
1.1.0 (Aug 20, 2024)
Features
Platform Specific Features
Android
-
Added support for Android 34
-
Missing Android microphone permissions will now be gracefully handled.
When using the JS API,
callInvite.accept()
andvoice.connect()
will now reject the returned Promise with error31401
.When accepting an incoming call through the native notification, the analogous
31401
error can be caught by attaching a listener tovoice.on(Voice.Event.Error, ...)
. See the following example:voice.on(Voice.Event.Error, (error) => { // handle error if (error.code === 31401) { // show the end-user that they did not give the app the proper permissions } });
Fixes
Platform Specific Fixes
iOS
- Fixed Call Messages not being built with the passed
contentType
ormessageType
.
Changes
Call Message Events (Beta)
-
(Breaking) Removed
CallMessage.MessageType
andCallMessage.ContentType
enumerations and types.
Instead, those types have been replaced bystring
. -
(Breaking) Simplified the
Call
andCallInvite
API for sending call messages.Call.sendMessage
andCallInvite.sendMessage
now take a plain-JS object, or interface, as a parameter.
The following is an example of the updated API considering the above changes.
For outgoing calls:
const call = await voice.connect(...);
const outgoingCallMessage = await call.sendMessage({
content: { foo: 'bar' },
contentType: 'application/json',
messageType: 'user-defined-message',
});
For call invites:
voice.on(Voice.Event.CallInvite, (callInvite) => {
const outgoingCallMessage = await callInvite.sendMessage({
content: { foo: 'bar' },
contentType: 'application/json',
messageType: 'user-defined-message',
});
});
- Added new error codes. See the following table for details:
Error Code Description 31210 Raised when a Call Message is sent with an invalid message type. 31211 Raised when a Call Message is sent when the call is not yet ready to send messages. This can typically happen when the Call/CallInvite is not yet in a ringing state.
Platform Specific Changes
Android
- When permissions are not available, the SDK will now raise a new
PermissionsError
with code31401
when attempting to make an outgoing call
or when trying to accept an incoming call.
1.0.0
1.0.0 (Mar 25, 2024)
Twilio Voice React Native SDK has now reached milestone 1.0.0
and is Generally
Available (GA). Included in this version are the following.
Features
Call Message Events (Beta)
- Allow sending and receiving "user-defined" messages during an ongoing Voice Call and during a pending Call Invite.
- To send a CallMessage, and handle
sent
andfailure
cases:
const message = new CallMessage({
content: { key1: 'This is a messsage from the parent call' },
contentType: CallMessage.ContentType.ApplicationJson,
messageType: CallMessage.MessageType.UserDefinedMessage
});
const outgoingCallMessage: OutgoingCallMessage = await call.sendMessage(message);
outgoingCallMessage.addListener(OutgoingCallMessage.Event.Failure, (error) => {
// outgoingCallMessage failed, handle error
});
outgoingCallMessage.addListener(OutgoingCallMessage.Event.Sent, () => {
// outgoingCallMessage sent
});
- To
receive
a CallMessage:
call.addListener(Call.Event.MessageReceived, (message: CallMessage) => {
// callMessage received
});
Fixes
- Fixed and improved the docstrings for the
Voice
andCall
listeners. The descriptions of the events and listeners should now point to the correct docstrings. - Call quality warning events should now properly pass arguments to listener functions.
Changes
-
The API for
call.getInitialConnectedTimestamp()
has now changed.
Please see the API documentation here for details.
The methodcall.getInitialConnectedTimestamp()
now returns aDate
object.const call = voice.connect(...); const date = call.getInitialConnectedTimestamp(); const millisecondsSinceEpoch = date.getTime();
-
The API for Call Invite events has now changed.
The following events have been moved from the
Voice
class to theCallInvite
class:Voice#callInviteAccepted
is nowCallInvite#accepted
Voice#callInviteRejected
is nowCallInvite#rejected
Voice#callInviteNotificationTapped
is nowCallInvite#notificationTapped
Voice#cancelledCallInvite
is nowCallInvite#cancelled
Please see the
Voice
class API documentation here for details.Please see the
CallInvite
class API documentation here for details. -
Call Notifications can be customized on Android.
The following features regarding a call notificaiton can now be modified
- incoming/outgoing/answered call notification tray icon
- name of caller/or recipient
The incoming/outgoing/answered call notification tray icon can be changed by adding a drawable resources with the following id to your application
incoming_call_small_icon
for incoming call notificationsanswered_call_small_icon
for answered call notificationsoutgoing_call_small_icon
for outgoing call notifications
The name of the caller/or recipient of a call in the notification can be set by adding the following string resources with the following ids to your application.
incoming_call_caller_name_text
for incoming call notificationsoutgoing_call_caller_name_text
for outgoing call notificationsanswered_call_caller_name_text
for answered call notifications
NOTE: Forincoming_call_caller_name_text
&answered_call_caller_name_text
, the substring${from}
will be replaced with the caller and foroutgoing_call_caller_name_text
, the substring${to}
will be replaced with the recipient of the call (if available, defaulting to "unknown").
-
Custom functionality around the
displayName
TwiML parameter has been removed.In previous versions of the SDK, passing a custom TwiML parameter
displayName
would override the notification on Android platforms. Now, this functionality has been removed and notification customization is handled with the above features.
Platform Specific Changes
Android
- Call timestamp now in simplified ISO-8601 format, not stored as a double from epoch.
- Uses system provided notification styles for incoming & ongoing calls. This insures visual consistency between devices.
- Fixed issue where call records were not being removed after call was ended.
iOS
- The call connected timestamp is now in simplified ISO-8601 format.
- A new method
CallInvite.updateCallerHandle()
has been added. Use this method to update the caller's name displayed in the iOS system incoming call UI. This method is specific to iOS and unavailable in Android.