# Expo Push Notifications vs Firebase Cloud Messaging > Firebase Cloud Messaging scores 69.8 (B) to Expo Push Notifications's 58.8 (C) for push notifications. Prices, MCP, x402, uptime and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging - Markdown: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.md (~2,600 tokens) - Slim: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.min.md (~680 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-09 Firebase Cloud Messaging scores 69.8 (B) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Both do push notifications. - Expo Push Notifications: grade C, 58.8/100, rank #571 of 950. Markdown https://www.anchorterminal.com/tools/expo-push-notifications.md · JSON https://www.anchorterminal.com/api/v1/tools/expo-push-notifications.json - Firebase Cloud Messaging: grade B, 69.8/100, rank #170 of 950. Markdown https://www.anchorterminal.com/tools/firebase-cloud-messaging.md · JSON https://www.anchorterminal.com/api/v1/tools/firebase-cloud-messaging.json - Best notification APIs for AI agents: https://www.anchorterminal.com/best/notifications/index.md - All 66 notifications comparisons: https://www.anchorterminal.com/compare/notifications/index.md ## Which one, for what ### Expo Push Notifications (C) Good for: An agent that must push to an app already built with Expo, at no cost and with one call for both platforms. Watch for: The send API needs no authentication by default, so anyone holding a push token can send to that device until the owner enables access tokens ### Firebase Cloud Messaging (B) Good for: The push transport under an app that already holds device registrations, at no charge. Ahead on: - Schema & documentation, 86 against 60 - Agent ergonomics, 70 against 63 - Security & auth, 68 against 48 - Maintenance & community, 83 against 74 - Transparency & trust, 81 against 68 Watch for: Push transport only. No in-app feed, email, SMS, user preferences, digests or templates ## Score by category | Category | Weight | Expo Push Notifications | Firebase Cloud Messaging | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 65 | 66 | Firebase Cloud Messaging +1 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 60 | 86 | Firebase Cloud Messaging +26 | | Agent ergonomics | 13% (16.2 this run) | 63 | 70 | Firebase Cloud Messaging +7 | | Security & auth | 14% (17.5 this run) | 48 | 68 | Firebase Cloud Messaging +20 | | Payments & pricing | 10% (12.5 this run) | 40 | 40 | even | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 74 | 83 | Firebase Cloud Messaging +9 | | Transparency & trust | 7% (8.8 this run) | 68 | 81 | Firebase Cloud Messaging +13 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **58.8 · C** | **69.8 · B** | | ## Facts side by side | Fact | Expo Push Notifications | Firebase Cloud Messaging | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | Expo | Google | | Hosted endpoint | `https://exp.host/--/api/v2/push/send` | `https://fcm.googleapis.com` | | Transports | HTTP | HTTP | | Auth | OAuth or key | OAuth | | Pricing | Free | Free | | x402 | no | no | | Licence | Proprietary service under Expo's terms of service. The Node.js server SDK is MIT | Proprietary service under the Google APIs Terms of Service. The Firebase Admin SDKs are Apache-2.0 | | Read-only variant documented | no | no | | llms.txt | yes | yes | | Last release | 2026-08-24 | 2026-09-24 | | Terms last updated | 2025-05-29 | 2021-11-09 | | Privacy policy last updated | 2025-10-21 | 2026-10-01 | | Customer content may train models | not found in the text | yes | | Terms restrict automated access | yes | yes | | Terms restrict benchmarking | not found in the text | not found in the text | | Terms or service can change without notice | yes | not found in the text | | Arbitration or class-action waiver | yes | not found in the text | | Popularity | 1k stars, 1.3M npm/wk | 11.5M npm/wk, 3.8M PyPI/wk | ## Verdicts **Expo Push Notifications.** A free push relay with a small, well documented HTTP API, published limits of 600 notifications a second and written error codes. Sending needs no credential unless the owner turns on access tokens, there is no idempotency key or SLA, and the status page records three iOS push incidents since 4 August 2026. **Firebase Cloud Messaging.** Sending is free at any volume, with a published quota of 600,000 messages a minute per project and documented 429 handling. FCM is push transport only. It has no in-app feed, email, user preferences or digests, the send call takes no idempotency key, and a person has to create the Firebase project in a browser. ## Before you call either ### Expo Push Notifications 1. Send an array of up to 100 messages per request, all for one project, and stay under 600 notifications a second 2. Keep each ticket `id` and POST them to `/--/api/v2/push/getReceipts` about 15 minutes later. Receipts are cleared after 24 hours 3. Stop sending to a token when a ticket or receipt returns `DeviceNotRegistered` 4. If the project has enhanced push security on, send `Authorization: Bearer ` or the call fails with `UNAUTHORIZED` 5. Retry 429 and 5xx with exponential backoff, and expect an occasional duplicate because there is no idempotency key ### Firebase Cloud Messaging 1. Mint an access token from a service account with the scope `https://www.googleapis.com/auth/firebase.messaging`, then POST to `https://fcm.googleapis.com/v1/projects//messages:send` 2. Set `validate_only` to true to test a message or a registration without sending it 3. On 429 wait for the `retry-after` header, or 60 seconds if it is absent. Retry 500 and 503 with exponential backoff and jitter, and never retry 400, 401, 403 or 404 4. Drop a registration when the error is `UNREGISTERED` (404). Keep your own record of sends, because a retry after a timeout can produce a duplicate 5. Target `fid` in new code. The `token` field is marked deprecated in the API, and device groups stop working after 29 September 2027 ## Questions ### Which is better for AI agents, Expo Push Notifications or Firebase Cloud Messaging? Firebase Cloud Messaging scores 69.8 (B) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. ### Do Expo Push Notifications and Firebase Cloud Messaging need an API key? Expo Push Notifications takes an API key or an OAuth sign-in. Firebase Cloud Messaging uses an OAuth sign-in. ### Can an agent call Expo Push Notifications and Firebase Cloud Messaging without installing anything? Yes. Expo Push Notifications has a hosted endpoint at https://exp.host/--/api/v2/push/send and Firebase Cloud Messaging at https://fcm.googleapis.com. ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.json, and with the fewest tokens: https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "expo-push-notifications", "b": "firebase-cloud-messaging"}`. From a terminal: `anchor compare expo-push-notifications firebase-cloud-messaging` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/expo-push-notifications.json and https://www.anchorterminal.com/api/v1/tools/firebase-cloud-messaging.json ## Other comparisons with Expo Push Notifications or Firebase Cloud Messaging - [Amazon SNS vs Expo Push Notifications](https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.md) - [Amazon SNS vs Firebase Cloud Messaging](https://www.anchorterminal.com/compare/amazon-sns-vs-firebase-cloud-messaging.md) - [Courier vs Expo Push Notifications](https://www.anchorterminal.com/compare/courier-vs-expo-push-notifications.md) - [Courier vs Firebase Cloud Messaging](https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.md) - [Expo Push Notifications vs Knock](https://www.anchorterminal.com/compare/expo-push-notifications-vs-knock.md) - [Expo Push Notifications vs MagicBell](https://www.anchorterminal.com/compare/expo-push-notifications-vs-magicbell.md) - [Expo Push Notifications vs Novu](https://www.anchorterminal.com/compare/expo-push-notifications-vs-novu.md) - [Expo Push Notifications vs ntfy](https://www.anchorterminal.com/compare/expo-push-notifications-vs-ntfy.md) - [Expo Push Notifications vs OneSignal](https://www.anchorterminal.com/compare/expo-push-notifications-vs-onesignal.md) - [Expo Push Notifications vs Pingram](https://www.anchorterminal.com/compare/expo-push-notifications-vs-pingram.md) - [Expo Push Notifications vs Pushover](https://www.anchorterminal.com/compare/expo-push-notifications-vs-pushover.md) - [Expo Push Notifications vs SuprSend](https://www.anchorterminal.com/compare/expo-push-notifications-vs-suprsend.md) - [Firebase Cloud Messaging vs Knock](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-knock.md) - [Firebase Cloud Messaging vs MagicBell](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-magicbell.md) - [Firebase Cloud Messaging vs Novu](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-novu.md) - [Firebase Cloud Messaging vs ntfy](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-ntfy.md) - [Firebase Cloud Messaging vs OneSignal](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-onesignal.md) - [Firebase Cloud Messaging vs Pingram](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-pingram.md) - [Firebase Cloud Messaging vs Pushover](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-pushover.md) - [Firebase Cloud Messaging vs SuprSend](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-suprsend.md)