diff --git a/src/app/home-page/page.tsx b/src/app/home-page/page.tsx index 0e1b539..7cd3be7 100644 --- a/src/app/home-page/page.tsx +++ b/src/app/home-page/page.tsx @@ -1,5 +1,6 @@ import React, { Suspense } from "react"; import type { Metadata } from "next"; +import { unstable_noStore as noStore } from "next/cache"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import FeaturedBentoFromDb from '@/components/FeaturedBentoFromDb'; @@ -137,6 +138,14 @@ function FeedSkeleton() { } export default function HomePage() { + // Hard opt-out of all caching for this route. Without this, a child + // server component (FeaturedBentoFromDb -> pickAds -> fetch in lib/ads.ts + // with `next: { revalidate: 30 }`) pulls the whole page into 30-second + // ISR — Next.js takes the lowest positive revalidate it sees in the tree + // and ignores `dynamic = 'force-dynamic'` at the page level. noStore() + // is the unambiguous, child-tree-overriding opt-out and is what the + // hero swap needs to render fresh on every request. + noStore(); return (
{/* Sticky top bar + nav */}