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

Upgrade to v2

v2 of the React Native SDK is in beta. This page tracks what you have to change when moving from v1, and it is short: the only breaking change so far is in the translation layer, and it affects you only if you translated the SDK.

Install the beta

v2 publishes to the beta npm tag. v1 keeps latest, so an unpinned install stays on v1.

yarn add @stream-io/video-react-native-sdk@beta

The optional native packages are on their own beta line and need the tag too:

yarn add @stream-io/noise-cancellation-react-native@beta
yarn add @stream-io/video-filters-react-native@beta
yarn add @stream-io/react-native-callingx@beta

Installing the latest build of any of those alongside the v2 beta pulls the v1 line and reports an unmet peer dependency. That is the most common way to get a confusing install error while trying the beta.

@stream-io/react-native-webrtc is versioned independently and is not part of this split, so it has no beta tag. Install it without one.

What has changed so far

The 2.0 major was opened so the v2 line could release independently of v1, not because the API broke. Apart from translations, your v1 integration compiles and runs against the beta as-is.

The design-token work currently landing in the React SDK does not touch React Native theming, which has its own theme layer.

Translations moved to a shared runtime

The SDK now uses @stream-io/i18n, the translation runtime shared with Stream Chat, and translation keys are namespaced identifiers instead of the English text:

t("Incoming Call..."); // v1
t("ringingCall.incoming.title", "Incoming Call..."); // v2

The second argument is the English copy, written at the call site. That is why the SDK no longer ships an en.json or a translations export: a key missing from your dictionary renders that inline English rather than a raw key.

If you never touched i18n, there is nothing to do. English is unchanged - every string renders exactly as it did in v1.

If you did translate the SDK

Warning:

Re-keying is not optional, and it fails quietly. An old key never matches, so your override silently stops applying and the SDK's English renders instead - no error, no warning, nothing in the console. Type your dictionaries as TranslationDictionary to turn that into a compile error.

Removed Replacement
translationsOverrides translations - registers over the defaults instead of replacing
fallbackLanguage removed - use i18nextConfigOverrides: { fallbackLng }
StreamI18n Streami18n - different class, different options
StreamI18nProvider removed - StreamVideo mounts the translation context
TranslationsMap Record<string, LooseTranslationDictionary>
TranslationLanguage, TranslatorFunction removed - use string and StreamTFunction
the translations export, en.json removed - English is inline at each call site
useI18n().i18n removed - useI18n() returns { t, tDateTimeParser }

The old-to-new key mapping is published as i18n-2.0-key-map.json in the SDK repository, split by platform - use the reactNative half. Most rows are a straight rename; a handful are not, and those carry a note explaining what to do.

Note that translationsOverrides replaced the SDK's dictionary in v1 rather than merging with it, so supplying one German string dropped the rest. If you worked around that by spreading the SDK's translations.en back into yours, delete the spread - translations merges, and a partial dictionary is safe.

The i18n guide covers the new API in full.

What to expect during the beta

Breaking changes land incrementally rather than all at once, so treat this page as the running list and re-read it when you bump. Each entry will name the version it landed in and the change you have to make.

If you hit something that behaves differently and is not listed here, that is worth reporting: an unlisted break is a bug in this page as much as in the SDK.

Staying on v1

v1 is maintained on its own release line and stays on the latest tag. If you are not ready to move, pin @stream-io/video-react-native-sdk@latest and switch this page to v1 with the version picker above. The per-version upgrade guides for the 1.x line live there.

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>