Push service unreliable

I’m finding that push notifications via the Expo service report as successfully sent but are quite often not getting through.

What sort of level of success rate should we expect from pushes? Is there something better we can do, should we switch to a different push service?

I’m testing a new app at the moment by sending just a handful of notifications to two Android phones. I’m using the Node SDK, and I’ve implemented the recommended deferred checks for receipt notifications. Receipt is reported as {status: ‘ok’} but quite often the notification didn’t make any sound, notification icon or anything on the Android phone.

I’m using FCM. The recipient phones are a Pixel 2, and a Xiami Mi5. On the Mi5 I’ve disabled battery optimisation for the app, to make sure that is not causing issues.

Is this normal? I would guess maybe 20% or more of the pushes have failed to get through.

Hey @mlight,

Sorry you are experiencing this poor reliability with the Push Service. It certainly shouldn’t be failing at this rate. I’m going to bring this up internally and see what I can find out.

Unfortunately we have some internal meetings today so it may be a little bit before I can circle back and give you some information.



For FCM, {"status": "ok"} indicates that Google/Firebase acknowledged receipt of the notification so I suspect the issue is between Google and the device, or an issue on the device. That is, if you are getting all {"status": "ok} messages with FCM enabled, the delivery rate from Expo to Firebase is 100%.

You can always detach and switch to another push service if you’d like and have the time & expertise to. Also if you are on a newer version of Android make sure you have notifications set up correctly. For example, you may need to create notification channels: https://docs.expo.io/versions/latest/guides/notification-channels.

Thanks @ide. I’d rather not have to switch to another push service, so keen to first understand where pushes are disappearing.

I have implemented push channels already.

I’ve heard that some phones like Xiaomi can be a bit temperamental with pushes if you don’t disable the battery saver for the app (which I have done), but I would have thought the standard Pixel 2 was working properly. It’s my main phone and I haven’t noticed missing any notifications from other apps.

It does look like FCM received the push if I get {status: ‘ok’} but then I can’t explain where the pushes are going missing. Do you have any ideas what could possibly go wrong between FCM and the phone?

Thanks a lot for any hints

HI Adam,

I was wondering if there is any resolution or if something was figured out? My push notifications just stopped working completely today. I just launched my beta as well - not a good look for me.

Thank you

Hey @ajgulati,

It was determined above that the problem didn’t lie in the Expo push notif API but rather something between FCM/Google and the device.

Weird I am having the same issue on iOS as well - on my staging and production.

I did recently update my expo sdk to https://github.com/expo/react-native/archive/sdk-28.0.1.tar.gz. As I was getting an error that was fixed in that version, do I need to update my expo node server as well?

It was working yesterday on iOS and just stopped working today so confused?

Also thank you for this timely response that is really appreciated.

Another thing to note - my expo token is not getting created for some reason either on my staging env. On creating a new account or after logging in.

On prod I have had to ask people to log in and log out and its created the new expo token.

Edit 2:

I figured it out, my bad. I had notifications disabled on my staging device - so wasn’t getting the notifications. Wow. I do have a question since my app heavily relies on notifications. What is something that I can do that if the user kills notification - I can still get them that message?

Thank you

@ajgulati That doesn’t sound like the problem I have - for me most pushes do get through but quite a few do not.

@adamjnav Yes the droppages do seem to be between FCM and the device, though it would be cool if we could figure out why that might happen 20% of the time on multiple test devices.

1 Like

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