@testernest/react-native
v0.1.4
Published
React Native bridge for Testernest Android SDK
Maintainers
Readme
@testernest/react-native
React Native bridge for the TesterNest Android SDK.
Android-only for now. iOS is not supported yet.
Install
npm i @testernest/react-nativeyarn add @testernest/react-nativeEnsure google() and mavenCentral() are present in your Android repositories.
Quickstart
import {
init,
track,
flush,
setCurrentScreen,
connectTester,
TesternestConnectPrompt,
} from '@testernest/react-native';
await init({
publicKey: 'YOUR_PUBLIC_KEY',
baseUrl: 'https://testernest.com',
enableLogs: true,
});
track('signup_start', { plan: 'pro' });
setCurrentScreen('Checkout');
await connectTester('123456'); // 6-digit code only
await flush();Render the prompt once near app root:
<TesternestConnectPrompt
publicKey="YOUR_PUBLIC_KEY"
baseUrl="https://testernest.com"
/>Screen Tracking (React Navigation)
import { NavigationContainer, createNavigationContainerRef } from '@react-navigation/native';
import { setCurrentScreen } from '@testernest/react-native';
import React, { useRef } from 'react';
const navigationRef = createNavigationContainerRef();
export function AppNavigation() {
const routeNameRef = useRef<string | undefined>();
return (
<NavigationContainer
onReady={() => {
// Set initial screen name
routeNameRef.current = navigationRef.getCurrentRoute()?.name;
if (routeNameRef.current) setCurrentScreen(routeNameRef.current);
}}
onStateChange={() => {
// Keep SDK screen context in sync with navigation
const currentRouteName = navigationRef.getCurrentRoute()?.name;
if (currentRouteName && routeNameRef.current !== currentRouteName) {
routeNameRef.current = currentRouteName;
setCurrentScreen(currentRouteName);
}
}}
ref={navigationRef}
>
{/* app screens */}
</NavigationContainer>
);
}Verify
Windows CMD:
adb logcat -v time | findstr /i "TesternestRN Testernest BOOTSTRAP BATCH CLAIM HTTP AndroidRuntime ReactNativeJS"Security Note
Never commit real publicKey values or production endpoints in examples, docs, screenshots, or test fixtures.
API
init({ publicKey, baseUrl?, enableLogs? }): Promise<void>track(name: string, properties?: Record<string, any>): voidflush(): Promise<void>setCurrentScreen(screen: string | null): voidconnectTester(code6: string): Promise<void>disconnectTester(): Promise<void>getDebugSnapshot(): Promise<Record<string, any>>isConnected(): Promise<boolean>TesternestConnectPrompt
Local Package Commands
npm run clean
npm run build
npm pack --dry-run
npm publish --dry-run --access public