diff --git a/next.config.ts b/next.config.ts index b875547..eab2aae 100644 --- a/next.config.ts +++ b/next.config.ts @@ -22,12 +22,13 @@ const nextConfig: NextConfig = { "openai", "resend", ], - ...(kaynakKisitli - ? { - // cacheComponents açıkken prerender fazında source map üretimi varsayılan - // açık; 1900+ statik sayfada ciddi bellek maliyeti var. - enablePrerenderSourceMaps: false, - experimental: { + experimental: { + // radix-ui kök barrel'ı 36 alt paketi çeker ve Next'in varsayılan + // optimize listesinde yoktur; named import'lar doğrudan alt modüle + // çevrilir (dev boot / build modül grafiği küçülür). + optimizePackageImports: ["radix-ui"], + ...(kaynakKisitli + ? { // Turbopack'ın Rust tarafı NODE_OPTIONS heap sınırını görmez; bellek // hedefi byte cinsinden ayrıca verilir (1.5 GB). turbopackMemoryLimit: 1_610_612_736, @@ -35,7 +36,14 @@ const nextConfig: NextConfig = { // worker × 4 sayfa. Her worker ayrı bir Node süreci/heap'idir. cpus: 1, staticGenerationMaxConcurrency: 4, - }, + } + : {}), + }, + ...(kaynakKisitli + ? { + // cacheComponents açıkken prerender fazında source map üretimi varsayılan + // açık; 1900+ statik sayfada ciddi bellek maliyeti var. + enablePrerenderSourceMaps: false, } : {}), async redirects() { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 97fcb66..6303e82 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -10,7 +10,7 @@ import { KaydetBannerLazy } from "@/features/liste/components/kaydet-banner-lazy import { TercihProfiliKapisiLazy } from "@/features/liste/components/tercih-profili-kapisi-lazy"; import { HeaderGate } from "@/components/header-gate"; import { ProgressiveBlur } from "@/components/ui/skiper-ui/skiper41"; -import { DevPanel } from "@/components/dev/dev-panel"; +import { DevPanelMount } from "@/components/dev/dev-panel-mount"; import { ScrollFlow } from "@/components/scroll-flow"; import { JsonLd, organizationJsonLd, webSiteJsonLd, SITE_URL } from "@/lib/seo"; import "./globals.css"; @@ -85,19 +85,6 @@ export default function RootLayout({ // içerikle büyümeli, viewport tabanı body'deki min-h-dvh'den gelir. className={`${calSans.variable} ${clarityCity.variable} ${geistMono.variable} ${bricolage.variable} antialiased`} > - {/* Rybbit analitik — beforeInteractive her zaman içine defer olarak - enjekte edilir. Yalnızca prod build'de: Rybbit localhost'u da takip - ettiği için dev trafiği prod verisini kirletmesin (DevPanel ile aynı - kapı). mask-patterns: /sonuc URL'i ham başarı sıralamasını, - /odeme/sonuc sipariş kimliğini taşıyor — path tek satırda toplanır. */} - {process.env.NODE_ENV === "production" ? ( -