portfolio/app/layout.tsx
Vercel 204f3a1249 Add Vercel Web Analytics to Next.js
Implemented Vercel Web Analytics for Next.js

Summary:
Successfully installed and configured Vercel Web Analytics in this Next.js App Router project.

Changes Made:

1. Installed @vercel/analytics package:
   - Added @vercel/analytics@^1.6.1 to package.json dependencies
   - Updated package-lock.json with new dependency tree

2. Modified app/layout.tsx:
   - Added import statement: import { Analytics } from '@vercel/analytics/next'
   - Added <Analytics /> component inside the <body> tag, after <SpeedInsights />
   - Maintained existing code structure and formatting

3. Verification:
   - Build completed successfully with no errors (npm run build)
   - No linting errors (no lint script configured in project)
   - No test failures (no test script configured in project)
   - All changes follow Next.js App Router best practices

Implementation Details:
- The Analytics component is placed at the end of the body tag, following the existing pattern used for SpeedInsights
- The component will automatically track page views and Web Vitals data
- Works seamlessly with the existing SpeedInsights integration
- No environment variables or additional configuration required

Files Modified:
- app/layout.tsx (added Analytics import and component)
- package.json (added @vercel/analytics dependency)
- package-lock.json (updated with new dependency tree)

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2026-02-13 09:28:59 +00:00

42 lines
1.1 KiB
TypeScript

import type { Metadata } from "next";
import "./globals.css";
import Navbar from "./components/Navbar";
import NavItem from "./components/NavItem";
import Header from "./components/Header";
import Image from "next/image";
import logo from "./logo.png"
import Link from "next/link";
import { SpeedInsights } from '@vercel/speed-insights/next';
import { Analytics } from '@vercel/analytics/next';
export const metadata: Metadata = {
title: "Portfolio - Mike Karl",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="de">
<body>
<Header>
<Navbar>
<NavItem href="/">Home</NavItem>
<NavItem href="/projects">Projekte</NavItem>
<NavItem href="/about">About</NavItem>
<NavItem href="/contact">Kontakt</NavItem>
</Navbar>
<Link href={"/"}>
<Image alt="logo.png" className="mx-4" src={logo} width={70} height={70} />
</Link>
</Header>
{children}
<div className="bg" />
<SpeedInsights />
<Analytics />
</body>
</html>
);
}