Agentforce Voice lets you build voice-enabled agents that manage complex conversations in real time. Set up Agentforce Voice for your React Native mobile app with these steps.
In React Native, you enable voice entirely from JavaScript through a feature flag — you don’t write native Swift or Kotlin. The voice native modules are already bundled with the @salesforce/react-native-agentforce bridge and registered for you. The native SDK renders and drives the voice UI; the bridge exposes no separate JavaScript voice view or voice events.
Availability
Through the React Native bridge, Agentforce Voice is currently supported for Employee Agents only, on both iOS and Android. Voice for Service Agents (the Telephony and Enhanced Chat v2 flows described in the iOS and Android guides) is not yet available in React Native. The React Native bridge tracks an earlier release of the native SDKs, and Service Agent voice depends on native SDK capabilities that land in a later version. Service Agent voice support will follow once the bridge adopts a newer SDK.
Setting enableVoice: true for a Service Agent (type: 'service') has no effect in the current bridge — voice is forced off for Service Agents on both platforms.
A voice-enabled Employee Agent configured in Agentforce Studio.
A React Native app that already integrates the Agentforce React Native bridge for an Employee Agent, including the Salesforce Mobile SDK authentication flow. See Employee Agent Authentication.
Install the Voice Module
The voice native modules ship with the bridge — you don’t add a separate npm package. You only need to make sure the underlying native voice SDKs resolve correctly in your host app.
Android
The bridge pulls in the Android voice SDK automatically (com.salesforce.android.agentforcesdk:agentforce-sdk-voice). Add the RECORD_AUDIO permission to your host app’s android/app/src/main/AndroidManifest.xml:
The bridge declares the AgentforceVoice and LiveKitClient pods. In your host app’s Podfile:
Add the LiveKit spec source alongside your other sources.
Add LiveKit Spec Source
1source 'https://github.com/livekit/podspecs.git'
Reference the LiveKit pod so CocoaPods resolves it from the correct source.
Add LiveKit Pod
1pod 'LiveKitClient'
Add a pre_install hook to correct the framework module name. AgentforceVoice.xcframework links against @rpath/LiveKit.framework/LiveKit, but CocoaPods builds the pod as LiveKitClient.framework by default.
LiveKit Module Name Fix
1pre_install do |installer|2 installer.pod_targets.each do |pod|3 if pod.name == 'LiveKitClient'4 pod.root_spec.attributes_hash['module_name'] = 'LiveKit'5 end6 end7end
Add the microphone and speech usage descriptions to your app target’s Info.plist.
Add Microphone and Speech Permissions
1<key>NSMicrophoneUsageDescription</key>2<string>Permission is required to access your microphone.</string>3<key>NSSpeechRecognitionUsageDescription</key>4<string>Permission is required to access your microphone for speech processing.</string>
Run pod install from your project’s ios directory.
If you encounter a “Voice module not available” error on iOS, confirm that the LiveKit spec source and the pre_install module-name override in steps 1 and 3 are present. Without them, the voice framework fails to link.
Enable Voice in Configuration
Set enableVoice: true in the feature flags you pass to AgentforceService.configure() for your Employee Agent. The flag defaults to false, so you must opt in explicitly.
After voice is enabled, launch the conversation as usual. The native SDK presents the built-in voice UI within the chat experience — no additional React Native view or event wiring is required.
Launch Conversation
1await AgentforceService.launchConversation();
Build and run your app to start a voice-enabled Employee Agent conversation.