Short answer
The device token you sent to is no longer valid: the app was uninstalled, the token expired or was refreshed, or the app unregistered. Firebase says to delete that token from your server and stop sending to it. Then make sure the app sends its current token to your server every time it gets one, so each user has a fresh token on file.
Why the token stopped working, and the fix
01
The app was uninstalled or unregistered
“For all these cases, remove this registration token from the app server and stop using it to send messages.” Firebase, FCM ErrorCode
When someone deletes the app, or the app unregisters itself, its token is dead for good. On Apple devices it also happens when Apple’s push service reports the APNs token as invalid. There is nothing to fix on the phone: remove the token from your database.
02
The token expired or was replaced
“The registration token expired. For example, Google might decide to refresh registration tokens or the APNs token may have expired for Apple devices.” Firebase, FCM error codes
Firebase can refresh a token, and an APNs token can expire on Apple devices. If the app only saves its token once, at sign-up, your server keeps sending to the old one. Save the token whenever the app receives a new one, and keep a timestamp so you can tell fresh tokens from stale ones.
03
A new app version isn’t set up to receive messages
“If the client app is updated but the new version is not configured to receive messages.” Firebase, FCM ErrorCode
Firebase also lists an app update whose new version isn’t configured for messaging. If tokens stopped working right after a release, check that the push setup in the new build still matches the old one. We also check that the build sends a fresh token after the update.
Checked against the vendor’s docs on : Firebase docs: FCM error codes (Admin SDK); Firebase docs: FCM HTTP v1 ErrorCode; Firebase docs: Best practices for FCM registration token management.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Expo push notifications not working · Flutter APNS token has not been set