Uninstall detection
Nohmo detects app uninstalls using silent push notifications— the same technique used by AppsFlyer, Adjust, and Branch. A completely invisible ping is sent daily to every registered device. If FCM returns a definitive "token dead" error, the device is marked as uninstalled.
How it works
Token registration
When your app opens, it fetches an FCM push token and sends it to Nohmo via registerPushToken(). This happens once per install (and again if Firebase rotates the token).
Daily silent ping
Every night at 03:00 UTC, Nohmo sends a data-only FCM message to every device that has a token and hasn't opened the app in 24h. The message contains only {"nohmo":"ping"} — completely invisible to the user.
Delivery response
FCM responds synchronously. If it returns NotRegistered or UnregisteredError, the app was uninstalled. Nohmo marks the device and records the uninstall date.
Dashboard update
Uninstall count, uninstall rate, and daily chart appear in App Analytics. The event APP_UNINSTALL is also visible in the Live Feed and device journey.
Setup (3 steps)
Step 1 — Upload your FCM Service Account JSON
Go to Firebase Console → Project Settings → Service Accounts → Generate new private key, download the file, and upload it in Settings → App in your Nohmo dashboard.
Step 2 — Install Firebase Messaging
npm install @react-native-firebase/app @react-native-firebase/messaging
Step 3 — Register the push token
import { useNohmo } from 'nohmo/react-native'import messaging from '@react-native-firebase/messaging'function PushTokenRegistrar() {const { registerPushToken } = useNohmo()useEffect(() => {// Register on first loadmessaging().getToken().then(registerPushToken)// Re-register if Firebase rotates the tokenreturn messaging().onTokenRefresh(registerPushToken)}, [])return null}// Add inside your NohmoProvider:// <NohmoProvider ...>// <PushTokenRegistrar />// <YourApp />// </NohmoProvider>
Accuracy & limitations
| Scenario | Detected? |
|---|---|
| App deleted from phone | Yes — within 24h |
| User disabled push notifications | No — token still valid, FCM reports delivered |
| Phone wiped / factory reset | Yes — token becomes invalid |
| Phone transferred to new owner | Yes — on reinstall a new token replaces the old one |
| User reinstalls the app | Yes — new token registered, device marked as re-install |
Industry-wide accuracy is approximately 85–90% due to users with push notifications disabled.
Note: The Firebase Service Account private key is stored server-side and never sent to any client. Nohmo uses it solely to call the FCM Send API.