OneSignal / OneSignal-Website-SDK

OneSignal is a push notification service for web and mobile apps. This SDK makes it easy to integrate your website with OneSignal Push Notifications. https://onesignal.com
Other
388 stars 115 forks source link

[Fix] Service Worker race condition, when a 2nd sw is in play, causing User not to register #1136

Closed jkasten2 closed 10 months ago

jkasten2 commented 10 months ago

Description

1 Line Summary

Fix Service Worker race condition, when a 2nd sw is in play, causing User not to register.

Details

If you attempt to get the service worker registration immediately after registering it the browser can give you a different registration than expected. This is due to the fact the new registration may not be ready yet and there might be sw in scope at a higher level.

The problem noted above cause the OneSignal SDK to register for a push token on the wrong service worker. This in turn causes the SDK to attempt to create a user with a push subscription but without a push token, which results in a 400 error on POST /users.

To fix, instead of calling navigator.serviceWorker.getRegistration we are now simply using the ServiceWorkerRegistration give to us by navigator.serviceWorker.register to avoid this race condition completely

Validation

Tests

Test on Chrome 119 on Windows 11

Checklist

Programming Checklist Interfaces:

Functions:

Typescript:

Other:

Screenshots

Info

Checklist


Related Tickets



This change is Reviewable