FCM push notifications very unreliable

Hi Expo team (@adamjnav @ide)

I have built my app with Expo push notifications thru FCM . The app is almost ready to go live, but I found the notifications are very unreliable and the success rate is around 80%. I am sending batch notifications and I also get ok response for all the notifications I sent. But the end device doesnt recieve any notifications.

I see few people are complaining about the same in the past. Is there a solution in place.

I dont want to switch to another service as I have invested lot of time on this and will delay my app’s release. Switching to another serivce like AWS will be very costly too as I will have eject and do the linking.

Are there any workarounds for this till this issue gets fixed and any ETA on the fix ?

1 Like

Just to confirm:

This is for Android only.
You have FCM correctly configured.
You are able to receive notifications in a standalone app.
Some devices don’t receive notifications.
Devices have Google Play Services enabled. (This is required by Google and is how they run the Android ecosystem. Typical Android phones like Galaxy and Pixel have this but some custom Android forks might not.)
You are always receiving “ok” in the push receipt. (This means that Google / Firebase said OK and there’s nothing more for Expo’s server to do.)

Are there any other symptoms you can provide? Until we have an understanding of the root cause we can’t provide an estimated time to fix these issues.

To answer your questions ?

This is for Android only. (Yes, havent tried iOS yet)
You have FCM correctly configured. (Yes, as I do get 80% of notifications)
You are able to receive notifications in a standalone app. (Yes)
Some devices don’t receive notifications. (It is only one device I am testing on and its a galaxy S9 with latests android version)
Devices have Google Play Services enabled. (yes)

You are always receiving “ok” in the push receipt. (yes)

One of the times the notifications failed to deliver, I have had issued two notifications in a single message at 10:30 GMT and the other time there was only one notification at 8:30PM. There is no specific pattern apart from the point that the failed notification messages were sent half past the hour. Having said that, there were times notifications were issued when sent half past hour.

I understand the issue might be between FCM and the device, but is there a way for Team Expo to raise this with Google’s FCM team to look into getting the root of the issue and solve it. I can pass on the message IDs. The E2E journey isnt working and all teams invovled should work together in solving this, in my opinion.

Just want to throw some extra weight behind this - FCM push notifications have been extremely unreliable for us ever since the switch.

Definitely don’t think it’s anything server side, as we use our own push notifications system hooking into SNS directly. We get "status": "SUCCESS" logs for every notification we send, but the success rate of receipt is very, very low. The problem seems to occur less often if you’re on a higher quality internet connection, and we’ve found that Samsung devices are particularly susceptible (though those two points are both pretty anecdotal).

I’ll answer your questions as well below, see if we get any contrast:

  • This is for Android only. Yes, iOS notifications are far more reliable.
  • You have FCM correctly configured. Yes, we successfully send notifications some of the time, we get success status responses in SNS, and we configured the app exactly according to the docs.
  • You are able to receive notifications in a standalone app. Yes.
  • Some devices don’t receive notifications. Yes, not sure if there’s a pattern, but the success rate is fairly low despite there being no issues on the back end.
  • Devices have Google Play Services enabled. Yes, absolutely.
  • You are always receiving “ok” in the push receipt. Yes, SNS says success and we still don’t get any sort of receipt.

The issue is very transient, it will work for a bit, then it won’t work for a bit, and then it will start working again. We’ve found if we manually delete a device token (note, not an Expo push token) from our database, then Expo saves a new one to our system, that seems to trigger some unreliability also.

I am also happy to pass on message IDs, and anything we can do to assist we will do - this is a big problem for us out to production.

1 Like

Have you seen the notes about doze mode and priority?

It would be interesting to know if that helps.

Very good pointer, thanks for the info! I’ll check that out…

I am aware of the doze mode. My devices are not in doze mode and the notifications still don’t appear. If they are sent individually (than grouping in a single message) then there is a higher success rate.

Just want to bump this. We’re now sending notifications with a high priority, and while this has made some difference, we’re still seeing plenty of notifications sent through SNS that are marked as having been delivered that never appear on users’ phones. This is quite a crucial issue for us, can anyone shed some light?

Just for technical details - we are using the latest version of Expo (31.0.4 I believe) and we are seeing this problem only on Android as far as we’re aware.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.