Skip to content
Ivan Krešić edited this page Apr 28, 2026 · 2 revisions

Infobip Mobile Messaging Expo Plugin

Expo config plugin for the Infobip Mobile Messaging React Native SDK. Automates native project setup for push notifications, Notification Service Extension, Firebase, and deep linking.

For installation and a quick start, see the README. For SDK runtime usage (message handling, in-app chat, inbox, etc.), see the React Native plugin wiki.

Expo Go is not supported. This plugin requires a development build (Expo Go does not support config plugins).

Compatibility

Component Version
Expo SDK 55+
React Native 0.83+
Infobip RN Plugin 14.8.0+
iOS SDK (MobileMessaging) 15.0.0
Android SDK 14.14.2
iOS Deployment Target 15.1+ (Expo SDK 55 floor)
Android minSdkVersion 24 (Expo SDK 55 floor; Infobip Android SDK supports 21+)
Xcode 16+
Node.js 18+

Configuration Reference

All props are optional. Add them to the plugin entry in app.json:

["infobip-mobile-messaging-expo-plugin", { ...props }]

iOS Props

Prop Type Default Description
iosMode 'development' | 'production' 'development' APNs environment. Must match the provisioning profile's aps-environment -- a mismatch causes APNs to silently drop pushes. See Troubleshooting -- Common Error Reference.
iosAppGroupSuffix string 'infobip' App group suffix. Full ID becomes group.<bundleId>.<suffix>.
iosAppGroup string -- Full app group ID override. When set, iosAppGroupSuffix is ignored. Must start with group..
enableNotificationExtension boolean true Creates the NSE target for rich push and delivery reports.
iosNSEFilePath string -- Path to a custom NotificationService.swift. Use this when handling notifications from multiple push SDKs in the same NSE -- see Troubleshooting -- Multiple Push SDK Conflicts.
iosDeploymentTarget string auto-detected from main app target's IPHONEOS_DEPLOYMENT_TARGET, falling back to '15.1' NSE target's minimum iOS deployment target. Override only if you need to pin to a specific value.
devTeam string -- Apple Development Team ID. Only needed for local Xcode builds; EAS managed credentials handle this automatically -- see EAS Build Setup -- Managed Credentials.
nseVersion string '15.0.0' MobileMessagingNotificationExtension pod version. Pinned to the RN plugin's mmVersion -- mismatch can cause silent data corruption in shared Keychain/UserDefaults. Verify with: grep mmVersion node_modules/infobip-mobile-messaging-react-native-plugin/*.podspec.

Notice -- iOS linkage modes

Static libraries (Expo default) and static frameworks (expo-build-properties useFrameworks: "static") are fully supported. Dynamic frameworks (useFrameworks: "dynamic") are not supported on Expo SDK 55: pod install aborts with "transitive dependencies that include statically linked binaries: (ExpoModulesCore, ExpoModulesJSI)". This is an Expo SDK 55 limitation tracked upstream in expo/expo#43238; use the default linkage or static mode instead. See also Troubleshooting -- use_frameworks! Issue.

Android Props

Prop Type Default Description
enableGoogleServices boolean true Adds Google Services Gradle plugin. Disable if another plugin already handles this.
googleServicesFilePath string -- Path to google-services.json. Plugin prop takes precedence over expo.android.googleServicesFile when both are set.

Shared Props

Prop Type Default Description
deepLinkScheme string -- Custom URL scheme for deep links (e.g., 'myapp'). Configures URL schemes on iOS and intent filters on Android.

Minimal Example

The simplest configuration with defaults:

{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.example.myapp"
    },
    "android": {
      "package": "com.example.myapp",
      "googleServicesFile": "./google-services.json"
    },
    "plugins": ["infobip-mobile-messaging-expo-plugin"]
  }
}

This gives you:

  • iOS: push entitlements (development), NSE target, app group group.<bundleId>.infobip
  • Android: Google Services plugin applied, google-services.json copied

Full Example

All options specified:

{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.example.myapp"
    },
    "android": {
      "package": "com.example.myapp",
      "googleServicesFile": "./google-services.json"
    },
    "plugins": [
      [
        "infobip-mobile-messaging-expo-plugin",
        {
          "iosMode": "production",
          "iosAppGroup": "group.com.example.myapp.infobip",
          "enableNotificationExtension": true,
          "iosDeploymentTarget": "15.1",
          "devTeam": "ABCDE12345",
          "nseVersion": "15.0.0",
          "enableGoogleServices": true,
          "googleServicesFilePath": "./google-services.json",
          "deepLinkScheme": "myapp"
        }
      ]
    ]
  }
}

Further Reading