Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Jan 6, 2026

🔖 Auto-Generated Release Notes

Channels: beta

🚀 New Features

  • feature: Exposing accessors thru suspend (#2502)

🐛 Bug Fixes

  • fix: a rare NPE from PermissionViewModel introduced in 5.4.0 (#2504)
  • fix: NPE in SyncJobService since 5.4 (#2500)
  • fix: Rare User and Subscription creates and updates processing out of order (introduced in 5.4.0) (#2419)
  • fix: Remove throwing "initWithContext was not called or timed out", introduced in 5.4.0 (#2408)

🔧 Improvements

  • Improvement: failure message shows that appID is missing (#2506)
  • improvement: Offloaded work on background threads. (#2394)

📦 Version

5.5.0-beta


This change is Reviewable

@jinliu9508 jinliu9508 changed the title Release SDK v5.5.0-beta chore: Release SDK v5.5.0-beta Jan 6, 2026
Copy link
Contributor

@nan-li nan-li left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just merged in #2512, lets get that in too
#2515 is approved, ok to go too?

@abdulraqeeb33
Copy link
Contributor

Just merged in #2512, lets get that in too #2515 is approved, ok to go too?

can you please make sure this is done as well @jinliu9508

@jinliu9508
Copy link
Contributor

Just merged in #2512, lets get that in too #2515 is approved, ok to go too?

can you please make sure this is done as well @jinliu9508

@abdulraqeeb33 @nan-li These commits are now in 5.4-main and 5.5-main is now rebased to it.

@jinliu9508 jinliu9508 force-pushed the 5.5-main branch 2 times, most recently from 2f114f2 to 034eb9e Compare January 8, 2026 18:51
abdulraqeeb33 and others added 7 commits January 8, 2026 14:33
* refactor: move initialization process off main thread

* Release 5.4.0-alpha-01

* feat: Add Kotlin MainApplication and suspend initialization support (#2374)

* feat: Add Kotlin MainApplication and suspend initialization support

- Add MainApplicationKT.kt as Kotlin version of MainApplication.java
- Add initWithContextSuspend() method for async initialization
- Refactor OneSignalImp to use IO dispatcher internally for initialization
- Add comprehensive unit tests for suspend initialization
- Rename LatchAwaiter to CompletionAwaiter for better semantics
- Add helper classes for user management (AppIdHelper, LoginHelper, LogoutHelper, UserSwitcher)
- Update build.gradle to include Kotlin coroutines dependency
- Ensure ANR prevention by using background threads for initialization

* Added more tests

* mandating passing app id in the login/logout methods

* linting

* Made app id mandatory for login and logout.

* cleanup

* reduce the forks

* Time out, deprecate annotation and appid,context

* ktlin

* include MainApplication.java, locks, early returns

* chore: Dispatcher Threads (#2375)

* Using dispatcher

* Update threads to 2

* Updated methods

* linting

* readme

* using the same thread pool

* lint

* making sure initstate has the right value

* lint

* Clear state and skip performance tests

* lint

* clear preferences

* fixing tests

* fixing tests

* fixing tests

* fixing tests

* fixing tests

* addressed PR comments

* Addressed comments and fixed tests

* lint

* lint

* fix test

* lint

* rewrote the test

* fix test

* made the test more robust

* clear all preferences and simplified mocks

* added more robustness

---------

Co-authored-by: AR Abdul Azeez <[email protected]>

* Fix OperationRepoTests CI/CD flakiness by using individual coVerify calls

- Replace coVerifyOrder with individual coVerify(exactly = 1) calls
- Makes tests more resilient to timing variations in CI/CD environments
- Maintains verification of all critical operations while allowing flexibility in exact timing

* remove try catch and lint

* Addressed comments, removed global scope launches, broke down userswitcher

* fixed flag

* fix tests

* making sure using the name instead of value

* test isolation

* logout test

* comments

* cleanup

---------

Co-authored-by: AR Abdul Azeez <[email protected]>

* chore: bump SDK_VERSION to 5.4.0-alpha-02 (#2386)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix permissions activity (#2388)

* broke down permissions activity

* fixed the permissions dialog

* cleanup

* permissions tests

* lint

* waiting to false for pause

* added some tests for pause

* uncommented the code

* removed duplicate class

* fixed wrong import

* fixed imports

* fixed bug to display the dialog after cancelling

* formatting ktlint

* tests

* lint

* adding delay

* removing the theme and going back to production

* add a delay

* add a delay

---------

Co-authored-by: AR Abdul Azeez <[email protected]>

* chore: bump SDK_VERSION to 5.4.0-alpha-03 (#2392)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* spotless check

* added more time

* added more time

---------

Co-authored-by: jinliu9508 <[email protected]>
Co-authored-by: AR Abdul Azeez <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# Conflicts:
#	OneSignalSDK/build.gradle
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionListener.kt

# Conflicts:
#	Examples/OneSignalDemo/gradle.properties
#	OneSignalSDK/gradle.properties
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OneSignalDispatchers.kt
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/activities/PermissionsActivity.kt
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/impl/OperationRepo.kt
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/permissions/PermissionsViewModel.kt
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/services/SyncJobService.kt
#	OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal/OneSignalImp.kt
#	OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/application/SDKInitSuspendTests.kt
#	OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/application/SDKInitTests.kt
#	OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt
#	OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/permissions/PermissionsViewModelTests.kt
#	OneSignalSDK/onesignal/core/src/test/java/com/onesignal/internal/OneSignalImpTests.kt
#	OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/generation/impl/NotificationGenerationProcessor.kt
#	OneSignalSDK/onesignal/notifications/src/test/java/com/onesignal/notifications/internal/generation/NotificationGenerationProcessorTests.kt
tests: Much faster notification module tests
tests: more tests for InAppMessagesManager and LocationManager
…tion-order

fix: Rare User and Subscription creates and updates processing out of order (introduced in 5.4.0)
…n-operation-repo-tests

Chore: Tests: Clean up delays on operation repo tests
Chore: Tests: fix a flaky test in StartupServiceTests
@github-actions
Copy link
Contributor Author

github-actions bot commented Jan 8, 2026

📊 Diff Coverage Report

Diff Coverage Report

Threshold: 80%

Changed Files Coverage

  • ⚠️ MainApplication.java: Not in coverage report (may not be compiled/tested)
  • ⚠️ MainApplicationKT.kt: Not in coverage report (may not be compiled/tested)
  • ⚠️ MainActivityViewModel.java: Not in coverage report (may not be compiled/tested)
  • IOneSignal.kt: 0/7 lines (0.0%)
    • ⚠️ Below threshold: 7 uncovered lines
  • OneSignal.kt: 2/37 lines (5.4%)
    • ⚠️ Below threshold: 35 uncovered lines
  • SyncJobService.kt: 0/4 lines (0.0%)
    • ⚠️ Below threshold: 4 uncovered lines
  • AndroidUtils.kt: 6/114 lines (5.3%)
    • ⚠️ Below threshold: 108 uncovered lines
  • CompletionAwaiter.kt: 21/44 lines (47.7%)
    • ⚠️ Below threshold: 23 uncovered lines
  • ⚠️ OSPrimaryCoroutineScope.kt: Not in coverage report (may not be compiled/tested)
  • OneSignalDispatchers.kt: 69/96 lines (71.9%)
    • ⚠️ Below threshold: 27 uncovered lines
  • ThreadUtils.kt: 43/55 lines (78.2%)
    • ⚠️ Below threshold: 12 uncovered lines
  • PermissionsActivity.kt: 0/71 lines (0.0%)
    • ⚠️ Below threshold: 71 uncovered lines
  • ConfigModelStoreListener.kt: 0/66 lines (0.0%)
    • ⚠️ Below threshold: 66 uncovered lines
  • HttpClient.kt: 130/150 lines (86.7%)
  • OperationRepo.kt: 185/203 lines (91.1%)
  • AlertDialogPrepromptForAndroidSettings.kt: 0/33 lines (0.0%)
    • ⚠️ Below threshold: 33 uncovered lines
  • PermissionsViewModel.kt: 71/76 lines (93.4%)
  • RequestPermissionService.kt: 0/28 lines (0.0%)
    • ⚠️ Below threshold: 28 uncovered lines
  • PreferencesExtensionV4.kt: 13/17 lines (76.5%)
    • ⚠️ Below threshold: 4 uncovered lines
  • PreferencesService.kt: 0/98 lines (0.0%)
    • ⚠️ Below threshold: 98 uncovered lines
  • StartupService.kt: 8/8 lines (100.0%)
  • SyncJobService.kt: 18/22 lines (81.8%)
  • LogLevel.kt: 7/7 lines (100.0%)
  • OneSignalLogEvent.kt: 3/3 lines (100.0%)
  • InitState.kt: 4/5 lines (80.0%)
  • OneSignalImp.kt: 60/256 lines (23.4%)
    • ⚠️ Below threshold: 196 uncovered lines
  • SessionManager.kt: 0/17 lines (0.0%)
    • ⚠️ Below threshold: 17 uncovered lines
  • ChannelTracker.kt: 69/88 lines (78.4%)
    • ⚠️ Below threshold: 19 uncovered lines
  • OutcomeEventsController.kt: 142/161 lines (88.2%)
  • OutcomeSourceBody.kt: 3/9 lines (33.3%)
    • ⚠️ Below threshold: 6 uncovered lines
  • SessionListener.kt: 12/23 lines (52.2%)
    • ⚠️ Below threshold: 11 uncovered lines
  • AppIdResolution.kt: 13/13 lines (100.0%)
  • LoginHelper.kt: 31/31 lines (100.0%)
  • LogoutHelper.kt: 17/17 lines (100.0%)
  • UserManager.kt: 76/130 lines (58.5%)
    • ⚠️ Below threshold: 54 uncovered lines
  • UserSwitcher.kt: 98/100 lines (98.0%)
  • IdentityModelStore.kt: 1/3 lines (33.3%)
    • ⚠️ Below threshold: 2 uncovered lines
  • RecoverFromDroppedLoginBug.kt: 25/25 lines (100.0%)
  • LoginUserFromSubscriptionOperationExecutor.kt: 0/40 lines (0.0%)
    • ⚠️ Below threshold: 40 uncovered lines
  • SubscriptionOperationExecutor.kt: 0/160 lines (0.0%)
    • ⚠️ Below threshold: 160 uncovered lines
  • UserChangedState.kt: 0/4 lines (0.0%)
    • ⚠️ Below threshold: 4 uncovered lines
  • PushSubscriptionChangedState.kt: 0/6 lines (0.0%)
    • ⚠️ Below threshold: 6 uncovered lines
  • InAppMessagesManager.kt: 382/461 lines (82.9%)
  • InAppMessageView.kt: 0/354 lines (0.0%)
    • ⚠️ Below threshold: 354 uncovered lines
  • OneSignalBounceInterpolator.kt: 0/14 lines (0.0%)
    • ⚠️ Below threshold: 14 uncovered lines
  • WebViewManager.kt: 0/235 lines (0.0%)
    • ⚠️ Below threshold: 235 uncovered lines
  • TriggerController.kt: 102/108 lines (94.4%)
  • LocationManager.kt: 87/94 lines (92.6%)
  • LocationUtils.kt: 0/11 lines (0.0%)
    • ⚠️ Below threshold: 11 uncovered lines
  • GmsLocationController.kt: 0/126 lines (0.0%)
    • ⚠️ Below threshold: 126 uncovered lines
  • HmsLocationController.kt: 0/124 lines (0.0%)
    • ⚠️ Below threshold: 124 uncovered lines
  • NotificationOpenedActivityHMS.kt: 0/18 lines (0.0%)
    • ⚠️ Below threshold: 18 uncovered lines
  • NotificationOpenedActivityBase.kt: 0/17 lines (0.0%)
    • ⚠️ Below threshold: 17 uncovered lines
  • OneSignalHmsEventBridge.kt: 0/34 lines (0.0%)
    • ⚠️ Below threshold: 34 uncovered lines
  • NotificationsManager.kt: 0/68 lines (0.0%)
    • ⚠️ Below threshold: 68 uncovered lines
  • NotificationHelper.kt: 8/111 lines (7.2%)
    • ⚠️ Below threshold: 103 uncovered lines
  • NotificationRepository.kt: 0/344 lines (0.0%)
    • ⚠️ Below threshold: 344 uncovered lines
  • NotificationGenerationProcessor.kt: 130/157 lines (82.8%)
  • NotificationGenerationWorkManager.kt: 0/53 lines (0.0%)
    • ⚠️ Below threshold: 53 uncovered lines
  • NotificationLifecycleService.kt: 0/137 lines (0.0%)
    • ⚠️ Below threshold: 137 uncovered lines
  • DeviceRegistrationListener.kt: 0/34 lines (0.0%)
    • ⚠️ Below threshold: 34 uncovered lines
  • NotificationPermissionController.kt: 0/94 lines (0.0%)
    • ⚠️ Below threshold: 94 uncovered lines
  • PushTokenManager.kt: 23/25 lines (92.0%)
  • ReceiveReceiptWorkManager.kt: 0/47 lines (0.0%)
    • ⚠️ Below threshold: 47 uncovered lines
  • PushRegistratorHMS.kt: 0/42 lines (0.0%)
    • ⚠️ Below threshold: 42 uncovered lines
  • NotificationRestoreWorkManager.kt: 0/30 lines (0.0%)
    • ⚠️ Below threshold: 30 uncovered lines
  • BootUpReceiver.kt: 0/12 lines (0.0%)
    • ⚠️ Below threshold: 12 uncovered lines
  • FCMBroadcastReceiver.kt: 0/31 lines (0.0%)
    • ⚠️ Below threshold: 31 uncovered lines
  • NotificationDismissReceiver.kt: 0/14 lines (0.0%)
    • ⚠️ Below threshold: 14 uncovered lines
  • UpgradeReceiver.kt: 0/14 lines (0.0%)
    • ⚠️ Below threshold: 14 uncovered lines
  • ADMMessageHandler.kt: 0/28 lines (0.0%)
    • ⚠️ Below threshold: 28 uncovered lines
  • ADMMessageHandlerJob.kt: 0/30 lines (0.0%)
    • ⚠️ Below threshold: 30 uncovered lines
  • ⚠️ AndroidMockHelper.kt: Not in coverage report (may not be compiled/tested)
  • ⚠️ IOMockHelper.kt: Not in coverage report (may not be compiled/tested)

Overall Coverage

1859/5094 lines covered (36.5%)

❌ Coverage Check Failed

Files below 80% threshold:

  • IOneSignal.kt: 0.0% (7 uncovered lines)

  • OneSignal.kt: 5.4% (35 uncovered lines)

  • SyncJobService.kt: 0.0% (4 uncovered lines)

  • AndroidUtils.kt: 5.3% (108 uncovered lines)

  • CompletionAwaiter.kt: 47.7% (23 uncovered lines)

  • OneSignalDispatchers.kt: 71.9% (27 uncovered lines)

  • ThreadUtils.kt: 78.2% (12 uncovered lines)

  • PermissionsActivity.kt: 0.0% (71 uncovered lines)

  • ConfigModelStoreListener.kt: 0.0% (66 uncovered lines)

  • AlertDialogPrepromptForAndroidSettings.kt: 0.0% (33 uncovered lines)

  • RequestPermissionService.kt: 0.0% (28 uncovered lines)

  • PreferencesExtensionV4.kt: 76.5% (4 uncovered lines)

  • PreferencesService.kt: 0.0% (98 uncovered lines)

  • OneSignalImp.kt: 23.4% (196 uncovered lines)

  • SessionManager.kt: 0.0% (17 uncovered lines)

  • ChannelTracker.kt: 78.4% (19 uncovered lines)

  • OutcomeSourceBody.kt: 33.3% (6 uncovered lines)

  • SessionListener.kt: 52.2% (11 uncovered lines)

  • UserManager.kt: 58.5% (54 uncovered lines)

  • IdentityModelStore.kt: 33.3% (2 uncovered lines)

  • LoginUserFromSubscriptionOperationExecutor.kt: 0.0% (40 uncovered lines)

  • SubscriptionOperationExecutor.kt: 0.0% (160 uncovered lines)

  • UserChangedState.kt: 0.0% (4 uncovered lines)

  • PushSubscriptionChangedState.kt: 0.0% (6 uncovered lines)

  • InAppMessageView.kt: 0.0% (354 uncovered lines)

  • OneSignalBounceInterpolator.kt: 0.0% (14 uncovered lines)

  • WebViewManager.kt: 0.0% (235 uncovered lines)

  • LocationUtils.kt: 0.0% (11 uncovered lines)

  • GmsLocationController.kt: 0.0% (126 uncovered lines)

  • HmsLocationController.kt: 0.0% (124 uncovered lines)

  • NotificationOpenedActivityHMS.kt: 0.0% (18 uncovered lines)

  • NotificationOpenedActivityBase.kt: 0.0% (17 uncovered lines)

  • OneSignalHmsEventBridge.kt: 0.0% (34 uncovered lines)

  • NotificationsManager.kt: 0.0% (68 uncovered lines)

  • NotificationHelper.kt: 7.2% (103 uncovered lines)

  • NotificationRepository.kt: 0.0% (344 uncovered lines)

  • NotificationGenerationWorkManager.kt: 0.0% (53 uncovered lines)

  • NotificationLifecycleService.kt: 0.0% (137 uncovered lines)

  • DeviceRegistrationListener.kt: 0.0% (34 uncovered lines)

  • NotificationPermissionController.kt: 0.0% (94 uncovered lines)

  • ReceiveReceiptWorkManager.kt: 0.0% (47 uncovered lines)

  • PushRegistratorHMS.kt: 0.0% (42 uncovered lines)

  • NotificationRestoreWorkManager.kt: 0.0% (30 uncovered lines)

  • BootUpReceiver.kt: 0.0% (12 uncovered lines)

  • FCMBroadcastReceiver.kt: 0.0% (31 uncovered lines)

  • NotificationDismissReceiver.kt: 0.0% (14 uncovered lines)

  • UpgradeReceiver.kt: 0.0% (14 uncovered lines)

  • ADMMessageHandler.kt: 0.0% (28 uncovered lines)

  • ADMMessageHandlerJob.kt: 0.0% (30 uncovered lines)

📥 View workflow run

@jinliu9508 jinliu9508 merged commit 5e46b3c into 5.5-main Jan 8, 2026
1 of 2 checks passed
@jinliu9508 jinliu9508 deleted the rel/5.5.0-beta branch January 8, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants