---
title: "Connect with React Native"
description: "Connect a React Native or Expo development build and verify native Experience delivery."
sidebar:
  label: "React Native"
search:
  tags: ["sdk", "setup", "react-native"]
  keywords: ["Expo", "TypeScript", "React hooks", "install", "initialize", "integration_test"]
---

The React Native SDK displays native Nuxie Experiences in your iOS and Android app. A TypeScript client and React hooks let you send events, react to feature access, and handle actions from an Experience. Use a bare React Native app or an Expo development build.

1. **Installation**

    <span id="get-the-package" />

    ## Installation [toc]

    Prepare the package from the [SDK repository](https://github.com/nuxieai/nuxie-react-native). This requires Node 24, pnpm 11, Bun, Xcode/CocoaPods, JDK 17, and the Android SDK/NDK:

    ```sh title="Build the SDK package"
    git clone https://github.com/nuxieai/nuxie-react-native.git
    cd nuxie-react-native
    pnpm install --ignore-workspace
    pnpm --ignore-workspace run prepare:native
    pnpm --ignore-workspace run build
    pnpm --ignore-workspace run check:package
    npm pack
    ```

    Install the tarball printed by `npm pack` in your app. For example, run `npm install /absolute/path/to/the-package.tgz`.

    Use React Native 0.87.1 or Expo 57 / React Native 0.86.3, with the New Architecture and React 19.2.3. Target iOS 16.4+ or Android 7+; Android supports arm64-v8a and x86_64.

    For bare React Native, install pods and rebuild. For Expo, use a development build; Expo Go cannot load the native SDK. Nuxie autolinks without an Expo config plugin.

    <span id="configure-once" />

2. **Initialize**

    ## Initialize [toc]

    Copy your app's public keys from **Connect your app**. Use `pk_test_` keys in development builds and `pk_live_` keys in release builds. Keep the default service environment for both; the key selects preview or live content.

    Configure the client during application startup:

    ```typescript title="App startup" {5-6}
    import { nuxie } from '@nuxie/react-native';

    await nuxie.configure({
      apiKeys: {
        ios: 'YOUR_IOS_PUBLIC_KEY',
        android: 'YOUR_ANDROID_PUBLIC_KEY',
      },
    });
    ```

    You can also pass the configuration to `NuxieProvider`. The provider renders children while setup runs; use `useNuxieStatus()` to wait for `configured`.

    <span id="check-the-connection" />

    Run your app on a device or simulator. **Connect your app** shows **Connected** after Nuxie receives a request from the SDK.

    <span id="prepare-the-experience-you-will-test" />
    <span id="add-a-test-trigger" />

3. **Trigger an Experience**

    ## Trigger an Experience [toc]

    [Publish an Experience](/docs/guides/publishing) for this app with the event trigger `integration_test`. Set its re-entry rule to **Every time** if you want to show it repeatedly while integrating. Add this call to a button handler after setup:

    ```typescript
    import { nuxie } from '@nuxie/react-native';

    await nuxie.trigger('integration_test');
    ```

    Tapping the button sends the event. Nuxie displays the Experience when the customer matches its audience and delivery rules. For an existing Experience, replace `integration_test` with its published event name.

    <span id="show-the-experience" />

    **Connect your app** changes to **Shown** after the SDK reports that the Experience appeared.

    <span id="try-a-remote-update" />

4. **Update an Experience**

    ## Update an Experience [toc]

    Edit the Experience and publish your changes. Bring the app back to the foreground to fetch the update, then send the event again with a customer who can re-enter. New Journeys use the updated version; a Journey already in progress keeps the version it started with. The app code stays the same.

    <span id="continue" />

    See the [SDK reference](/docs/reference/react-native) for identity, feature access, and App Actions. [Delivery](/docs/guides/delivery) explains trigger and audience configuration.
