diff --git a/apps/haotool/src/components/Layout.tsx b/apps/haotool/src/components/Layout.tsx
index 911313fd9..bfd17b28b 100644
--- a/apps/haotool/src/components/Layout.tsx
+++ b/apps/haotool/src/components/Layout.tsx
@@ -9,6 +9,7 @@ import { LazyMotion, MotionConfig } from 'motion/react';
import Header from './Header';
import Footer from './Footer';
import { VercelAnalytics } from '@app/shared/analytics';
+import { SpeedInsights } from '@vercel/speed-insights/react';
const loadMotionFeatures = () => import('./motion-features').then((module) => module.default);
@@ -49,6 +50,7 @@ export default function Layout() {
prefers-reduced-motion。 */}
+
);
diff --git a/apps/nihonname/src/components/Layout.tsx b/apps/nihonname/src/components/Layout.tsx
index 541f6d043..652b2b82f 100644
--- a/apps/nihonname/src/components/Layout.tsx
+++ b/apps/nihonname/src/components/Layout.tsx
@@ -6,6 +6,7 @@
import { Outlet, useLocation } from 'react-router-dom';
import { HelmetProvider } from '../utils/helmet';
import { VercelAnalytics } from '@app/shared/analytics';
+import { SpeedInsights } from '@vercel/speed-insights/react';
export function Layout() {
const location = useLocation();
@@ -37,6 +38,7 @@ export function Layout() {
+
);
}
diff --git a/apps/papertrade/src/App.tsx b/apps/papertrade/src/App.tsx
index fa6f9db83..a32e88cd9 100644
--- a/apps/papertrade/src/App.tsx
+++ b/apps/papertrade/src/App.tsx
@@ -1,4 +1,5 @@
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
+import { SpeedInsights } from '@vercel/speed-insights/react';
import { routes } from './routes';
const router = createBrowserRouter(routes, {
@@ -6,5 +7,10 @@ const router = createBrowserRouter(routes, {
});
export default function App() {
- return ;
+ return (
+ <>
+
+
+ >
+ );
}
diff --git a/apps/park-keeper/src/components/Layout.tsx b/apps/park-keeper/src/components/Layout.tsx
index ff99f06d6..b04c36e4e 100644
--- a/apps/park-keeper/src/components/Layout.tsx
+++ b/apps/park-keeper/src/components/Layout.tsx
@@ -5,6 +5,7 @@ import { getStoredLanguage } from '../services/i18n';
import { SITE_CONFIG } from '../../app.config.mjs';
import { UpdatePrompt } from './UpdatePrompt';
import { VercelAnalytics } from '@app/shared/analytics';
+import { SpeedInsights } from '@vercel/speed-insights/react';
const APP_NAME = SITE_CONFIG.name;
const CURRENT_YEAR = 2026;
@@ -37,6 +38,7 @@ export default function Layout() {
{/* 全域掛載:確保 /add 捷徑、/guide、/about 等非 Home 路由也能自動消費 waiting SW(issue #725 pre-release 稽核 C-P0)。 */}
+
{showFooter && (