From f911199c8e062fa6b2e03dcb1341edcf8c607282 Mon Sep 17 00:00:00 2001 From: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:35:14 +0800 Subject: [PATCH] chore: disable serwist in dev (#31424) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- web/app/components/provider/serwist.tsx | 41 ++++++++++++++++++++++++- web/app/layout.tsx | 9 ++---- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/web/app/components/provider/serwist.tsx b/web/app/components/provider/serwist.tsx index 39a80f5ac2..2eef43a7d6 100644 --- a/web/app/components/provider/serwist.tsx +++ b/web/app/components/provider/serwist.tsx @@ -1,3 +1,42 @@ 'use client' -export { SerwistProvider } from '@serwist/turbopack/react' +import { SerwistProvider } from '@serwist/turbopack/react' +import { useEffect } from 'react' +import { IS_DEV } from '@/config' +import { isClient } from '@/utils/client' + +export function PWAProvider({ children }: { children: React.ReactNode }) { + if (IS_DEV) { + return {children} + } + + const basePath = process.env.NEXT_PUBLIC_BASE_PATH || '' + const swUrl = `${basePath}/serwist/sw.js` + + return ( + + {children} + + ) +} + +function DisabledPWAProvider({ children }: { children: React.ReactNode }) { + useEffect(() => { + if (isClient && 'serviceWorker' in navigator) { + navigator.serviceWorker.getRegistrations() + .then((registrations) => { + registrations.forEach((registration) => { + registration.unregister() + .catch((error) => { + console.error('Error unregistering service worker:', error) + }) + }) + }) + .catch((error) => { + console.error('Error unregistering service workers:', error) + }) + } + }, []) + + return <>{children} +} diff --git a/web/app/layout.tsx b/web/app/layout.tsx index b970fddc7a..845cae2d4e 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -12,7 +12,7 @@ import { ToastProvider } from './components/base/toast' import BrowserInitializer from './components/browser-initializer' import { ReactScanLoader } from './components/devtools/react-scan/loader' import { I18nServerProvider } from './components/provider/i18n-server' -import { SerwistProvider } from './components/provider/serwist' +import { PWAProvider } from './components/provider/serwist' import SentryInitializer from './components/sentry-initializer' import RoutePrefixHandle from './routePrefixHandle' import './styles/globals.css' @@ -40,9 +40,6 @@ const LocaleLayout = async ({ }) => { const locale = await getLocaleOnServer() - const basePath = process.env.NEXT_PUBLIC_BASE_PATH || '' - const swUrl = `${basePath}/serwist/sw.js` - const datasetMap: Record = { [DatasetAttr.DATA_API_PREFIX]: process.env.NEXT_PUBLIC_API_PREFIX, [DatasetAttr.DATA_PUBLIC_API_PREFIX]: process.env.NEXT_PUBLIC_PUBLIC_API_PREFIX, @@ -96,7 +93,7 @@ const LocaleLayout = async ({ className="color-scheme h-full select-auto" {...datasetMap} > - + - + )