From f8be02a144a6f1abecf32bf3b84ac15b3019309d Mon Sep 17 00:00:00 2001 From: Gemini AI Date: Mon, 29 Dec 2025 14:21:29 +0400 Subject: [PATCH] fix: use dynamic imports for views to prevent hydration errors and client-side exceptions --- app/page.tsx | 23 +++++++++++++---------- next.config.js | 1 - 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index bd70585..80ad89d 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -3,18 +3,21 @@ import { useState, useEffect } from "react"; import Sidebar from "@/components/Sidebar"; import type { View } from "@/components/Sidebar"; -import PromptEnhancer from "@/components/PromptEnhancer"; -import PRDGenerator from "@/components/PRDGenerator"; -import ActionPlanGenerator from "@/components/ActionPlanGenerator"; -import UXDesignerPrompt from "@/components/UXDesignerPrompt"; -import SlidesGenerator from "@/components/SlidesGenerator"; -import GoogleAdsGenerator from "@/components/GoogleAdsGenerator"; -import MarketResearcher from "@/components/MarketResearcher"; -import AIAssist from "@/components/AIAssist"; -import HistoryPanel from "@/components/HistoryPanel"; -import SettingsPanel from "@/components/SettingsPanel"; +import dynamic from 'next/dynamic'; import modelAdapter from "@/lib/services/adapter-instance"; +// Dynamic imports to prevent hydration mismatches +const PromptEnhancer = dynamic(() => import("@/components/PromptEnhancer"), { ssr: false }); +const PRDGenerator = dynamic(() => import("@/components/PRDGenerator"), { ssr: false }); +const ActionPlanGenerator = dynamic(() => import("@/components/ActionPlanGenerator"), { ssr: false }); +const UXDesignerPrompt = dynamic(() => import("@/components/UXDesignerPrompt"), { ssr: false }); +const SlidesGenerator = dynamic(() => import("@/components/SlidesGenerator"), { ssr: false }); +const GoogleAdsGenerator = dynamic(() => import("@/components/GoogleAdsGenerator"), { ssr: false }); +const MarketResearcher = dynamic(() => import("@/components/MarketResearcher"), { ssr: false }); +const AIAssist = dynamic(() => import("@/components/AIAssist"), { ssr: false }); +const HistoryPanel = dynamic(() => import("@/components/HistoryPanel"), { ssr: false }); +const SettingsPanel = dynamic(() => import("@/components/SettingsPanel"), { ssr: false }); + export default function Home() { const [currentView, setCurrentView] = useState("enhance"); diff --git a/next.config.js b/next.config.js index f228a3c..4bda044 100644 --- a/next.config.js +++ b/next.config.js @@ -2,7 +2,6 @@ const nextConfig = { reactStrictMode: true, basePath: '/tools/promptarch', - assetPrefix: '/tools/promptarch', trailingSlash: true, };