APIbenchmarks
Expo Push logo

Expo Push

Expo · Ranked #6 of 7 in Push Notification APIs

79.0/ 100
BStrong

Free unified push API beloved by React Native teams, abstracting APNs and FCM behind one endpoint.

Best for

Free push for React Native

Screenshot of Expo Push

Overview

Expo Push is the push notification service bundled with the Expo platform for React Native apps. Rather than being a standalone messaging product, it is a free abstraction layer that sits in front of Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM): developers send a JSON payload (with an ExponentPushToken) to Expo's single REST endpoint, and Expo relays it to the correct underlying provider, normalizing the two very different platform APIs into one. The flow is asynchronous and two-stage, a synchronous "ticket" is returned immediately, and a "receipt" (fetched ~15 minutes later) reports the final delivery status from APNs/FCM. It is aimed squarely at React Native / Expo developers who want to ship cross-platform push without writing separate iOS and Android integrations or standing up their own delivery infrastructure.

Its biggest selling point is that the push service itself is genuinely free with no per-message charge, a sharp contrast to most commercial notification APIs. The trade-off is operational: there is no SLA, and the documented hard ceiling is 600 notifications/second per project, with payloads capped at 4096 bytes, batches of 100 messages per request, and receipt lookups of up to 1000 IDs. Delivery is "at-least-once" best-effort, meaning notifications can occasionally be duplicated or dropped, and the official guidance pushes responsibility onto the developer (implement throttling, exponential backoff, and receipt-checking). The expo-server-sdk-node library handles much of this automatically, but server SDKs for other languages (Python, PHP, etc.) are community-maintained rather than official.

In practice the service performs well for its price point. Third-party benchmarking by Knock (Mar–Jun 2026) recorded a p50 response time of 42ms, p90 of 73ms, and p99 of 254ms, with an average daily error rate of 0.16% and 52 of 91 days at zero errors, though a single April 9, 2026 incident spiked the error rate to 10.72%, illustrating the no-SLA risk. Expo Push is best understood as a high-leverage convenience for teams already in the Expo/React Native ecosystem; teams needing guaranteed delivery, advanced segmentation, analytics, or contractual uptime typically layer a commercial notification platform (Knock, Courier, OneSignal) on top of, or instead of, the raw Expo endpoint.

How this score is derived

The APIbenchmarks Index is a weighted sum of four dimensions, each scored on an absolute 0–100 reference scale. See the methodology for every mapping.

DimensionScoreWeightContribution
Documentation & DXExpo's official docs cover setup, sending, receipts, error codes, and FAQ thoroughly with copy-paste examples, making integration approachable.
80
30%24.0
ReliabilitySolid measured performance (0.16% avg error rate, 42ms p50) but explicitly no SLA, at-least-once delivery, and an April 2026 incident that spiked errors to 10.72%.
78
25%19.5
Ecosystem & SDKsOfficial Node server SDK plus community SDKs for Python, PHP, Ruby, Go and others, all tightly integrated with the broader Expo/EAS React Native toolchain.
70
25%17.5
AccessibilityFree to use with no API key billing, a single REST endpoint, and a browser-based push notification tool, so any developer can start sending immediately.
90
20%18.0
APIbenchmarks Index (ABI)79.0

Table 1. Derivation of the ABI for Expo Push. Contribution = score × weight; the index is their sum.

At a glance

Vendor
Expo
Pricing model
Free (transport)
Free tier
Free (600 notif/sec/project)
Official SDKs
9 languages

Pricing

Push notification serviceFreeNo per-message cost for sending push notifications; subject to 600 notifications/second per project rate limit.
Free (EAS platform)$0/monthBroader Expo Application Services free tier; push service is included free regardless of plan.
Production (EAS)$99/monthHigher EAS Build/Update limits and priority support; not required to use the free push service.
Enterprise (EAS)$999/monthEnterprise EAS tier with highest limits and support; push notifications remain free.

Key features

  • Unified push API relaying to both APNs (iOS) and FCM (Android)
  • Two-stage ticket + receipt delivery tracking model
  • Batch sending up to 100 messages per request
  • Receipt lookups up to 1000 ticket IDs per request
  • Automatic throttling and request chunking via expo-server-sdk-node
  • Configurable message priority (normal/high) per platform
  • Up to 4096-byte payloads with title, body, data, sound, badge, and channel support
  • Browser-based Expo push notification testing tool
  • Detailed receipt error codes (DeviceNotRegistered, MessageTooBig, MessageRateExceeded, InvalidCredentials)

Official SDKs

Node.js (official, expo-server-sdk-node)Python (community, expo-server-sdk-python)PHP (community)Ruby (community)Rust (community)Go / Golang (community)Elixir (community)Java (community)REST HTTP API (direct, any language)

Strengths & trade-offs

Strengths
  • +Push notification service is completely free with no per-message charges
  • +Single unified API abstracts away both APNs and FCM, cutting cross-platform integration work
  • +Tight integration with the React Native / Expo / EAS toolchain
  • +Official Node SDK auto-handles throttling (6 concurrent connections) and chunking
  • +Measured low latency in third-party benchmarks (p50 42ms, p90 73ms)
  • +Browser-based push tool and clear docs make it fast to start
Trade-offs
  • No SLA and no uptime guarantee for the push service
  • Hard rate limit of 600 notifications/second per project constrains large-scale blasts
  • At-least-once best-effort delivery means notifications can be duplicated or dropped
  • Server SDKs outside Node (Python, PHP, Ruby) are community-maintained, not official
  • Occasional incidents (e.g. April 9 2026 spike to 10.72% error rate) with limited recourse
  • No built-in segmentation, scheduling, or analytics, those require a third-party layer

What developers say

Developers praise Expo Push for being free and dramatically simplifying cross-platform push, while flagging occasional delivery delays and the lack of an SLA at scale.

I love @expo, it made React Native dev so much easier.

Key figures

p50 response time42msKnock push API benchmarks (Mar 28–Jun 26, 2026)
p90 response time73msKnock push API benchmarks
p99 response time254msKnock push API benchmarks
Average daily error rate (5xx + timeouts)0.16%Knock push API benchmarks
Peak single-day error rate (Apr 9, 2026 incident)10.72%Knock push API benchmarks
Rate limit600 notifications/second per projectExpo Documentation
Send price$0 per message (free)Expo Documentation / pricing

Compare Expo Push head to head

Sources

  1. https://docs.expo.dev/push-notifications/sending-notifications/
  2. https://docs.expo.dev/push-notifications/faq/
  3. https://docs.expo.dev/push-notifications/overview/
  4. https://knock.app/push-api-benchmarks/expo
  5. https://expo.dev/pricing
  6. https://github.com/expo/expo-server-sdk-node
  7. https://github.com/expo-community/expo-server-sdk-python
  8. https://drdroid.io/integration-diagnosis-knowledge/expo-push-ratelimitexceeded-error-encountered-when-sending-push-notifications
  9. https://www.facebook.com/groups/react.native.community/posts/1053987874736790/

Figures last verified 2026-06-27. Spotted an error? corrections@apibenchmarks.com