# React Native Release Notes > Release notes for @revrag-ai/embed-react-native — what changed in each release, with upgrade steps. URL: /embed/integration/react-native-releases Markdown: /embed/integration/react-native-releases.md # React Native SDK — Release Notes [#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](https://www.npmjs.com/package/@revrag-ai/embed-react-native). *** ## 1.1.0 [#110] 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](#upgrade-steps-1035--110) below. ### Breaking changes [#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](/embed/integration/react-native-dependencies). | ### New [#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 system** — `showOnAllScreens`, `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 (`_pressed`). * **Manual controls** — `startCall`/`endCall`/`isCallActive`, `pauseAgent`/`resumeAgent`, `expandWidget`/`collapseWidget`, `EmbedLogout`, `checkPermissions`/`openAppSettings`, and `setScreenMatching` (alias/ancestor/structure screen matching). * **Screenshot consent props** — `sessionScreenshotEnabled` / `passiveScreenshotEnabled` (both default `false`, double consent with a backend flag). ### Fixed / clarified [#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 [#upgrade-steps-1035--110] 1. `npm install @revrag-ai/embed-react-native@^1.1.0`, then re-pin peers per the [Dependency & Compatibility Guide](/embed/integration/react-native-dependencies#2-recommended-versions) 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 [#1035-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. *** Installation, native setup, **`useInitialize`**, **`EmbedProvider`**, events, Action Intelligence, and troubleshooting. *** ## Support [#support] * **Docs:** [https://docs.revrag.ai](https://docs.revrag.ai/) * **Email:** [contact@revrag.ai](mailto:contact@revrag.ai) * **Dashboard:** [app.revrag.ai](https://app.revrag.ai)