# Best push notification services for React Native and Expo

From free delivery services to full engagement platforms, these are 10 ways to send push from a React Native app. Most now have an Expo config plugin, but none of them can run push in Expo Go.

Canonical URL: https://tappd.io/best/react-native-push-notifications
Last updated: 2026-11-05
Facts last checked: 2026-11-05

Tappd publishes this guide and is one of the options listed. It isn't a ranking. See [how we compare tools](https://tappd.io/how-we-compare).

## Comparison

| Tool | React Native package | Expo setup | Starting price |
| --- | --- | --- | --- |
| Tappd | Tappd Mobile SDK | Not documented | $0/mo, then email usage |
| Expo Push Service | expo-notifications | Built in; needs a development build | $0 |
| Firebase Cloud Messaging | @react-native-firebase/messaging | Config plugin; needs a development build | $0 |
| OneSignal | react-native-onesignal | onesignal-expo-plugin | Free under 1,000 MAU, then $19/mo + $0.012 per MAU |
| Pushwoosh | pushwoosh-react-native-plugin | pushwoosh-expo-plugin | Free to 1,000 MAU, then $13 per 1,000 MAU |
| Airship | @ua/react-native-airship | airship-expo-plugin | Not published |
| CleverTap | clevertap-react-native | @clevertap/clevertap-expo-plugin | $85/mo for up to 5,000 MAU |
| Braze | @braze/react-native-sdk | @braze/expo-plugin | Not published |
| Customer.io | customerio-reactnative | customerio-expo-plugin | $100/mo for 5,000 profiles |
| Klaviyo | klaviyo-react-native-sdk | klaviyo-expo-plugin | Free to 250 active profiles, then from $20/mo |

## What to check first

- **Plan for a development build**: Expo says that from SDK 53, Expo Go doesn't support push notifications, so you need a development build whichever service you choose. Test push on one before you compare tools.
- **Separate delivery from orchestration**: Expo Push and FCM get a message to the device. The other tools here also decide who gets it and when, so the real choice is whether you want to build that yourself.
- **Check iOS rich media early**: Images on iOS generally need a Notification Service Extension. Some Expo plugins can configure it for you, so check this if rich push matters to you.
- **Match the Expo plugin to your SDK**: Plugins are versioned separately from the React Native SDKs, and some support a specific range of Expo versions. Check the plugin's latest release and supported range before committing.

## The options

### Tappd

Best for: bare React Native apps that want journeys, in-app, and email without MAU fees

Tappd's mobile SDK is a React Native library for iOS 12+ and Android API 21+, on React Native 0.60 and later. It covers push through FCM and APNs, in-app messages, and event tracking on one profile.

The tradeoff: Its docs don't cover Expo, and the install steps assume a bare project, so check with us first if you're on Expo. Tappd also has no native Swift, Kotlin, or Flutter SDK, and its push docs don't cover rich media.

### Expo Push Service

Best for: Expo teams that want free delivery and will build the logic themselves

Expo's service has no charge per notification, and it pairs with the expo-notifications package. It's the shortest path if your backend already decides who gets what.

The tradeoff: It's limited to 600 notifications per second per project, and to a 4,096-byte payload. It handles delivery only, and an image on iOS needs a Notification Service Extension.

### Firebase Cloud Messaging

Best for: teams already on Firebase that want a direct, no-cost route

React Native Firebase brings FCM to React Native, and its npm listing points to Invertase's repository. Its docs recommend config plugins for setup.

The tradeoff: You build targeting and flows yourself, and it can't be used in Expo Go. Android works out of the box, while iOS needs extra setup for notification images.

### OneSignal

Best for: teams that want push and in-app with a dashboard and a free start

OneSignal publishes both a React Native SDK and an Expo plugin, and its links support custom schemes and universal links for push and in-app.

The tradeoff: Growth bills per MAU, including devices that haven't opted in. Rich notifications on iOS need a Notification Service Extension.

