Skip to content

chore: [SDK-4975] consume KMP in iOS SDK - #1698

Merged
fadi-george merged 3 commits into
mainfrom
fadi/sdk-4975
Aug 4, 2026
Merged

chore: [SDK-4975] consume KMP in iOS SDK#1698
fadi-george merged 3 commits into
mainfrom
fadi/sdk-4975

Conversation

@fadi-george

Copy link
Copy Markdown
Collaborator

Description

One Line Summary

Pin the shared KMP repository and link its static XCFramework internally into OneSignalCore.

Details

Motivation

The iOS SDK needs the same shared logger implementation as Android while preserving the existing public SPM and CocoaPods dependency surface. KMP releases must also be able to advance both host SDKs in lockstep.

Scope

  • Add OneSignal-KMP-SDK as a pinned git submodule
  • Build the XCFramework before iOS CI and release builds
  • Force-load KMP into OneSignalCore for iOS device and simulator builds
  • Keep Catalyst builds unchanged because the KMP artifact has no Catalyst slice
  • Add a reusable workflow for automated KMP submodule bump PRs
  • Document contributor setup

No Swift adapters or logger calls are included; those remain follow-up work.

Dependencies

Testing

Unit testing

The shared KMP JVM, iOS simulator, and XCFramework verification tasks pass. The local reduced iOS test plan produced 138 passes and 9 existing state/timing-sensitive failures under Xcode 26.5; CI uses Xcode 16.4, which is unavailable locally.

Manual testing

  • Built OneSignalCore for generic iOS device and simulator destinations
  • Built OneSignalCore for Mac Catalyst to confirm the conditional KMP link does not affect Catalyst
  • Confirmed OSKMPLoggerFactory symbols are embedded in the simulator OneSignalCore binary
  • Validated all changed workflows, the build script, and the KMP manifests

Affected code checklist

  • Notifications
    • Display
    • Open
    • Push Processing
    • Confirm Deliveries
  • Outcomes
  • Sessions
  • In-App Messaging
  • REST API requests
  • Public API changes

Checklist

Overview

  • I have filled out all REQUIRED sections above
  • PR does one thing
  • No public API changes

Testing

  • I have included test coverage for these changes, or explained why it is not needed
  • All automated test results are documented above
  • Device builds were tested without code signing; physical-device runtime behavior is out of scope because no adapter invokes KMP yet

Final pass

  • Code is as readable as possible
  • I have reviewed this PR myself

Made with Cursor

@fadi-george
fadi-george requested a review from nan-li August 4, 2026 00:15
@fadi-george fadi-george changed the title feat: [SDK-4975] consume KMP in iOS SDK chore: [SDK-4975] consume KMP in iOS SDK Aug 4, 2026
@fadi-george
fadi-george merged commit 1c5df72 into main Aug 4, 2026
2 of 3 checks passed
@fadi-george
fadi-george deleted the fadi/sdk-4975 branch August 4, 2026 23:47
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.

2 participants