We recommend updating to the versions listed below or higher if available.

iOS SDK 5.1.3

Github link

⚠️ Behavior Changes

  • When you call the jsonRepresentation method of OSPushSubscriptionState, if a property is null, the value will now be "" instead of the string literal "nil" in #1373

🐛 Bug Fixes & Misc Improvements

  • Rename internal method that was called setSharedInstance to workaround false App Store flagging in #1375
  • Improve Swift concurrency safety to address crash reports in production #1376
  • For our server: Add OneSignal-Subscription-Id to Create User request which improves last_active data in #1372

Android (Google) SDK 5.1.6

Github link

🐛 Bug Fixes

  • Make ServiceBuilder.getService thread safe (#2012)
    • Will fix some null Context crashes from initWithContext
    • Addresses issues; #1990 & #1917
  • 4.x.x migration: Missing onesignalId during initWithContext (#2009)

🔧 Maintenance

  • [Internal only] Upgraded compileSdkVersion to 34 (#1994)
    • Apps can still use Android compile SDK 33, target SDK version unaffected
  • [Internal only] Added nested JSONObject support to JSONObject.toMap() (#2004)
  • [Internal only] Upgrade tests to JUnit5 and Kotest to 5.8.0 (#2006)

Android (Huawei) SDK 4.8.8

Github link

✨ Enhancements

  • Add setting to prefer HMS over FCM #1984
    • Add under your tag if you like to use this setting.
    • See OneSignal's Prefer HMS over FCM documentation page for more details.

🐛 Bug Fixes

  • Attempt retrying OutOfMemoryError errors when starting threads. #2027
    • Make sure your app doesn't have any memory leaks and is handling onTrimMemory so the
  • SDK can move on once memory is free
  • Fix rare null crash with taskQueueWaitingForInit.poll() #2026
  • Fix rare null crash with timeFocusedAtMs #2025

Unity SDK 5.1.1

Github link

  • Changed
    • Updated included Android SDK to 5.1.6
    • Updated included iOS SDK to 5.1.3

React Native/Expo SDK 5.1.0

Github link

🎉 New Methods 🎉

  • Add getter for onesignalId and externalId and a UserState Observer to be notified of changes in [#1627]
  • Add asynchronous getter methods for Notifications permission and Push Subscription token, id, optedIn in [#1649]
    • 🛑 Deprecated methods 🛑
      • Notifications.hasPermission, User.pushSubscription.id, User.pushSubscription.token, and User.pushSubscription.optedIn are now deprecated but non-breaking.
  • See the Push Subscription Namespace API Reference and Notifications Namespace API Reference in the Migration Guide for usage of new methods getPermissionAsync, getIdAsync, getTokenAsync, and getOptedInAsync.

⚠️ Minor Breaking Change ⚠️

  • API update for PushSubscriptionState: the Push Subscription observer will now be passed nullable properties. Please account for the possibility of the push subscription token and id being null.

Native Changes

  • Bump Android Native Version to 5.1.6
  • Bump iOS Native Version to 5.1.3

Flutter SDK 5.1.2

Github link

🔧 Native SDK Dependency Updates Only

  • Update Android SDK from 5.1.2 to 5.1.6
    • Which include an improvement to banner-style IAMS: link, a dependency update for firebase-messaging and play-services-basement
    • Also includes fix for null pointer exceptions from calling getAppContext when the SDK is initializing: link
    • For full changes, see the native release notes
  • Update iOS SDK from 5.1.0 to 5.1.3
    • Includes fix to improve Swift concurrency safety to address crash reports in production: link

Cordova/Ionic SDK 5.1.0

Github link

🎉 New Methods 🎉

  • Add getter for onesignalId and externalId and a UserState Observer to be notified of changes in [#959]
  • Add asynchronous getter methods for Notifications permission and Push Subscription token, id, optedIn in [#977]
    • ⚠️ Previous methods Notifications.hasPermission, User.pushSubscription.id, User.pushSubscription.token, and User.pushSubscription.optedIn are now deprecated but non-breaking. ⚠️
    • See the Push Subscription Namespace API Reference and Notifications Namespace API Reference in the Migration Guide for usage of new methods getPermissionAsync, getIdAsync, getTokenAsync, and getOptedInAsync.

Native Changes

  • Bump Android Native Version to 5.1.6
  • Bump iOS Native Version to 5.1.3

.NET MAUI SDK 5.1.1

Github link

This release includes new native SDK versions that resolve multiple crashes and issues.

Native SDK Updates

  • Bump iOS Native Version to 5.1.3
  • Bump Android Native Version to 5.1.6

We've added support for Segments with time-based rules (e.g., first session, last session, etc.) and also simplified targeting inactive users. Now you can target your inactive users by including a segment based on last session behavior.

Inbox Service Providers (ISP) like Gmail, Outlook, iOS Mail, and Yahoo! Mail, AOL, and Verison Mail require senders to provide a One Click Unsubscribe option. The unsubscribe button is rendered at the discretion of the ISP based on sending criteria, which may include a daily sending volume greater than 5,000 emails.