diff --git a/src/app/page.tsx b/src/app/page.tsx
index 381fbd80..17bfae25 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,6 +1,18 @@
-import VideoEditor from "@/components/VideoEditor";
+import dynamic from "next/dynamic";
import Footer from "@/components/Footer";
+const VideoEditor = dynamic(() => import("@/components/VideoEditor"), {
+ ssr: false,
+ loading: () => (
+
+
+
+ Loading Video Editor...
+
+
+ ),
+});
+
export default function Home() {
return (
<>
diff --git a/src/components/DownloadResult.tsx b/src/components/DownloadResult.tsx
index 9cb04286..437354d3 100644
--- a/src/components/DownloadResult.tsx
+++ b/src/components/DownloadResult.tsx
@@ -1,10 +1,11 @@
"use client";
import { useState, useEffect } from "react";
+import dynamic from "next/dynamic";
import { ExportResult } from "@/lib/types";
import { formatBytes } from "@/lib/utils";
import { Download, RotateCcw, Share2, AlertCircle, Volume2, VolumeX } from "lucide-react";
-import LottiePlayer from "./LottiePlayer";
+const LottiePlayer = dynamic(() => import("./LottiePlayer"), { ssr: false });
import { NativeShareButton } from "./NativeShareButton";
import successAnim from "@/lib/lottie/success.json";
import { cn } from "@/lib/utils";
diff --git a/src/components/ExportOverlay.tsx b/src/components/ExportOverlay.tsx
index 702461cb..592c9e16 100644
--- a/src/components/ExportOverlay.tsx
+++ b/src/components/ExportOverlay.tsx
@@ -3,10 +3,12 @@
import FocusTrap from "focus-trap-react";
import { useEffect, useRef, useCallback, useState } from "react";
import { ExportStatus } from "@/lib/types";
-import LottiePlayer from "./LottiePlayer";
+import dynamic from "next/dynamic";
import spinnerAnim from "@/lib/lottie/spinner.json";
import TipCarousel from "./TipCarousel";
+const LottiePlayer = dynamic(() => import("./LottiePlayer"), { ssr: false });
+
interface Props {
status: ExportStatus;
progress: number;
diff --git a/src/components/FileUpload.tsx b/src/components/FileUpload.tsx
index f9f2127e..acf47d4a 100644
--- a/src/components/FileUpload.tsx
+++ b/src/components/FileUpload.tsx
@@ -1,8 +1,10 @@
"use client";
import { useRef, useState, useEffect, useCallback } from "react";
+import dynamic from "next/dynamic";
import { Film, FolderOpen } from "lucide-react";
-import LottiePlayer from "./LottiePlayer";
+
+const LottiePlayer = dynamic(() => import("./LottiePlayer"), { ssr: false });
import uploadAnim from "@/lib/lottie/upload.json";
import { cn, formatBytes, formatDuration } from "@/lib/utils";
import { MAX_FILE_SIZE, WARNING_FILE_SIZE } from "@/lib/types";
diff --git a/src/components/VideoEditor.tsx b/src/components/VideoEditor.tsx
index b1d2e574..ae42baf3 100644
--- a/src/components/VideoEditor.tsx
+++ b/src/components/VideoEditor.tsx
@@ -3,6 +3,7 @@
import { useState, useRef, useEffect, useMemo } from "react";
import { useVideoEditor } from "@/hooks/useVideoEditor";
import { TextOverlay } from "@/lib/types";
+import dynamic from "next/dynamic";
import FileUpload from "./FileUpload";
import VideoPreview from "./VideoPreview";
import ThumbnailStrip from "./ThumbnailStrip";
@@ -14,9 +15,10 @@ import TextControls from "./TextControls";
import AudioSpeedControl from "./AudioSpeedControl";
import FormatSelector from "./FormatSelector";
import ExportSettings from "./ExportSettings";
-import ExportOverlay from "./ExportOverlay";
-import DownloadResult from "./DownloadResult";
-import ImageOverlay from "./ImageOverlay"
+
+const ExportOverlay = dynamic(() => import("./ExportOverlay"), { ssr: false });
+const DownloadResult = dynamic(() => import("./DownloadResult"), { ssr: false });
+const ImageOverlay = dynamic(() => import("./ImageOverlay"), { ssr: false });
import { getPresetById } from "@/lib/presets";
import { cn } from "@/lib/utils";
@@ -24,7 +26,7 @@ import {
Layers, Crop, Scissors, RotateCw, Volume2, Type,
SlidersHorizontal, Zap, AlertTriangle, Github, Copy
} from "lucide-react";
-import OnboardingTour from "./OnboardingTour";
+const OnboardingTour = dynamic(() => import("./OnboardingTour"), { ssr: false });
import { useKeyboardShortcuts } from "@/hooks/useKeyboardShortcuts";
interface SectionProps {