### Pushwoosh

Best for: teams that want an official Expo guide and many channels

Pushwoosh has a React Native plugin, an Expo plugin applied at prebuild, and an official Expo guide, plus WhatsApp and messengers on Omnichannel.

The tradeoff: It's billed per MAU, and third-party messaging fees are separate.

### Airship

Best for: mobile-first brands that want rich media on iOS

Airship's React Native SDK supports images, GIFs, and video on iOS through a service extension, which its Expo plugin can configure.

The tradeoff: Prices aren't published. Its Expo plugin was last published in June 2025, much earlier than its React Native SDK, so check that it fits your Expo version.

### CleverTap

Best for: consumer apps that want analytics alongside push

CleverTap has a React Native SDK and an Expo plugin with a rich media option in its configuration, and a published Core price.

The tradeoff: Core's MAU tiers exclude add-ons, and Pro and Ultimate prices aren't published.

### Braze

Best for: large teams running push among many channels

Braze publishes a React Native SDK and an Expo plugin. Rich push works on Android by default, and on iOS through a plugin flag.

The tradeoff: Prices aren't published, and pricing combines MAU with pooled Action Credits.

### Customer.io

Best for: teams whose lifecycle program is led by email and event data

Customer.io has a React Native SDK and an Expo plugin, which sets up images and deep links for push. Push is unlimited on every plan.

The tradeoff: It bills by profile rather than by MAU, and starts at $100/mo.

### Klaviyo

Best for: ecommerce brands that already send email on Klaviyo

Klaviyo's SDK and Expo plugin add push to its email and SMS flows, with unlimited push on every plan. The plugin supports Expo SDK 54 through 57.

The tradeoff: On Android, a GIF shows as a static first frame and a video sends as text only. Rich media on iOS needs a Notification Service Extension, and Klaviyo doesn't offer web push.

## Which one fits your team

- You're on Expo and only need free delivery: Expo Push Service
- You're on bare React Native and want journeys with no MAU fee: Tappd
- You're on Expo and want a dashboard and a free start: OneSignal
- You already use Firebase: Firebase Cloud Messaging
- You need messengers such as WhatsApp too: Pushwoosh

## FAQ

### Do push notifications work in Expo Go?

No. Expo says that from SDK 53, Expo Go doesn't support push notifications, so you need a development build. That applies whichever service you choose.

### Is Expo's push service free?

Yes. Expo says there's no cost for sending through its push service. It limits you to 600 notifications per second per project.

### Does Tappd work with Expo?

Tappd's docs cover React Native 0.60 and later, but they don't cover Expo, and the install steps assume a bare project. Talk to us before choosing Tappd for an Expo app.

## Sources

- [Expo: push FAQ](https://docs.expo.dev/push-notifications/faq/)
- [Expo: what you need to know](https://docs.expo.dev/push-notifications/what-you-need-to-know/)
- [Expo: sending notifications](https://docs.expo.dev/push-notifications/sending-notifications/)
- [Tappd: mobile SDK introduction](https://docs.tappd.io/mobile-sdk/introduction)
- [React Native Firebase docs](https://github.com/invertase/react-native-firebase/tree/main/docs)
- [OneSignal: Expo SDK setup](https://documentation.onesignal.com/docs/en/react-native-expo-sdk-setup)
- [Pushwoosh Expo plugin](https://www.npmjs.com/package/pushwoosh-expo-plugin)
- [Airship: React Native install](https://www.airship.com/docs/developer/sdk-integration/react-native/install)
- [CleverTap Expo plugin](https://developer.clevertap.com/docs/clevertap-expo-plugin)
- [Braze: rich push](https://www.braze.com/docs/developer_guide/push_notifications/rich/)
- [Customer.io: Expo quick start](https://docs.customer.io/integrations/sdk/expo/quick-start-guide/)
- [Klaviyo Expo plugin](https://www.npmjs.com/package/klaviyo-expo-plugin)