- Inbox — prebuilt notification center with theming and custom rendering
- Push Notifications — automatic token syncing and delivery tracking for APNS and FCM
- Preferences — prebuilt UI for users to manage their notification settings
Installation
iOS Setup
Set iOS deployment target to 15.0+
Install CocoaPods
Android Setup
Add the Jitpack repository
android/build.gradle:Set minimum SDK version
android/build.gradle:Extend CourierReactNativeActivity
MainActivity to extend CourierReactNativeActivity. This allows the SDK to manage user state across app sessions.Authentication
All SDK features (Inbox, Push, Preferences) require a signed-in user. Authentication is JWT-based; your backend generates a token and the SDK manages credentials across app sessions.Generate a JWT on your backend
Sign in the user
signIn again; the SDK does not handle token refresh automatically.Sign out when done
EU-hosted workspaces
For EU-hosted Courier workspaces, pass the built-in EU preset throughapiUrls:
Authentication state
Inbox
Courier Inbox provides a prebuilt notification center component. It supports theming and real-time updates on both iOS and Android.Theme.MaterialComponents for the prebuilt UI to render correctly. Set this in your res/values/styles.xml.Prebuilt Component


Default Inbox on iOS and Android
Theming
Pass a theme object to customize the inbox appearance. The theme supports separate iOS and Android style properties, custom fonts, colors, and button styles.

Styled Inbox on iOS and Android
Custom Inbox UI
For full control over rendering, useaddInboxListener to receive raw message data and build your own UI:
Message Actions
Track every event a Courier message can receive:Reading the feed
Push Notifications
The SDK simplifies push notification setup with automatic token syncing and delivery tracking for both APNS (iOS) and FCM (Android).Provider Setup
Configure your push provider in the Courier dashboard:iOS Push Setup
Enable the Push Notifications capability
Forward APNS callbacks to Courier
AppDelegate.h so it inherits from CourierReactNativeDelegate. The SDK registers for remote notifications, syncs the APNS token to Courier, and forwards delivery / click events to your JavaScript listeners.ExpoAppDelegate.Add a Notification Service Extension (recommended)
Android Push Setup
Set up Firebase
google-services.json, and place it in android/app/. Follow the Firebase Android setup guide for the rest.In android/build.gradle:android/app/build.gradle:Extend CourierReactNativeActivity
MainActivity so the SDK can receive push delivery and click events while the app is in foreground.Create a FirebaseMessagingService
FirebaseMessagingService directly and forward both callbacks to Courier. The SDK caches the FCM token, uploads it to Courier when a user is signed in, and broadcasts delivery events through its event bus.Register the service in AndroidManifest.xml
Manual Token Syncing
Use this for any provider Courier doesn’t sync automatically (Expo, OneSignal, Pusher Beams, etc.) or to push tokens you obtain elsewhere:Handling Push Events
Register a listener to respond when notifications are delivered or tapped. This is useful for deep linking, analytics, or showing in-app alerts.Requesting Permission
Prompt the user to allow notifications (iOS shows a system dialog; Android 13+ requires runtime permission). You can also check the current permission status without prompting.Send a Test Notification
Once you’ve completed the setup above, send a test push using the Send API withpush as the routing channel. See the APNS sending guide or FCM sending guide for complete examples.
Preferences
Courier Preferences provides a prebuilt component for users to manage which notification topics and channels they subscribe to.Default Preferences on iOS and Android
Preference Modes
- Topic mode (
{ type: "topic" }): shows subscription topics the user can toggle on or off - Channels mode (
{ type: "channels", channels: ["push", "sms", "email"] }): shows per-channel controls for each topic
Theming
Pass a theme object with platform-specific style properties to customize fonts, colors, and toggle styles.Styled Preferences on iOS and Android
Expo
If you are using Expo, additional setup is required for push notification token syncing. You’ll need to update yourAppDelegate (iOS) and MainActivity (Android) with Courier-specific code since Expo manages these files differently.
See the full Expo setup guide on GitHub for step-by-step instructions for both platforms.
CourierClient
For advanced use cases,CourierClient is a low-level wrapper around the Courier API. Each client holds its own credentials, so you can spin up as many as you need.
