← back to Homesonspec
apps/web/src/components/PWARegister.tsx
23 lines
"use client";
import { useEffect } from "react";
// Registers the service worker after the page loads. Renders nothing.
// Kept out of the critical path (waits for `load`) so it never delays first paint.
export default function PWARegister() {
useEffect(() => {
if (typeof window === "undefined") return;
if (!("serviceWorker" in navigator)) return;
// Skip on localhost http if SW isn't available; SW requires HTTPS or localhost.
const register = () => {
navigator.serviceWorker
.register("/sw.js", { scope: "/" })
.catch((err) => console.warn("[pwa] service worker registration failed:", err));
};
if (document.readyState === "complete") register();
else window.addEventListener("load", register, { once: true });
}, []);
return null;
}