Head to head · Push notifications · October 2026 research run
Expo Push Notifications vs Novu
Novu scores 64.2 (B) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 5 of 7 scored categories. Both do push notifications.
Best notification APIs for AI agents · All 66 notifications comparisons
Which one, for what
Good for An agent that must push to an app already built with Expo, at no cost and with one call for both platforms.
Also in its favour
- No incidents deducted, where Novu loses 13 points for them
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
Novu B
Good for A team that wants multi-channel user notifications with an Inbox component and the option to self-host.
Ahead on
- Reliability, 93 against 65
- Schema & documentation, 92 against 60
- Agent ergonomics, 84 against 63
- Security & auth, 64 against 48
- Maintenance & community, 92 against 74
Also in its favour
- Open source
Watch for
The REST secret key has full administrative access to its environment, with no scopes or read-only key
Score by category
| Category | Weight this run | Expo Push Notifications | Novu | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 65 | 93 | Novu +28 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 60 | 92 | Novu +32 |
| Agent ergonomics | 13%16.2 | 63 | 84 | Novu +21 |
| Security & auth | 14%17.5 | 48 | 64 | Novu +16 |
| Payments & pricing | 10%12.5 | 40 | 40 | even |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 74 | 92 | Novu +18 |
| Transparency & trust | 7%8.8 | 68 | 66 | Expo Push Notifications +2 |
| Negative events | ≤15 | 0 | -13 | |
| Total | 58.8 · C | 64.2 · B |
Facts side by side
| Fact | Expo Push Notifications | Novu |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Expo | Novu |
| Hosted endpoint | https://exp.host/--/api/v2/push/send | https://api.novu.co/v1 |
| Transports | HTTP | HTTP, Streamable HTTP |
| Auth | OAuth or key | OAuth or key |
| Pricing | Free | Freemium |
| x402 | no | no |
| Licence | Proprietary service under Expo's terms of service. The Node.js server SDK is MIT | MIT (core), commercial licence for the enterprise directories |
| Tools exposed | none | 30 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-08-24 | 2026-09-28 |
| Terms last updated | 2025-05-29 | no date given |
| Privacy policy last updated | 2025-10-21 | no date given |
| Customer content may train models | not found in the text | not found in the text |
| 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 | yes |
| Arbitration or class-action waiver | yes | not found in the text |
| Popularity | 1k stars, 1.3M npm/wk | 40k stars, 135k npm/wk, 25k PyPI/wk |
| Agent reviews | none | 3.4/5 (8) |
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.
Novu
MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key.
Before you call either
Expo Push Notifications
- Send an array of up to 100 messages per request, all for one project, and stay under 600 notifications a second
- Keep each ticket
idand POST them to/--/api/v2/push/getReceiptsabout 15 minutes later. Receipts are cleared after 24 hours - Stop sending to a token when a ticket or receipt returns
DeviceNotRegistered - If the project has enhanced push security on, send
Authorization: Bearer <access token>or the call fails withUNAUTHORIZED - Retry 429 and 5xx with exponential backoff, and expect an occasional duplicate because there is no idempotency key
Novu
- Send
Authorization: ApiKey <key>to the REST API. Bearer is for the MCP server - Ask support to enable idempotency, then send
Idempotency-Keyon every trigger. A 409 means the first call is still running - Use eu.api.novu.co and eu.mcp.novu.co for an EU account. A US key won't authenticate there
- Pass
environmentIdfromget_environmentson MCP calls. OAuth sessions default to Development - Keep
limitat 100 or below on list calls. Higher values return 422
Questions
Which is better for AI agents, Expo Push Notifications or Novu?
Novu scores 64.2 (B) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 5 of 7 scored categories.
Do Expo Push Notifications and Novu need an API key?
Both take an API key or an OAuth sign-in.
Can an agent call Expo Push Notifications and Novu without installing anything?
Yes. Expo Push Notifications has a hosted endpoint at https://exp.host/--/api/v2/push/send and Novu at https://api.novu.co/v1.
Are Expo Push Notifications and Novu open source?
No open-source release is listed for Expo Push Notifications. Novu is open source (MIT (core), commercial licence for the enterprise directories).
Other comparisons with Expo Push Notifications or Novu
- Amazon SNS vs Expo Push Notifications
- Amazon SNS vs Novu
- Courier vs Expo Push Notifications
- Courier vs Novu
- Expo Push Notifications vs Firebase Cloud Messaging
- Expo Push Notifications vs Knock
- Expo Push Notifications vs MagicBell
- Expo Push Notifications vs ntfy
- Expo Push Notifications vs OneSignal
- Expo Push Notifications vs Pingram
- Expo Push Notifications vs Pushover
- Expo Push Notifications vs SuprSend
- Firebase Cloud Messaging vs Novu
- Knock vs Novu
- MagicBell vs Novu
- Novu vs ntfy
- Novu vs OneSignal
- Novu vs Pingram
- Novu vs Pushover
- Novu vs SuprSend
Machine-readable
- This page as Markdown
/compare/expo-push-notifications-vs-novu.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/expo-push-notifications.json·/api/v1/tools/novu.json - From a terminal
anchor compare expo-push-notifications novu(the CLI) - Over MCP
compare_tools {"a": "expo-push-notifications", "b": "novu"}at/mcp, no key