View as Markdownllms.txt

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

ChangeWhat to do
appVersion is required in useInitializeMove it out of EmbedProvider into useInitialize({ apiKey, appVersion }). The provider prop is now an override only.
navigationRef is required for the widget to appearPass the same ref to EmbedProvider and NavigationContainer. Without it the button never shows and startCall() fails.
Do not call LiveKit's registerGlobals() yourselfRemove it from index.jsuseInitialize calls it; a second call duplicates native event listeners.
iOS module renamedimport livekit_react_native and LivekitReactNative.setup() (lowercase "k") in AppDelegate.swift — the old import LiveKitReactNative no longer resolves.
Android permissions now merged by the SDKRemove 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 changedReplace -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.86Hermes 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 (stableId targeting via testID) and can tap, type, select, scroll, and highlight, with action verification. Sensitive-field controls: secureTextEntry (never captured, agent refuses to touch) and nativeID="embed-redact-…" (value masked).
  • Widget visibility systemshowOnAllScreens, includeScreens, excludeScreens, endCallWhenHiddenByVisibility, embedButtonContinuity, embedButtonDelayMs, and grouped embedButtonVisibilityConfig (per-group delay/inset/continuity).
  • Agent lifecycle events — one embedOnAgent subscription 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_DISCONNECTED are deprecated aliases.
  • Automatic click/press tracking — taps on Pressable and the Touchable family emit ANALYTICS_DATA events named from the element's id/name prop (<id>_pressed).
  • Manual controlsstartCall/endCall/isCallActive, pauseAgent/resumeAgent, expandWidget/collapseWidget, EmbedLogout, checkPermissions/openAppSettings, and setScreenMatching (alias/ancestor/structure screen matching).
  • Screenshot consent propssessionScreenshotEnabled / passiveScreenshotEnabled (both default false, double consent with a backend flag).

Fixed / clarified

  • startCall() returns false only when the widget is hidden or unmounted. A missing USER_DATA no longer rejects — the token request aborts while the promise resolves true, so observe AGENT_CONVERSATION_STARTED for the real outcome.
  • USER_DATA is persisted only after the backend accepts it — re-send it if it was first sent offline.
  • SCREEN_STATE events are analytics tags only; they do not drive widget visibility or UI capture.
  • excludeScreens is consulted only in showOnAllScreens mode; in includeScreens mode the allow-list alone decides.

Upgrade steps: 1.0.35 → 1.1.0

  1. npm install @revrag-ai/embed-react-native@^1.1.0, then re-pin peers per the Dependency & Compatibility Guide and run pod install.
  2. Move appVersion into useInitialize; remove it from EmbedProvider.
  3. Ensure navigationRef is passed to both EmbedProvider and NavigationContainer.
  4. Delete any registerGlobals() call from index.js.
  5. Update AppDelegate.swift to import livekit_react_native / LivekitReactNative.setup().
  6. Remove manually declared Android audio permissions and update the ProGuard keep rule.
  7. 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