Platform docs
Auth, users, webhooks & more
Info:
This is beta documentation for Stream Video React Native SDK v2. For the latest stable version, see the latest version (v1).

Transcriptions

Transcription provides call transcripts for users. The Stream React Native Video SDK includes built-in transcription support.

Best Practices

  • Check feature availability - Hide transcription UI when feature is disabled
  • Show transcription status - Indicate when transcription is active
  • Handle permissions - Verify user has permission to control transcription
  • Consider privacy - Inform participants when transcription is enabled

The Call object provides transcription control via call.state.settings.transcription:

  • available - Feature can be enabled
  • disabled - Feature unavailable (hide related UI)
  • auto-on - Automatically enabled when user connects

Check current transcription status via call.state.transcribing.

Use the utility hooks:

import { useCallStateHooks } from "@stream-io/video-react-native-sdk";

const { useCallSettings, useIsCallTranscribingInProgress } =
  useCallStateHooks();

// access to the transcription settings
const { transcription } = useCallSettings();

// whether transcription is on or off
const isTranscribing = useIsCallTranscribingInProgress();

Build a toggle button that shows/hides based on feature availability:

Example:

import { Pressable, Text } from "react-native";
import {
  useCall,
  useCallStateHooks,
  TranscriptionSettingsResponseModeEnum,
} from "@stream-io/video-react-native-sdk";

export const MyToggleTranscriptionButton = () => {
  const call = useCall();
  const { useCallSettings, useIsCallTranscribingInProgress } =
    useCallStateHooks();

  const { transcription } = useCallSettings() || {};
  const isTranscribing = useIsCallTranscribingInProgress();

  if (transcription?.mode === TranscriptionSettingsResponseModeEnum.DISABLED) {
    // transcriptions are not available, render nothing
    return null;
  }
  return (
    <Pressable
      onPress={() => {
        if (isTranscribing) {
          call?.stopTranscription().catch((err) => {
            console.log("Failed to stop transcriptions", err);
          });
        } else {
          call?.startTranscription().catch((err) => {
            console.error("Failed to start transcription", err);
          });
        }
      }}
    >
      <Text>
        {isTranscribing ? "Stop transcription" : "Start transcription"}
      </Text>
    </Pressable>
  );
};
Add Chat to my app: getstream.io/SKILL.md

The fastest way to build with Stream. Start a new project or improve an existing one. Full CLI and documentation integration out of the box.


Ask your agent:

/stream Build me a Social App with Feeds and Moderation.
/stream Any livestream calls running?
/stream Video React Native v2: <Your Question>