diff --git a/web/app/components/devtools/react-scan/loader.tsx b/web/app/components/devtools/react-scan/loader.tsx
new file mode 100644
index 0000000000..ee702216f7
--- /dev/null
+++ b/web/app/components/devtools/react-scan/loader.tsx
@@ -0,0 +1,21 @@
+'use client'
+
+import { lazy, Suspense } from 'react'
+import { IS_DEV } from '@/config'
+
+const ReactScan = lazy(() =>
+ import('./scan').then(module => ({
+ default: module.ReactScan,
+ })),
+)
+
+export const ReactScanLoader = () => {
+ if (!IS_DEV)
+ return null
+
+ return (
+
+
+
+ )
+}
diff --git a/web/app/components/react-scan.tsx b/web/app/components/devtools/react-scan/scan.tsx
similarity index 100%
rename from web/app/components/react-scan.tsx
rename to web/app/components/devtools/react-scan/scan.tsx
diff --git a/web/app/components/devtools.tsx b/web/app/components/devtools/tanstack/devtools.tsx
similarity index 100%
rename from web/app/components/devtools.tsx
rename to web/app/components/devtools/tanstack/devtools.tsx
diff --git a/web/app/components/devtools/tanstack/loader.tsx b/web/app/components/devtools/tanstack/loader.tsx
new file mode 100644
index 0000000000..673ea0da90
--- /dev/null
+++ b/web/app/components/devtools/tanstack/loader.tsx
@@ -0,0 +1,21 @@
+'use client'
+
+import { lazy, Suspense } from 'react'
+import { IS_DEV } from '@/config'
+
+const TanStackDevtoolsWrapper = lazy(() =>
+ import('./devtools').then(module => ({
+ default: module.TanStackDevtoolsWrapper,
+ })),
+)
+
+export const TanStackDevtoolsLoader = () => {
+ if (!IS_DEV)
+ return null
+
+ return (
+
+
+
+ )
+}
diff --git a/web/app/layout.tsx b/web/app/layout.tsx
index c182f12dc9..fa1f7d48b5 100644
--- a/web/app/layout.tsx
+++ b/web/app/layout.tsx
@@ -8,8 +8,8 @@ import { getLocaleOnServer } from '@/i18n-config/server'
import { DatasetAttr } from '@/types/feature'
import { cn } from '@/utils/classnames'
import BrowserInitializer from './components/browser-initializer'
+import { ReactScanLoader } from './components/devtools/react-scan/loader'
import I18nServer from './components/i18n-server'
-import { ReactScan } from './components/react-scan'
import SentryInitializer from './components/sentry-initializer'
import RoutePrefixHandle from './routePrefixHandle'
import './styles/globals.css'
@@ -90,7 +90,7 @@ const LocaleLayout = async ({
className="color-scheme h-full select-auto"
{...datasetMap}
>
-
+
- import('@/app/components/devtools').then(module => ({
- default: module.TanStackDevtoolsWrapper,
- })),
-)
+import { TanStackDevtoolsLoader } from '@/app/components/devtools/tanstack/loader'
const STALE_TIME = 1000 * 60 * 30 // 30 minutes
@@ -26,11 +19,7 @@ export const TanstackQueryInitializer: FC = (props) => {
return (
{children}
- {IS_DEV && (
-
-
-
- )}
+
)
}