@gatiflow/react-native
v1.0.0
Published
Crash reporting and analytics SDK for React Native
Maintainers
Readme
GatiFlow React Native SDK
Crash reporting and analytics for React Native apps. Wraps the native iOS and Android GatiFlow SDKs — one JS API, full native performance.
Installation
npm install @gatiflow/react-native
# or
yarn add @gatiflow/react-nativeiOS — install the native pod:
cd ios && pod installAndroid — no extra steps; JitPack is configured in the module's build.gradle.
Quick Start
Call GatiFlow.start() as early as possible — before rendering any components.
// App.tsx
import { useEffect } from 'react';
import GatiFlow from '@gatiflow/react-native';
export default function App() {
useEffect(() => {
GatiFlow.start({ appToken: 'mhub_YOUR_APP_TOKEN' });
}, []);
return <YourRootNavigator />;
}Analytics
import GatiFlow from '@gatiflow/react-native';
// Simple event
GatiFlow.analytics.trackEvent('screen_view');
// Event with properties
GatiFlow.analytics.trackEvent('purchase_completed', {
product_id: 'pro_monthly',
price: 9.99,
currency: 'USD',
});
// Force-flush before logout
GatiFlow.analytics.flush();
// Opt out (e.g. based on user consent)
GatiFlow.analytics.setEnabled(false);Crash Reporting
try {
await riskyOperation();
} catch (e) {
GatiFlow.crashes.trackError(String(e), {
screen: 'CheckoutScreen',
userId: currentUser.id,
});
}User Identity
// After login
GatiFlow.setUserId(user.id);
// After logout
GatiFlow.setUserId(null);Advanced Configuration
await GatiFlow.start({
appToken: 'mhub_YOUR_TOKEN',
services: ['crashes', 'analytics'], // default: both
baseUrl: 'https://your-server.com', // default: https://app.gatiflow.dev
debugLogging: __DEV__, // verbose native logs
maxCrashQueueSize: 100, // offline crash queue (default: 50)
maxEventBatchSize: 200, // events per batch (default: 100)
flushIntervalMs: 15_000, // flush interval (default: 30 000)
anrTimeoutMs: 3_000, // ANR/hang threshold (default: 5 000)
});API Reference
| Method | Description |
|--------|-------------|
| GatiFlow.start(config) | Initialize with token and options |
| GatiFlow.setUserId(id) | Attach identity (null to clear) |
| GatiFlow.stop() | Stop all services |
| GatiFlow.analytics.trackEvent(name, props?) | Record a custom event |
| GatiFlow.analytics.flush() | Force-flush the event queue |
| GatiFlow.analytics.setEnabled(bool) | Enable / disable analytics |
| GatiFlow.crashes.trackError(message, meta?) | Report a handled error |
| GatiFlow.crashes.setEnabled(bool) | Enable / disable crash reporting |
