React Native and Expo analytics with revenue
One TypeScript file, no native code. Screens, events and sign-ins from your app, next to your website's visitors and the money they bring.
What Sumly reads
- Screens, from React Navigation or Expo Router
- Events with properties, such as signup or upgrade
- Who the person is once they sign in
- App version, platform, device and country
Good to know
- A person keeps one id across launches when @react-native-async-storage/async-storage is installed.
Add it to your app
One file, no native code. Download sumly.ts into your app, and add @react-native-async-storage/async-storage so a person keeps one id across launches.
import { Sumly } from './sumly';
Sumly.init({ siteKey: 'sl_…', appVersion: '1.0.0' }); // once, at start
// React Navigation
<NavigationContainer onStateChange={Sumly.onNavigationChange}>
// Expo Router
const path = usePathname(); useEffect(() => Sumly.screen(path), [path]);
Sumly.track('signup', { plan: 'pro' });
Sumly.identify({ id: user.id, email: user.email, name: user.name });
Trace each payment to its visit
Pass await Sumly.visitorId() to Stripe metadata or to RevenueCat as sumly_visitor_id. How attribution works.
Questions
Does it work offline?
Events wait in a queue and go out in batches when the phone is back online, with the time they happened.
Does it need App Tracking Transparency?
No. It uses no advertising id and does not track people across apps.
Other integrations
Try it with your own projects
Sumly opens to a few founders at a time. Leave your address and what you would connect; we write when your place is ready.
Or look around first: open the live demo.