Place the call in the same code path that creates the account on your backend — after success, not before. Avoid passing the new user's email, ID, or signup channel as metadata; if you need a channel breakdown, emit a distinct event name instead.
▸ Install the React Native SDK
npm install @respectlytics/react-native
# or
yarn add @respectlytics/react-native
JavaScript-only — no native modules, no auto-linking, no New Architecture migration concerns. Bundle size: ~14KB minified+gzipped. Works in any Expo project (managed or bare) without `expo prebuild`.
▸ Initialize Respectlytics in React Native
// App.tsx (or App.js)
import { useEffect } from 'react';
import Respectlytics from '@respectlytics/react-native';
export default function App() {
useEffect(() => {
Respectlytics.configure({ appKey: '<YOUR_APP_KEY>' });
}, []);
return <YourApp />;
}
Initialize once in your top-level component. No native config; no Info.plist or AndroidManifest changes. The SDK is Hermes- and JSC-compatible.
▸ Track the event in React Native
import Respectlytics from '@respectlytics/react-native';
async function handleSignUp(method, credentials) {
const response = await api.signUp(credentials);
if (response.ok) {
if (method === 'email') Respectlytics.track('account_created_email');
else if (method === 'apple') Respectlytics.track('account_created_apple');
else if (method === 'google') Respectlytics.track('account_created_google');
navigateToOnboarding();
}
}
`response.ok` is your boundary — call `track` only when the backend confirms creation. Calling it on form submit produces inflated, noisy sign-up rates.
✦ Privacy & implementation notes
Resist the urge to send `user_id` even "just in case". Once a user_id is in your analytics pipeline, every analyst will eventually use it for something — and you'll have built a per-user dataset by accident. Respectlytics's API rejects user IDs at the boundary: there's no path to accidentally re-introduce them later.
Distinct event names per signup method scale up to roughly 8–12 categories before they become unwieldy. Past that, bucket the long tail as `account_created_other`. Most apps have 3 (email + Google + Apple) — well below the threshold.
The React Native SDK is JavaScript-only — no Objective-C/Swift bridging on iOS, no Java/Kotlin bridging on Android. Side effects: no `react-native link`, no auto-linking, no New Architecture migration concerns, no platform-channel exception surfaces. Trade-off: no access to platform-only metadata (which we don't want to collect anyway).
Works in Expo managed workflow without `expo prebuild`. No config plugin is required. EAS Build users: nothing to configure. This is the smoothest integration path on RN — most analytics SDKs require ejecting from managed.
⇋ How this compares to other analytics SDKs
| Sign-up event | Firebase Analytics | Mixpanel | Respectlytics |
|---|---|---|---|
| New user_id stored | Yes (mandatory) | Yes (default) | Never |
| Email / phone as event property | Recommended | Common | Rejected by API |
| Signup method as event property | Recommended (login_method) | Common | Use distinct event_name |
| Acquisition source attribution | utm_* parameters | UTM tracking | Distinct event_name per source |
| Cross-device user identification | Yes (App Instance ID) | Yes (Identity Merging) | Out of scope (sessions, not users) |
| Resulting privacy posture | Per-user, identifiable | Per-user, identifiable | Session-scoped, no PII |
❓ Frequently asked questions
How do we measure activation without joining sign-up to first action?
By session. A session that emits both `account_created` and at least one of your "meaningful action" event names is an activated session. Compute the ratio across your session set — that's activation rate. You never need to join to a user table to get this number.
What about email vs Apple vs Google sign-up channels?
Use distinct event names: `account_created_email`, `account_created_apple`, `account_created_google`. The aggregation buckets them automatically. Embedding the method as a custom parameter is rejected by the API.
Can we still compute conversion from a marketing campaign?
Yes — use distinct event names per campaign source. If you have many campaigns, that taxonomy can balloon — keep it to your top 5–10 sources and bucket the rest as `account_created_other`. The trade-off: you give up long-tail per-campaign granularity in exchange for never storing UTM parameters or referrers.
What if our backend creates the account but the user abandons before the next screen — does the sign-up still get tracked?
Only if your call to `track` runs before the abandonment. Respectlytics's event queue is RAM-only — events not flushed before app force-quit are lost by design. For a signal as critical as sign-up, instrument the event right after the API call returns, not on the next screen.