I'm seeing navigator.serviceWorker always return undefined in mobile Chrome and mobile Firefox on both iOS and Android devices. The site is being served over HTTPS, window.isSecureContext returns true, and I'm not in a private/incognito window/tab. This rules out common explanations for this, such as those pointed out here.
It would seem these mobile browsers simply do not support the ServiceWorker API, but from everything I've seen they should.
Any ideas?