diff --git a/.changeset/huge-chefs-sip.md b/.changeset/huge-chefs-sip.md new file mode 100644 index 00000000000..e4b29ed78dc --- /dev/null +++ b/.changeset/huge-chefs-sip.md @@ -0,0 +1,5 @@ +--- +'@firebase/messaging': minor +--- + +Allows @firebase/messaging to fail gracefully if the service worker is not found for whatever reason (i.e. Capacitor app, iOS Safari on some devices, etc) instead of crashing the entire application. diff --git a/packages/messaging/src/helpers/register.ts b/packages/messaging/src/helpers/register.ts index ef28cd2edad..8c22701995e 100644 --- a/packages/messaging/src/helpers/register.ts +++ b/packages/messaging/src/helpers/register.ts @@ -40,6 +40,11 @@ import { name, version } from '../../package.json'; const WindowMessagingFactory: InstanceFactory<'messaging'> = ( container: ComponentContainer ) => { + if (!navigator.serviceWorker) { + console.warn("Service workers are not supported in this environment."); + return; + } + const messaging = new MessagingService( container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(),