React Native SDK — Release Notes
@revrag-ai/embed-react-native · release history, newest first. Install the latest with npm install @revrag-ai/embed-react-native@latest; confirm the current version on npm.
1.1.0
The Action Intelligence release — the agent can now see and act on your screens — plus a stricter, more predictable integration contract. Upgrading from 1.0.35 requires a few code changes; work through the upgrade steps below.
Breaking changes
| Change | What to do |
|---|---|
appVersion is required in useInitialize | Move it out of EmbedProvider into useInitialize({ apiKey, appVersion }). The provider prop is now an override only. |
navigationRef is required for the widget to appear | Pass the same ref to EmbedProvider and NavigationContainer. Without it the button never shows and startCall() fails. |
Do not call LiveKit's registerGlobals() yourself | Remove it from index.js — useInitialize calls it; a second call duplicates native event listeners. |
| iOS module renamed | import livekit_react_native and LivekitReactNative.setup() (lowercase "k") in AppDelegate.swift — the old import LiveKitReactNative no longer resolves. |
| Android permissions now merged by the SDK | Remove manually added RECORD_AUDIO / MODIFY_AUDIO_SETTINGS — the SDK's manifest merges them (plus BLUETOOTH_CONNECT). Voice-only apps may strip camera with tools:node="remove". |
| ProGuard package changed | Replace -keep class com.revrag.embed.** with -keep class com.revragai.embedreactnative.** { *; }. WebRTC/LiveKit/Lottie ship their own consumer rules — drop those manual keeps. |
| Supported React Native narrowed to 0.76 – 0.86 | Hermes required. RN ≥ 0.82 needs the New-Architecture stack: Reanimated 4.5.2 + react-native-worklets + Gesture Handler 3.x, with react-native-worklets/plugin as the last Babel plugin. See the Dependency & Compatibility Guide. |
New
- Action Intelligence / UI capture — the agent reads the on-screen element tree (
stableIdtargeting viatestID) and can tap, type, select, scroll, and highlight, with action verification. Sensitive-field controls:secureTextEntry(never captured, agent refuses to touch) andnativeID="embed-redact-…"(value masked). - Widget visibility system —
showOnAllScreens,includeScreens,excludeScreens,endCallWhenHiddenByVisibility,embedButtonContinuity,embedButtonDelayMs, and groupedembedButtonVisibilityConfig(per-group delay/inset/continuity). - Agent lifecycle events — one
embedOnAgentsubscription for all events (AGENT_VISIBLE,AGENT_TAP_TO_OPEN/_CLOSE,POPUP_MESSAGE_VISIBLE,AGENT_CONVERSATION_STARTED/_ENDED,GEN_TOOL_TRIGGERED,MICROPHONE_PERMISSION_ALLOWED/_DENIED).AGENT_CONNECTED/AGENT_DISCONNECTEDare deprecated aliases. - Automatic click/press tracking — taps on
Pressableand the Touchable family emitANALYTICS_DATAevents named from the element'sid/nameprop (<id>_pressed). - Manual controls —
startCall/endCall/isCallActive,pauseAgent/resumeAgent,expandWidget/collapseWidget,EmbedLogout,checkPermissions/openAppSettings, andsetScreenMatching(alias/ancestor/structure screen matching). - Screenshot consent props —
sessionScreenshotEnabled/passiveScreenshotEnabled(both defaultfalse, double consent with a backend flag).
Fixed / clarified
startCall()returnsfalseonly when the widget is hidden or unmounted. A missingUSER_DATAno longer rejects — the token request aborts while the promise resolvestrue, so observeAGENT_CONVERSATION_STARTEDfor the real outcome.USER_DATAis persisted only after the backend accepts it — re-send it if it was first sent offline.SCREEN_STATEevents are analytics tags only; they do not drive widget visibility or UI capture.excludeScreensis consulted only inshowOnAllScreensmode; inincludeScreensmode the allow-list alone decides.
Upgrade steps: 1.0.35 → 1.1.0
npm install @revrag-ai/embed-react-native@^1.1.0, then re-pin peers per the Dependency & Compatibility Guide and runpod install.- Move
appVersionintouseInitialize; remove it fromEmbedProvider. - Ensure
navigationRefis passed to bothEmbedProviderandNavigationContainer. - Delete any
registerGlobals()call fromindex.js. - Update
AppDelegate.swifttoimport livekit_react_native/LivekitReactNative.setup(). - Remove manually declared Android audio permissions and update the ProGuard keep rule.
- Rebuild fully (
gradlew clean,pod install) and re-test a call on a real device.
1.0.35 and earlier
The pre–Action Intelligence line: floating voice-agent button (LiveKit), route tracking via EmbedProvider, and the four Embed.Event keys (USER_DATA, SCREEN_STATE, CUSTOM_EVENT, ANALYTICS_DATA). Supported React Native 0.70+. No UI capture, no agent actions, no visibility groups. If you are still on this line, upgrade via the steps above — 1.0.x is not maintained.
Support
- Docs: https://docs.revrag.ai
- Email: contact@revrag.ai
- Dashboard: app.revrag.ai