Set Up Agentforce Voice for React Native

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 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.

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.

This page covers Employee Agent voice setup. For Service Agent voice on native apps, see Set Up Agentforce Voice for iOS and Set Up Agentforce Voice for Android.

Before you start, you need:

  • 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.

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.

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:

  1. Add the LiveKit spec source alongside your other sources.
  1. Reference the LiveKit pod so CocoaPods resolves it from the correct source.
  1. 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.
  1. Add the microphone and speech usage descriptions to your app target’s Info.plist.
  1. 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.

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.

You can also persist feature flags independently of a configure call:

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.

Build and run your app to start a voice-enabled Employee Agent conversation.