Official React Native SDK for Unilitix — African-first mobile UX analytics
# react-native-unilitix
Official React Native SDK for Unilitix —
African-first mobile UX analytics.
## Install
```bash
npm install react-native-unilitix@^1.0.4
# or
yarn add react-native-unilitix@^1.0.4
```
## Quick start
```tsx
import Unilitix, { setupUnilitixCrashHandler } from 'react-native-unilitix';
import { useEffect } from 'react';
export default function App() {
useEffect(() => {
Unilitix.init('YOUR_API_KEY', { debug: true }).then(() => {
setupUnilitixCrashHandler();
});
}, []);
}
```
Get your API key at app.unilitix.com
→ Settings → Apps → Create App.
## Track events
```ts
Unilitix.track('purchase_completed', {
amount: 5000,
currency: 'NGN',
});
```
## Identify users
```ts
// After login
Unilitix.identify('user_123', {
name: 'Tosin',
plan: 'pro',
country: 'Nigeria',
});
// After logout
Unilitix.reset();
```
## Screen tracking
Automatic screen tracking requires wiring the navigation listener:
```ts
import { createUnilitixNavigationListener } from 'react-native-unilitix';
{/* your app */}
```
> **Note:** The `autoTrackScreens` config option has no effect in React Native — all screens run inside a single Android `Activity`, so native lifecycle callbacks cannot detect React Navigation transitions. Always use `createUnilitixNavigationListener` or call `Unilitix.screen()` manually.
## Crash tracking
Native crashes are captured automatically. For JS exception tracking, add:
```ts
import { setupUnilitixCrashHandler } from 'react-native-unilitix';
// Call once after init()
Unilitix.init('YOUR_API_KEY').then(() => {
setupUnilitixCrashHandler();
});
```
## Verify your integration
In debug mode, after `init()` resolves you will see in Metro console:
```
[Unilitix] ✅ SDK initialized
[Unilitix] ✅ Session started
[Unilitix] ⚠️ No screen events detected. Did you wire
Unilitix.screen() to NavigationContainer.onStateChange?
```
The `⚠️` warning only appears if `Unilitix.screen()` or `createUnilitixNavigationListener` is never called within 5 sec …