Tooling

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.

On this page