Push notifications

Expo vs Firebase vs OneSignal

Expo, Firebase, OneSignal side by side: price, free tier, who each one fits and when to skip it.
Item
What it doesExpo's free push service: one API call delivers to iOS and Android through Apple and Google for React Native apps.Google's app platform: login, Firestore database, file storage and free push notifications (FCM).Push notifications for mobile and web, plus in-app messages and email, managed from one dashboard.
Best forA founder who built the mobile app with Expo and wants push working on both stores without setting up Firebase and APNs by hand.A mobile-first app for a mostly Android audience that needs push notifications and login working within the week.A web SaaS that wants browser push to bring users back, with segments and scheduling set up by a non-developer.
Skip it ifYour product is a web SaaS: Expo's push only reaches native iOS and Android apps, not the browser.Your SaaS runs on relational data like charges, plans and reports that you will want to query with SQL.Your app already passed 1,000 monthly active users on mobile: from there you pay per MAU in dollars, while Firebase Cloud Messaging stays free.
SetupNeeds a developer. Android push in a day; iOS waits on Apple Developer enrollment, which for a company needs a D-U-N-S number.Needs a developer. Login and push on a test app in a day; security rules and data modeling take most of a week.A little code. Web push in an afternoon; iOS depends on Apple Developer enrollment, which needs a D-U-N-S number if you enroll as a company.
PricePush is free. Expo's paid plans (builds, updates) start at $19/month.Free Spark plan, then pay-as-you-go (Blaze)Growth from $19/month, plus $0.012 per mobile MAU and $0.004 per web push subscriber.
What it costs in practiceApp sending 50,000 push a month: $0 to Expo. You still pay Apple $99/year, and builds on the free plan; with Starter, $19/month includes $45 of build credit (an iOS build is $2 to $4). Estimated.With 2,000 monthly users, login and push are free. If each user loads 200 documents a day, that's 400k reads a day, about 12 million a month. The free 50k a day covers about 1.5 million; the other 10.5 million at $0.03 per 100k (us-central1) cost about $3/month on Blaze (estimate; the price varies by region).App with 3,000 monthly active users on mobile: Growth at $19 + 3,000 × $0.012 = $36, so about $55/month. Under 1,000 active users it stays at $0. Estimated.
Free planSending push through Expo costs nothing; the limit is 600 notifications per second per project.Spark plan: 50k monthly users, 1 GiB Firestore with daily read/write limits, push at no cost.Unlimited mobile push up to 1,000 monthly active users, web push to up to 10,000 subscribers per send and 10,000 emails a month.
Free tierUnlimited (600/second per project)Push free; 50k MAU; 1 GiB Firestore1,000 mobile MAU; web push to 10k per send
Paid plansPush is free; Expo plans from $19/monthFree on Spark (50k MAU included)From $19/month + usage
PlatformsiOS and AndroidAndroid, iOS and webiOS, Android, web, email, in-app
Open sourceNo: noNo: noNo: no
Before you build
  • Since SDK 53, push doesn't work in the Expo Go test app. You need a development build, which goes through Expo's build service or your own machine.
  • iOS credentials require a paid Apple Developer account.
  • Each project can send 600 notifications per second; above that, requests fail and your server has to slow down and retry.
  • Delivery is best effort: an 'ok' receipt doesn't mean the user saw it, and you must read receipts to stop sending to uninstalled apps.
  • The free build plan has a low-priority queue that can wait 90+ minutes at peak; faster builds start at $19/month.
  • Since February 3, 2026, Cloud Storage requires the Blaze plan, even for the default bucket. On Spark, uploads and downloads fail until you add a card.
  • Budget alerts don't stop anything: they only send email. On Blaze, a loop of reads keeps being billed until you notice.
  • Firestore bills every document a query returns, and every change a live listener receives counts as a new read, so a busy list screen adds up fast.
  • Phone (SMS) login only works on Blaze and is billed per SMS sent, on top of the free 50k users.
  • The database location is permanent: pick a far-away region by mistake and your users stay farther from their data for good.
  • On iPhone, web push only works if the user adds your site to the home screen and opens it from there. A Safari tab can't even ask for permission.
  • Push to iOS apps needs a paid Apple Developer account with admin access.
  • The free plan keeps only 30 days of reports and has no webhooks, event tracking or CSV export; past 1,000 mobile active users you move to paid.
  • On the paid plan you pay per mobile active user and per web push subscriber, in dollars, so the bill grows with your user base, not with how much you send.
Price checked

Checked on Oct 28, 2026 · official pricing

Checked on Oct 28, 2026 · official pricing

Checked on Oct 28, 2026 · official pricing

Prices are read from each official pricing page on the date shown and can change. Always confirm before signing up.

Faundr

Picked your tools? Build it with AI, safely.

Faundr keeps your project’s memory, blocks what can’t be undone and tells you if it’s safe to launch, inside Claude Code and Codex.