Below are the possibilities/reasons behind app uninstall being marked against a specific user :

1] If the registration token expires (for example, Google might decide to refresh registration tokens, or the APNS token has expired for iOS devices).

2] If the client app is updated but the new version is not configured to receive messages.

3] When the user uninstalls the app.

4] If the client's app unregisters with FCM.

In all these cases we may or may not get live updates from FCM/ APNS. Hence, there might be a delay in uninstall status getting updated for the user.

So the user may not have necessarily un-installed the app from their device.

Also, Netcore sends Silent Push Notifications daily to all the tokens and checks the response from FCM/ APNS.

If we get a failure response from these gateways we mark it as un-install.

App Uninstall events are not received in real-time.'

It's the FCM that tells us that a token is no longer registered and can be marked as 'uninstalled'.

And FCM has its own algorithm to verify if a token is registered or not and we don't have any control over it.

So it is quite possible that uninstall events can reach us with a delay that can be in the range of a few days as well.