React Native SDK

React Native SDK for JustAnalytics mobile app monitoring.

Installation#

npm install @justanalyticsapp/react-native
# or
yarn add @justanalyticsapp/react-native

# Install peer dependencies
npx expo install expo-device expo-constants

Quick Start#

// App.tsx
import { JustAnalyticsProvider } from '@justanalyticsapp/react-native';

export default function App() {
  return (
    <JustAnalyticsProvider
      siteId="YOUR_SITE_ID"
      apiKey="YOUR_API_KEY"
      environment="production"
    >
      <NavigationContainer>
        <AppNavigator />
      </NavigationContainer>
    </JustAnalyticsProvider>
  );
}

Screen Tracking#

Automatically track screen views with React Navigation:

import { useJustAnalytics } from '@justanalyticsapp/react-native';

function AppNavigator() {
  const { trackScreen } = useJustAnalytics();

  return (
    <NavigationContainer
      onStateChange={(state) => {
        const currentRoute = getActiveRouteName(state);
        trackScreen(currentRoute);
      }}
    >
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Profile" component={ProfileScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

Error Tracking#

import { useJustAnalytics } from '@justanalyticsapp/react-native';

function PaymentScreen() {
  const { captureException } = useJustAnalytics();

  const handlePayment = async () => {
    try {
      await processPayment();
    } catch (error) {
      captureException(error, { tags: { screen: 'payment' } });
    }
  };

  return <Button onPress={handlePayment} title="Pay Now" />;
}

Error Boundary#

import { JustAnalyticsErrorBoundary } from '@justanalyticsapp/react-native';

function App() {
  return (
    <JustAnalyticsErrorBoundary fallback={<CrashScreen />}>
      <MainApp />
    </JustAnalyticsErrorBoundary>
  );
}

Custom Events#

const { trackEvent } = useJustAnalytics();

trackEvent('purchase_complete', {
  product: 'Pro Plan',
  price: 49.99,
  currency: 'USD',
});

Performance#

const { startSpan } = useJustAnalytics();

const loadData = async () => {
  const result = await startSpan('load-feed', async () => {
    const response = await fetch('/api/feed');
    return response.json();
  });
  setData(result);
};

User Context#

const { setUser } = useJustAnalytics();

// After login
setUser({
  id: user.id,
  email: user.email,
  name: user.name,
});

Platform Support#

| Platform | Min Version | |----------|------------| | iOS | 13.0+ | | Android | API 24+ (Android 7.0) | | Expo | SDK 49+ |

Auto-Captured Data#

  • App launches and foreground/background transitions
  • Screen views (with React Navigation integration)
  • Unhandled JS exceptions and native crashes
  • Network requests (fetch/XMLHttpRequest)
  • Device info (model, OS version, screen size)