# Expo push notifications arrive reliably when tokens, receipts, and retries are wired right

Push notifications are the one feature that fails silently. When a chat message, a delivery update, or a reminder never arrives, the user does not file a bug report. They just stop trusting the app. And because the failure happens somewhere between your server, Expo's push service, Apple, Google, and the device in someone's pocket, debugging it in production feels like chasing a ghost.

The good news is that nearly every push failure comes from a short list of causes: missing permission, a stale token, a send from the wrong place, an unchecked receipt, or a retry strategy that gives up too early. Handle each one deliberately and notifications become one of the most reliable parts of your stack instead of the flakiest.

---

*This is an excerpt. Read the full post at [otf-kit.dev/blog/expo-push-notifications-production-guide](https://otf-kit.dev/blog/expo-push-notifications-production-guide) — full-stack kits your AI coding agent can actually ship to production. [Browse the kits →](https://otf-kit.dev)*
