React Native SDK
A lightweight React Native SDK for iOS and Android.
Requirements
- React Native 0.71+
- Expo SDK 49+ (if using Expo)
Installation
Expo (Recommended)
npm install @mostly-good-metrics/react-native
That's it! Expo includes AsyncStorage by default.
Bare React Native
npm install @mostly-good-metrics/react-native @react-native-async-storage/async-storage
cd ios && pod install
Quick Start
Initialize
import MostlyGoodMetrics from '@mostly-good-metrics/react-native';
MostlyGoodMetrics.configure('mgm_proj_your_api_key');
Track Events
// Simple event
MostlyGoodMetrics.track('button_clicked');
// Event with properties
MostlyGoodMetrics.track('purchase_completed', {
product_id: 'SKU123',
price: 29.99,
currency: 'USD',
});
Identify Users
// Set user identity
MostlyGoodMetrics.identify('user_123');
// Reset identity (e.g., on logout)
MostlyGoodMetrics.resetIdentity();
Configuration Options
import { version } from './package.json';
MostlyGoodMetrics.configure('mgm_proj_your_api_key', {
baseURL: 'https://mostlygoodmetrics.com',
environment: 'production',
appVersion: version,
maxBatchSize: 100,
flushInterval: 30,
maxStoredEvents: 10000,
enableDebugLogging: __DEV__,
trackAppLifecycleEvents: true,
});
| Option | Default | Description |
|---|---|---|
baseURL | https://mostlygoodmetrics.com | API endpoint |
environment | "production" | Environment name |
appVersion | - | App version (required for install/update tracking) |
maxBatchSize | 100 | Events per batch |
flushInterval | 30 | Auto-flush interval in seconds |
maxStoredEvents | 10000 | Max cached events |
enableDebugLogging | false | Enable console output |
trackAppLifecycleEvents | true | Auto-track lifecycle events |
Automatic Events
| Event | When | Properties |
|---|---|---|
$app_installed | First launch after install | $version |
$app_updated | First launch after version change | $version, $previous_version |
$app_opened | App became active (foreground) | - |
$app_backgrounded | App resigned active (background) | - |
Manual Flush
MostlyGoodMetrics.flush();
// Check pending events
const count = await MostlyGoodMetrics.getPendingEventCount();
console.log(`${count} events pending`);