Available on
GitHub
and npm.
Installation
iOS setup
1
Set iOS deployment target to 15.0+
Update your Podfile:
2
Install CocoaPods
3
Forward the APNs callbacks
In your Swift An older app with an Objective-C
AppDelegate, hold a CourierDelegate and forward the registration callbacks to it. This is what syncs the token.AppDelegate inherits from CourierReactNativeDelegate instead. On Expo, see Expo below.Android setup
1
Add the Jitpack repository
In your
android/build.gradle:2
Set minimum SDK version
In your
android/build.gradle:3
Extend CourierReactNativeActivity
Update your
MainActivity to extend CourierReactNativeActivity. This lets the SDK manage user state across app sessions.4
Use a Material theme
The prebuilt inbox and preference center only render correctly when your app theme extends
Theme.MaterialComponents. Set it in res/values/styles.xml.Authentication
Courier authenticates with a JWT that your backend mints with your Courier API key, never in client code. covers the token flow, scope strings, reading auth state, signing out, and token refresh. Using the EU datacenter? See . Credentials persist across app sessions, so you sign in once per user rather than on every launch.Inbox
is the setup flow. These are the types it uses on React Native.
Every callback and action these expose is documented per platform in .
Inbox theme
The theme is a prop, and the two platforms take separate style objects. Fonts resolve differently on each: a family name on iOS, an asset path on Android.

Default Inbox on iOS and Android


Styled Inbox on iOS and Android
Push notifications
is the setup flow, from connecting APNs and FCM to a device that receives push. It covers the native wiring above,setTokenForProvider, permission, and reading the payload on tap.
Push notifications require a physical device. Simulators and emulators don’t reliably support push token registration or notification delivery.
Two things live only here. On Android, forward both
FirebaseMessagingService callbacks to Courier.Companion.onMessageReceived and Courier.Companion.onNewToken. On iOS, add a to track delivery while your app is closed.
Expo
Expo managesAppDelegate (iOS) and MainActivity (Android) itself, so the subclassing above doesn’t apply. Follow the Expo setup guide on GitHub, which wires Courier into ExpoAppDelegate.
Preferences
is the setup flow. These are the types it uses on React Native.Topics and sections are configured in the . See for how preference enforcement works at send time.
Preferences theme
The theme takes platform-specific style objects, the same shape as the inbox theme above. applies automatically when you supply abrandId.
Default Preferences on iOS and Android
Styled Preferences on iOS and Android
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.