Keep your initialize call.
Three native SDKs written from scratch, with the method names a OneSignal integration already uses: initialize, login, logout, User.addTag, User.pushSubscription, Notifications.requestPermission. Swap the keys, keep the code. Where a method does not map, the compatibility table says so rather than pretending.
Swift Package, no swizzling
Registration, receipts, tags, aliases, identity verification, Live Activities with push-to-start, custom events, sessions. Your app forwards its APNs callbacks; the SDK never swizzles them. GitHub Oct 10
Your FCM service, or ours
Keep your own FCM service and forward the token, or add the optional FCM artifact. Live Updates render start, update and end as one ongoing notification, promoted on the newest Android. GitHub Oct 10
The same facade, in C#
One OpenPush.Initialize(appId, sdkKey), tags and identity, Live Activities with a bundled default widget and the injection to use it. No native dependency manager. GitHub Oct 10
VAPID web push
A service worker and a VAPID key; existing web-push subscriptions import from OneSignal. Chrome, Firefox, Edge and Safari on the desktop.
Everything, from any language
Messages, audience, events, journeys, Live Activities and exports — per-app keys, readable in one sitting. Reference →
React Native · Flutter · Cordova
Wrappers over the native SDKs follow the launch. Until then the REST API and web push work from any stack.
Two lines change.
The package and the keys. The call sites stay.
Android: OpenPush.initialize(context, appId, sdkKey). Unity: OpenPush.Initialize(appId, sdkKey). Both SDKs can run side by side in one build during rollout — they are independent SDKs on separate credentials.
The parts you would otherwise write yourself.
Retries, batching, receipts
Tag and alias writes batch into one request; transient registration failures retry on a short backoff; confirmed-delivery and click receipts ride a durable queue so a flaky network does not lose a data point. Identity hashes stay in memory only; the device credential lives in the Keychain or the Android keystore.
Sessions and custom events, built in
One trackEvent call feeds segments, event-triggered Journeys and Intelligent Delivery at once. The SDK reports sessions so each device's best hour is learned without extra code — and nothing is collected that the per-app switches in the console have not turned on.
SDK questions.
Is any OneSignal code inside?
No. Their licence restricts their SDK to their service. Ours are written from scratch with compatible method names, and the compatibility table lists every method as forwarded, adapted or refused so you are never guessing.
Which licence?
The SDK repositories carry a permissive licence and are public from Oct 10. The OpenPush server is a hosted service and is not published.
Do I have to re-prompt users for permission?
No. Imported tokens are re-registered on the first SDK run; a device that was subscribed stays subscribed, and one that was not stays not.
What about Flutter or React Native today?
Use the REST API from your backend for sends and audience, and web push in a web view where it applies; the wrappers over the native SDKs follow the launch. Tell us on the early-access form if one of them gates your migration.