diff --git a/apps/marketing/src/app/components/FeaturesSection/components/OpenInDemo/OpenInDemo.tsx b/apps/marketing/src/app/components/FeaturesSection/components/OpenInDemo/OpenInDemo.tsx
index 43b71b1f27a..6e70896314d 100644
--- a/apps/marketing/src/app/components/FeaturesSection/components/OpenInDemo/OpenInDemo.tsx
+++ b/apps/marketing/src/app/components/FeaturesSection/components/OpenInDemo/OpenInDemo.tsx
@@ -100,6 +100,7 @@ export function OpenInDemo() {
diff --git a/apps/marketing/src/app/components/HeroSection/HeroSection.tsx b/apps/marketing/src/app/components/HeroSection/HeroSection.tsx
index 54ca7ff1a83..12b9e88a6af 100644
--- a/apps/marketing/src/app/components/HeroSection/HeroSection.tsx
+++ b/apps/marketing/src/app/components/HeroSection/HeroSection.tsx
@@ -1,7 +1,6 @@
"use client";
import { COMPANY } from "@superset/shared/constants";
-import dynamic from "next/dynamic";
import { useState } from "react";
import { FaGithub } from "react-icons/fa";
import { DownloadButton } from "../DownloadButton";
@@ -9,22 +8,12 @@ import { WaitlistModal } from "../WaitlistModal";
import { ProductDemo } from "./components/ProductDemo";
import { TypewriterText } from "./components/TypewriterText";
-const ShaderAnimation = dynamic(
- () =>
- import("../../../components/ui/shader-animation").then(
- (mod) => mod.ShaderAnimation,
- ),
- { ssr: false },
-);
-
export function HeroSection() {
const [isWaitlistOpen, setIsWaitlistOpen] = useState(false);
return (
-
-
diff --git a/apps/marketing/src/app/components/TrustedBySection/TrustedBySection.tsx b/apps/marketing/src/app/components/TrustedBySection/TrustedBySection.tsx
index 3569272b3e0..64e315fc001 100644
--- a/apps/marketing/src/app/components/TrustedBySection/TrustedBySection.tsx
+++ b/apps/marketing/src/app/components/TrustedBySection/TrustedBySection.tsx
@@ -72,8 +72,6 @@ export function TrustedBySection() {
marginTop: client?.marginTop ?? 0,
}}
unoptimized
- loading="eager"
- priority
/>
{client.text && (
diff --git a/apps/marketing/src/app/components/VideoSection/VideoSection.tsx b/apps/marketing/src/app/components/VideoSection/VideoSection.tsx
index bd2507d9e53..650ca32e633 100644
--- a/apps/marketing/src/app/components/VideoSection/VideoSection.tsx
+++ b/apps/marketing/src/app/components/VideoSection/VideoSection.tsx
@@ -46,7 +46,6 @@ export function VideoSection() {
alt="Video thumbnail"
fill
className="object-cover"
- priority
sizes="(max-width: 768px) 100vw, (max-width: 1280px) 90vw, 1280px"
/>
diff --git a/apps/marketing/src/app/components/WallOfLoveSection/WallOfLoveSection.tsx b/apps/marketing/src/app/components/WallOfLoveSection/WallOfLoveSection.tsx
index 3e92e375b26..0f778254d57 100644
--- a/apps/marketing/src/app/components/WallOfLoveSection/WallOfLoveSection.tsx
+++ b/apps/marketing/src/app/components/WallOfLoveSection/WallOfLoveSection.tsx
@@ -68,7 +68,7 @@ function TestimonialCard({ testimonial }: { testimonial: Testimonial }) {
e.stopPropagation();
setShowOriginal(!showOriginal);
}}
- className="group mt-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
+ className="group mt-2 py-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
>
{showOriginal ? "Translated" : "Translated"}
diff --git a/apps/marketing/src/app/layout.tsx b/apps/marketing/src/app/layout.tsx
index 69ad1ffa8c4..6b72d72a707 100644
--- a/apps/marketing/src/app/layout.tsx
+++ b/apps/marketing/src/app/layout.tsx
@@ -111,10 +111,7 @@ export default function RootLayout({
suppressHydrationWarning
>
-
+
diff --git a/apps/marketing/src/app/page.tsx b/apps/marketing/src/app/page.tsx
index 033d030bedd..4ed11284d40 100644
--- a/apps/marketing/src/app/page.tsx
+++ b/apps/marketing/src/app/page.tsx
@@ -1,12 +1,28 @@
"use client";
-import { CTASection } from "./components/CTASection";
-import { FAQSection } from "./components/FAQSection";
-import { FeaturesSection } from "./components/FeaturesSection";
+import dynamic from "next/dynamic";
+
import { HeroSection } from "./components/HeroSection";
-import { TrustedBySection } from "./components/TrustedBySection";
-import { VideoSection } from "./components/VideoSection";
-import { WallOfLoveSection } from "./components/WallOfLoveSection";
+
+// Lazy load below-fold sections to reduce initial JS bundle (~304 KiB unused JS)
+const VideoSection = dynamic(() =>
+ import("./components/VideoSection").then((mod) => mod.VideoSection),
+);
+const TrustedBySection = dynamic(() =>
+ import("./components/TrustedBySection").then((mod) => mod.TrustedBySection),
+);
+const FeaturesSection = dynamic(() =>
+ import("./components/FeaturesSection").then((mod) => mod.FeaturesSection),
+);
+const WallOfLoveSection = dynamic(() =>
+ import("./components/WallOfLoveSection").then((mod) => mod.WallOfLoveSection),
+);
+const FAQSection = dynamic(() =>
+ import("./components/FAQSection").then((mod) => mod.FAQSection),
+);
+const CTASection = dynamic(() =>
+ import("./components/CTASection").then((mod) => mod.CTASection),
+);
export default function Home() {
return (
diff --git a/apps/marketing/src/instrumentation-client.ts b/apps/marketing/src/instrumentation-client.ts
index b68e1ba0409..262210e7e2d 100644
--- a/apps/marketing/src/instrumentation-client.ts
+++ b/apps/marketing/src/instrumentation-client.ts
@@ -16,6 +16,7 @@ posthog.init(env.NEXT_PUBLIC_POSTHOG_KEY, {
cross_subdomain_cookie: true,
persistence: "cookie",
persistence_name: POSTHOG_COOKIE_NAME,
+ disable_session_recording: true,
loaded: (posthog) => {
posthog.register({
app_name: "marketing",