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 && (