React Native analytics
for Expo and bare apps.
Add one package to your Expo or bare React Native app, mark onboarding steps and paywall events, and see installs, funnel drop-off and revenue from RevenueCat or Superwall in one dashboard.
- Native Swift
- Native Android
- Flutter
- React Native
- RevenueCat
- Superwall
- One package for Expo and bare appsInstall activationpal-react-native with Expo CLI. It runs on iOS and Android, and configure records first open and every session on its own.
- Onboarding and paywall callsonboardingStep, onboardingCompleted, paywallShown, paywallPlanSelected and paywallPurchased fill the funnel and paywall cards.
- Revenue from RevenueCat or SuperwallPass the provider's user id, and trials, renewals and refunds land next to the events from the same device.
The dashboard your React Native events fill, on demo data
Onboarding
Acquisition
Outcomes
9
started
cohort outcomes
50% churn by
7.0d
churn paths
- cancelled
- 0
- expired
- 1
Apple Ads
Devices
Events
How is Workout Tracker doing? Show me the numbers and where we’re losing users.
activationpal.list_apps()└ Workout Tracker id: "workout-tracker"
activationpal.get_stats( app: "workout-tracker", range: "30d" )└ Snapshot received · installs, revenue, onboarding, paywall
WORKOUT TRACKER · LAST 30 DAYS revenue $251.27 ↓9% installs 742 ↑49% conversion 4% 30 purchases installs ▅▅▄▄▆█▇▆▄▆▅▆▅▅▆▆▇█▆▅▇▆ revenue ▁▁▁▁▁▁▂▁▂▁▄█▂▁▂▁▁▁▄▁▃▁ Sep 16 → Oct 15 ONBOARDING installed 742 100% █████████ your goal 703 95% █████████ experience lev 654 88% ████████░ weekly schedul 608 82% ███████░░ notifications 573 77% ███████░░ completed 548 74% ███████░░
Biggest leak: “experience level” loses 49 users (7% of arrivals). Installs are up 49%. Test a shorter version before increasing spend.
Which markets are actually making money?
MARKET INST REVENUE US United States 219 $103.90 GB United Kingdom 71 $27.97 DE Germany 61 $23.98 AU Australia 27 $19.99 organic 645 $198.82 apple ads 97 $52.45
Revenue is concentrated in United States. Scale only where revenue per install supports the acquisition cost.
React Native analytics FAQ
How do I add analytics to a React Native or Expo app?
Install the activationpal-react-native package with npx expo install, then await ActivationPal.configure({ app: "myapp", key: "ap_pk_YOUR_KEY" }) before rendering the app. The app slug and key come from adding the app in the dashboard. Install command and full steps: React Native and Expo setup.
Does it work with Expo Go?
Expo Go cannot include third-party native modules, so run an Expo development build or a release build. Rebuild the native app after installing or updating the package so the Swift module is present.
Does it work in a bare React Native app?
Yes, on React Native 0.76 or later. Run npx install-expo-modules@latest first, install the package with Expo CLI so it picks versions compatible with the app, then run npx pod-install.
Which calls fill the onboarding funnel and paywall?
One call per onboarding screen, in order, with the index starting at 0: ActivationPal.onboardingStep(0, "goal", "lose_weight"), then ActivationPal.onboardingCompleted() at the end. On the paywall: ActivationPal.paywallShown("onboarding"), ActivationPal.paywallPlanSelected("yearly"), ActivationPal.paywallPurchased("yearly") and ActivationPal.paywallDismissed(). What the funnel shows: onboarding funnel analytics.
Can I track custom events?
Yes: ActivationPal.track("workout_logged", { type: "run", duration_min: 42 }). Use any snake_case name with string, boolean and finite number props. New names appear in the Events card with counts and unique devices, with no registration. See the event list.
How does RevenueCat or Superwall revenue join React Native events?
Through a RevenueCat or Superwall webhook, one revenue source per app. For RevenueCat, configure it first and pass its user id: ActivationPal.configure({ app: "myapp", key: "ap_pk_YOUR_KEY", userId: await Purchases.getAppUserID() }), and after a logIn or logOut call ActivationPal.setUserId(await Purchases.getAppUserID()). For Superwall with expo-superwall, identify the user, then call ActivationPal.setUserId(userId) with the same id. Setup: RevenueCat webhook, Superwall webhook and subscription analytics.
Does one codebase cover iOS and Android?
Yes. The package supports both. On iOS it also requests the AdServices attribution token at first open, so the dashboard shows Apple Search Ads installs, and it reads the StoreKit storefront, hardware model and TestFlight environment, with no App Tracking Transparency prompt. Android analytics works without that Apple-only context. For a native Swift app: iOS analytics.
When are events sent?
Events persist with AsyncStorage, up to 500 at a time. The SDK flushes every 10 seconds, at 20 buffered events and when the app goes to the background, and keeps the events of a failed request for the next attempt. It never blocks the UI.
How do I get started?
Create a free account, add an app, and follow the setup guide. The first 10,000 events are free and no card is required. Plans are on the pricing page.