Skip to main content

React Native SDK - One-page setup

Create your app and get the key​

  1. Log in to testernest.com and create an app.
  2. Copy the publicKey from your app settings.
  3. Copy the baseUrl from SDK Setup for your environment.

1) Install​

npm i @testernest/react-native
# or
yarn add @testernest/react-native

Current version: 0.1.4.
Android-only. Minimum supported versions: Android SDK 21+, Kotlin 1.6+.

2) Permissions​

No extra permissions required.

3) Initialize​

Initialize once at app startup and mount the connect prompt:

import {init, TesternestConnectPrompt} from '@testernest/react-native';

await init({
publicKey: 'YOUR_PUBLIC_KEY',
baseUrl: 'https://testernest.com',
});

export default function App() {
return (
<>
<MainApp />
<TesternestConnectPrompt
publicKey="YOUR_PUBLIC_KEY"
baseUrl="https://testernest.com"
autoInit={false}
/>
</>
);
}

4) Connect tester (6-digit code)​

Testers enter a 6-digit code, and the SDK claims/connects the device:

import {connectTester} from '@testernest/react-native';

await connectTester('123456');

5) Track screens + events (minimal)​

Keep screen context synced and optionally emit a screen_view event:

import {NavigationContainer, createNavigationContainerRef} from '@react-navigation/native';
import {setCurrentScreen, track} from '@testernest/react-native';
import {useRef} from 'react';

const navigationRef = createNavigationContainerRef();

function AppNavigation() {
const routeNameRef = useRef<string | undefined>();

return (
<NavigationContainer
ref={navigationRef}
onReady={() => {
const name = navigationRef.getCurrentRoute()?.name;
routeNameRef.current = name;
if (name) {
setCurrentScreen(name);
track('screen_view', {screen: name});
}
}}
onStateChange={() => {
const name = navigationRef.getCurrentRoute()?.name;
if (name && routeNameRef.current !== name) {
routeNameRef.current = name;
setCurrentScreen(name);
track('screen_view', {screen: name});
}
}}
>
{/* your app screens */}
</NavigationContainer>
);
}

6) Verify​

Filter Logcat for the following tags:

  • BOOTSTRAP
  • CLAIM
  • BATCH

Success signals:

  • BOOTSTRAP: key accepted and SDK initialized
  • CLAIM 200: tester code connected
  • BATCH 200: events uploaded successfully

Troubleshooting​

  • Metro not running: Start Metro with npx react-native start.
  • White screen: Ensure the prompt is mounted and not hidden by your layout.
  • Code invalid: Confirm the app matches the key in the dashboard.
  • No logs: Verify initialization runs before the prompt renders.