Using push notifications

Edit this page

Learn about push notification services that are compatible with Expo and React Native apps.


Expo apps can work with any notification service or any of the notification capabilities offered by the Android and iOS operating systems. Even if a package doesn't yet exist for a feature, native code can be written to access it via the Expo Modules API, and native project configurations can be automated using config plugins. The following options provide purpose-built Expo integrations, including config plugins where necessary, for implementing push notifications in your app:

The expo-notifications library is designed and tested to work with Expo's push notification service and notifications sent directly from FCM and APNS. Some advanced features may not be compatible with third-party providers, as they often have their own native and React Native SDKs optimized for their services.

Expo push notifications

Expo Notifications provides a unified API for handling push notifications across Android and iOS. It integrates seamlessly with your Expo account and is free to use.

Key capabilities

Considerations and limitations

  • iOS notification extensions for adding additional content to notifications, such as images, are not formally included or supported, but you can add them with custom native code and configuration.
  • Volumes are limited to 600 notifications per second per project.

For implementation details, see the following guides:

Expo push notifications overview

Learn more about Expo push notifications.

Expo Notifications server-side SDK options

Learn more about sending push notifications using a server.

OneSignal

OneSignal is a customer engagement platform that provides push notifications, in-app messaging, SMS, and email services for web and mobile apps. OneSignal supports rich media in notifications and engagement analytics. It includes an Expo config plugin for direct integration into your Expo project.

OneSignal Expo SDK Setup

Follow this guide for a step-by-step setup on how to integrate OneSignal in your Expo project.

Braze

Braze is a customer engagement platform that delivers personalized, cross-channel messaging through push notifications, in-app messaging, email, SMS, and web. Braze supports rich notification content, push notification campaigns, and support for resending notifications after failed deliveries on Android. It provides a React Native SDK and a config plugin. Check out the Expo example app for more details.

Braze Expo Setup

Follow this guide for a step-by-step setup on how to integrate Braze in your Expo project.

Customer.io

Customer.io is a customer engagement platform that allows you to design powerful automated workflows utilizing push notifications, in-app messaging, email, SMS capabilities, and more. Its visual workflow builder allows you to automate complex, data-driven campaigns across multiple channels. Customer.io supports device-side metrics collection that can be used to customize push notifications tailored to user behaviors and preferences. Customer.io provides an Expo plugin for direct integration with your Expo project and documentation for using Customer.io push notifications alongside other providers.

Customer.io Expo Quick Start Guide

Follow this guide for a step-by-step setup on how to integrate Customer.io in your Expo project.

Send notifications directly via FCM and APNs

You may choose to send directly to platform push API's from your backend. In this case, you can still use expo-notifications to retrieve the native push token and configure notifications separately for each platform.

Although the client-side code remains cross-platform with expo-notifications, you will need to implement server-side logic to interact with the FCM and APNs APIs individually.

React Native Firebase messaging

React Native Firebase provides a messaging module that lets you use Firebase Cloud Messaging (FCM) as a unified push notification service for both Android and iOS. While FCM is often associated with Android notifications, it also supports iOS by routing messages through Apple Push Notification service (APNs) behind the scenes.

This approach differs from using FCM solely for Android notifications. Instead, Firebase's cross-platform SDK handles notifications for both platforms through a single service.

Even though FCM handles notifications for both platforms, iOS notifications still go through APNs. Firebase automatically manages this routing. Learn more in the React Native Firebase messaging documentation.

Tips and important considerations

  • Avoid mixing client-side implementations: Different notification services may have conflicting client-side implementations. Use a consistent approach to prevent potential issues.
  • Web notifications: Expo notifications do not support web notifications. However, some third-party solutions may offer this capability. Consider your app's requirements when choosing a service.
  • Token management: Track both Expo push tokens and native device tokens in your database. This provides flexibility for future integrations, especially with marketing tools that send notifications directly via FCM or APNs.