Mobile — Push Notifications
APNs, FCM, OneSignal, Pusher Beams — sending pushes to iOS and Android in 2026.
Push on iOS goes through APNs (Apple Push Notification service); push on Android through FCM (Firebase Cloud Messaging), which acts as a proxy to the Android delivery system. Most cross-platform providers are wrappers over those two. For in-app toasts / inbox UI see notifications. For wrapping a web app to get push see Mobile Packaging and PWA.
Direct / first-party
- ★ APNs (HTTP/2) — Apple's push service; free; auth via APNs auth keys (preferred over certs — keys don't expire). iOS/macOS/watchOS/tvOS/visionOS.
- ★ FCM — Google's free push service; iOS, Android, web. Acts as APNs proxy on iOS for free.
- WNS (Windows Notification Service) — for Windows apps if you go cross-platform that way.
Cross-platform hosted
- ★ OneSignal — generous free tier (unlimited subscribers historically; check current limits); SDKs for native, RN, Flutter, Capacitor, web. The most-recommended hosted option for indie/SMB.
- Pusher Beams — Pusher's push product; reasonable pricing; good DX.
- Knock — multi-channel (email, SMS, push, in-app); paid; great DX. See notifications.
- Novu — open-source notification infrastructure; self-hostable + hosted free tier.
- Customer.io — full lifecycle messaging; paid.
- Airship — enterprise; paid.
- Braze — enterprise; paid.
- Iterable — enterprise; paid.
RN / Expo specific
- ★ Expo Push Notifications — Expo proxies APNs/FCM via its push service; free, included with Expo. Good defaults for indie RN.
- react-native-firebase messaging — direct FCM in RN.
- react-native-onesignal — OneSignal SDK.
Flutter specific
- firebase_messaging — official FCM Flutter plugin.
- OneSignal Flutter SDK.
- awesome_notifications — local + push, rich UI.
Capacitor specific
- @capacitor/push-notifications — Capacitor's plugin (APNs / FCM directly).
- OneSignal Capacitor plugin.
Self-host
- Gotify — minimal self-host push for Android; has its own client app (no FCM). Free.
- ntfy — self-host or hosted; uses HTTP polling or its own client; small footprint. Free.
- Apprise — fanout to dozens of services from a single API; free, OSS.
- UnifiedPush — Android push standard not requiring Google Play services; growing in FOSS / F-Droid ecosystem.
Web push
- ★ Web Push API with VAPID — standard; ship from your backend with
web-push(npm) or your platform's helper. - Apple Web Push (Safari, iOS 16.4+) — supported but only after the user installs the PWA to home screen.
- See PWA.
Rich / advanced features
- Live Activities / Dynamic Island (iOS) — native iOS-only; APNs HTTP/2 push to ActivityKit.
- Notification extensions — service / content extensions on iOS for decryption / mutation.
- Notification channels (Android 8+) — categorize per channel, user-controllable.
- WorkManager / BackgroundTasks — for scheduled local notifications.
What you give up if you skip a hosted provider
- Segmentation, A/B testing, scheduled / drip campaigns, analytics, deliverability dashboards, in-app messaging, journeys.
- For transactional pushes only (one user → one notification on event), DIY APNs + FCM is fine and free.
Pick this if…
- Default indie / SMB: OneSignal.
- Already in Expo, want simplest path: Expo Push.
- Marketing / drip / segments: Knock, Customer.io, or Iterable.
- Self-host / FOSS: Novu, ntfy, or Gotify (Android-only client).
- Transactional only, no marketing: APNs + FCM directly.
- Live Activities / Dynamic Island: native APNs HTTP/2 directly; no provider abstracts this well in 2026.