Skip to main content
The Courier React Native SDK gives you prebuilt components and TypeScript APIs. It handles authentication, token management, and real-time delivery on iOS and Android. This page is the React Native reference: what to install, how to configure both native projects, and the TypeScript API surface. Each flow is written once and applies to every platform. 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 AppDelegate, hold a CourierDelegate and forward the registration callbacks to it. This is what syncs the token.
An older app with an Objective-C 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 needs the enabled in your workspace.

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 iOSDefault Inbox on Android

Default Inbox on iOS and Android

Styled Inbox on iOSStyled Inbox on Android

Styled Inbox on iOS and Android

Branding from also applies. The SDK reads primary color and footer visibility from your brand settings.

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 manages AppDelegate (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 a brandId.

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.

Initialization

Token management

Inbox

Preferences

Branding

URL tracking

Pass any tracking URL found inside a push notification payload or inbox message:
See the full Courier API reference at .