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

1

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).

2

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.

3

Delivery response

FCM responds synchronously. If it returns NotRegistered or UnregisteredError, the app was uninstalled. Nohmo marks the device and records the uninstall date.

4

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

bash
npm install @react-native-firebase/app @react-native-firebase/messaging

Step 3 — Register the push token

tsx
import { useNohmo } from 'nohmo/react-native'
import messaging from '@react-native-firebase/messaging'
function PushTokenRegistrar() {
const { registerPushToken } = useNohmo()
useEffect(() => {
// Register on first load
messaging().getToken().then(registerPushToken)
// Re-register if Firebase rotates the token
return messaging().onTokenRefresh(registerPushToken)
}, [])
return null
}
// Add inside your NohmoProvider:
// <NohmoProvider ...>
// <PushTokenRegistrar />
// <YourApp />
// </NohmoProvider>

Accuracy & limitations

ScenarioDetected?
App deleted from phoneYes — within 24h
User disabled push notificationsNo — token still valid, FCM reports delivered
Phone wiped / factory resetYes — token becomes invalid
Phone transferred to new ownerYes — on reinstall a new token replaces the old one
User reinstalls the appYes — 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.