From 60b86b540ffffbcaf173a36f2f7ec09d56d9a29a Mon Sep 17 00:00:00 2001 From: ralksta Date: Fri, 13 Mar 2026 12:28:59 +0100 Subject: [PATCH] fix: move DevToolbar dynamic import to Client Component ssr: false is not allowed with next/dynamic in Server Components. Extracted the dynamic() call into DevToolbarLoader.tsx ('use client') so layout.tsx stays a pure Server Component. --- app/layout.tsx | 10 +++------- components/DevToolbarLoader.tsx | 13 +++++++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 components/DevToolbarLoader.tsx diff --git a/app/layout.tsx b/app/layout.tsx index 580fcd6..ba7bf45 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -5,7 +5,6 @@ */ import type { Metadata } from 'next'; -import dynamic from 'next/dynamic'; import Link from 'next/link'; import './globals.css'; import { SubpageNav } from '@/components/SubpageNav'; @@ -13,11 +12,8 @@ import { ThemeToggle } from '@/components/ThemeToggle'; import { ScrollToTop } from '@/components/ScrollToTop'; import { Footer } from '@/components/Footer'; import { getConfig, getGoogleFontsUrl, AppConfig } from '@/lib/config'; - -// Lazy-load DevToolbar — keeps 17KB+ out of the production bundle -const DevToolbar = dynamic(() => import('@/components/DevToolbar').then(m => ({ default: m.DevToolbar })), { - ssr: false, -}); +// DevToolbarLoader ist eine Client Component (ssr: false nur dort erlaubt) +import { DevToolbarLoader } from '@/components/DevToolbarLoader'; export async function generateMetadata(): Promise { const config = getConfig(); @@ -181,7 +177,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
{children}