firebase-js-sdk icon indicating copy to clipboard operation
firebase-js-sdk copied to clipboard

Event handler must be added on the initial evaluation of worker script

Open stefan-krajnik opened this issue 1 year ago • 5 comments

Operating System

macOS Ventura 13.0

Browser Version

Google Chrome Version 120.0.6099.199 (Official Build) (arm64)

Firebase SDK Version

9.22.0

Firebase SDK Product:

Messaging

Describe your project's tooling

React app with Webpack

Describe the problem

I've been seeing these errors in sentry for a while, they come from service worker file even if I register service worker only if isSupported() passes.

This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc) (messaging/indexed-db-unsupported).

So I decided to do the same check in service worker but I'm getting these warnings if I call getMessaging asynchronously after isSupported() is resolved (see the screenshot)

Event handler of 'push' event must be added on the initial evaluation of worker script
Event handler of 'pushsubscriptionchange' event must be added on the initial evaluation of worker script.
Event handler of 'notificationclick' event must be added on the initial evaluation of worker script.
295329942-1cdebf24-4e3c-4e85-8c94-19072d46f3ba

Can you please confirm my approach with calling getMessaging asynchronously only if isSupported is correct ? If not what is the correct way using isSupported in service worker to prevent getting the error mentioned at the beginning ?

Steps and code to reproduce issue

  • call getMessaging asynchronously in your firebase-messaging-sw.js file

stefan-krajnik avatar Jan 10 '24 16:01 stefan-krajnik

+1

Santas avatar Jan 23 '24 15:01 Santas

Any news on this? I couldn’t find any official documentation on the usage. Some of the code I found on github uses it the same way OP does, but then it prints the warnings

patrikholcak avatar Jan 29 '24 08:01 patrikholcak

The issue is still present in v10.8.0

stefan-krajnik avatar Feb 23 '24 11:02 stefan-krajnik

@jbalidiong what is the best way to get help regarding this issue?

Santas avatar Jun 03 '24 12:06 Santas

I ran into this error message too. If I understand correctly, the initialisation of Firebase Push MUST happen in the global scope of the service worker during its initial evaluation – meaning: You cannot call initializeApp/getMessaging asynchronously. They MUST be called immediately when the global scope of the service worker script is first run.

jdeepwell avatar Jun 24 '24 11:06 jdeepwell