- 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
| Requirement | Value |
|---|---|
| Min iOS version | 13.0 |
| Package managers | Swift Package Manager, CocoaPods |
Installation
pod install from your project’s ios/ directory after updating the Podfile.
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.For a full walkthrough of JWT generation, see the Inbox Authentication guide.
Generate a JWT on your backend
Call the Issue Token endpoint from your server with the scopes your app needs:
Sign in the user
Pass the JWT to the SDK where you manage user state. Credentials persist across app sessions. If the token expires, generate a new one from your backend and call
signIn again; the SDK does not handle token refresh automatically.Inbox
Courier Inbox provides a prebuilt notification center UI for SwiftUI and UIKit. It supports theming, custom renderers, and real-time updates.For an overview of how Courier Inbox works and how to send messages to it from your backend, see Get Started with Inbox and Send an Inbox Message.
Prebuilt UI
Theming
Pass aCourierInboxTheme to customize fonts, colors, unread indicators, swipe actions, and button styles. Both light and dark themes are supported.


Custom Inbox UI
For full control over rendering, useaddInboxListener to receive raw message data and build your own UI:
Message Actions
Push Notifications
The SDK simplifies push notification setup with automatic token syncing, delivery tracking, and permission management.Push notifications require a physical device. Simulators do not reliably support push token registration or notification delivery.
Provider Setup
| Provider | Token Syncing |
|---|---|
| APNS | Automatic (via CourierDelegate) |
| Firebase FCM | Manual |
| Expo | Manual |
| OneSignal | Manual |
| Pusher Beams | Manual |
For step-by-step provider credential setup, see the APNS integration guide or FCM integration guide.
Automatic Token Syncing (APNS)
ExtendCourierDelegate in your AppDelegate to automatically sync APNS tokens and handle notification events:
Manual Token Syncing
For FCM or other providers, sync tokens manually:Notification Service Extension
To track notification delivery when the app is not running, add a Notification Service Extension:Download the template
Download
CourierNotificationServiceTemplate.zip and run sh make_template.sh. Watch the video walkthrough on GitHub for a step-by-step guide.Requesting Permission
Prompt the user to allow notifications. iOS shows a system dialog the first time; if the user denies, they must enable notifications from device Settings.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 UI for users to manage which notification topics and channels they subscribe to.Topics and sections are configured in the Preferences Editor. See Preferences Overview for how preference enforcement works at send time.
Preference Modes
- Topic mode (
.topic): shows subscription topics the user can toggle on or off - Channels mode (
.channels([.push, .sms, .email])): shows per-channel controls for each topic
Theming
Pass aCourierPreferencesTheme to customize fonts, colors, toggle styles, and section headers. Light and dark themes are both supported, and Courier Studio branding is automatically applied when a brandId is provided.


CourierClient
For advanced use cases,CourierClient provides direct access to the Courier API:
