From ffcb0114d552b11de1e96604fe0a9abab9db9962 Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Mon, 24 Nov 2025 18:14:08 -0500 Subject: [PATCH 1/7] try ISR --- .../app/[host]/[domain]/static/@announcement/[slug]/page.tsx | 2 -- .../[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx | 2 -- .../src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx | 2 -- .../src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx | 2 -- .../app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx | 2 -- .../bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx | 2 -- .../app/[host]/[domain]/static/@productSelect/[slug]/page.tsx | 2 -- .../src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx | 2 -- .../app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx | 2 -- .../bundle/src/app/[host]/[domain]/static/[slug]/page.tsx | 2 +- 10 files changed, 1 insertion(+), 19 deletions(-) diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx index 2dae57a19b..efe637e31c 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx @@ -10,8 +10,6 @@ import { Announcement } from "@/components/header/Announcement"; import { MdxServerComponent } from "@/mdx/components/server-component"; import { createCachedMdxSerializer } from "@/server/mdx-serializer"; -export const revalidate = false; - export default async function AnnouncementPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx index 235b315103..5ed979dd1f 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx @@ -8,8 +8,6 @@ import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { PlaygroundEndpointSelectorContent } from "@/components/playground/endpoint/PlaygroundEndpointSelectorContent"; import { flattenApiSection } from "@/components/playground/utils/flatten-apis"; -export const revalidate = false; - export default async function EndpointSelectorPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx index 3f7475d733..3654cd9945 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx @@ -15,8 +15,6 @@ import { Suspense } from "react"; import { ExplorerContent, NoEndpointSelected } from "@/components/playground/ExplorerContent"; import { PlaygroundEndpointSkeleton } from "@/components/playground/endpoint"; -export const revalidate = false; - export default async function ExplorerPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx index 03799ed996..e29e7cd62d 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx @@ -6,8 +6,6 @@ import { FernNavigation } from "@fern-api/fdr-sdk"; import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { HeaderTabsList } from "@fern-docs/components/HeaderTabsList"; -export const revalidate = false; - export default async function HeaderTabsPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx index cae28b385e..934c8016fb 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx @@ -7,8 +7,6 @@ import { LanguageDropdown } from "@fern-docs/components/header/LanguageDropdown" import { getFernToken } from "@/app/fern-token"; -export const revalidate = false; - export default async function LanguageSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx index 83af0b85d3..cf490d9449 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx @@ -10,8 +10,6 @@ import { getFernToken } from "@/app/fern-token"; import { Logo } from "@/components/logo"; import { withLogo } from "@/server/withLogo"; -export const revalidate = false; - export default async function LogoPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx index 8e82449ec3..9cac111fd3 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx @@ -8,8 +8,6 @@ import { ProductDropdown } from "@fern-docs/components/header/ProductDropdown"; import { getFernToken } from "@/app/fern-token"; -export const revalidate = false; - export default async function ProductSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx index bd917151d4..bc0bcf8fc3 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx @@ -10,8 +10,6 @@ import { SidebarTabsList } from "@fern-docs/components/sidebar/SidebarTabsList"; import { SidebarTabsRoot } from "@fern-docs/components/sidebar/SidebarTabsRoot"; import { HiddenSidebar } from "@fern-docs/components/theming/HiddenSidebar"; -export const revalidate = false; - export default async function SidebarPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx index 011e72552e..5c02a8b55a 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx @@ -8,8 +8,6 @@ import { VersionDropdown } from "@fern-docs/components/header/VersionDropdown"; import { getFernToken } from "@/app/fern-token"; -export const revalidate = false; - export default async function VersionSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx index e88bdd281c..29a772f3dd 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx @@ -9,7 +9,7 @@ import { generateMetadataFromPage } from "@/components/seo"; import SharedPage from "@/components/shared-page"; export const dynamic = "force-static"; -export const revalidate = false; +export const revalidate = 900; export default async function StaticPage({ params From 63a3ba0c9c21d7f4ce688bd7e61820cb3700e3bd Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Tue, 25 Nov 2025 12:01:20 -0500 Subject: [PATCH 2/7] try again --- .../app/[host]/[domain]/static/@announcement/[slug]/page.tsx | 2 ++ .../[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx | 2 ++ .../src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx | 2 ++ .../bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx | 2 ++ .../src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx | 2 ++ .../app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx | 2 ++ .../bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx | 2 ++ .../app/[host]/[domain]/static/@productSelect/[slug]/page.tsx | 2 ++ .../src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx | 2 ++ .../app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx | 2 ++ .../fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx | 2 ++ 11 files changed, 22 insertions(+) diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx index efe637e31c..ef0836d5a4 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx @@ -10,6 +10,8 @@ import { Announcement } from "@/components/header/Announcement"; import { MdxServerComponent } from "@/mdx/components/server-component"; import { createCachedMdxSerializer } from "@/server/mdx-serializer"; +export const revalidate = 900; + export default async function AnnouncementPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx index 5ed979dd1f..92c46a5f4e 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx @@ -8,6 +8,8 @@ import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { PlaygroundEndpointSelectorContent } from "@/components/playground/endpoint/PlaygroundEndpointSelectorContent"; import { flattenApiSection } from "@/components/playground/utils/flatten-apis"; +export const revalidate = 900; + export default async function EndpointSelectorPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx index 3654cd9945..680f66f71a 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx @@ -15,6 +15,8 @@ import { Suspense } from "react"; import { ExplorerContent, NoEndpointSelected } from "@/components/playground/ExplorerContent"; import { PlaygroundEndpointSkeleton } from "@/components/playground/endpoint"; +export const revalidate = 900; + export default async function ExplorerPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx index 5d515e3d85..d455e15ba3 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx @@ -2,6 +2,8 @@ import { InterceptedPlaygroundCloseButton } from "@/components/playground/Playgr import { PlaygroundDrawer } from "@/components/playground/PlaygroundDrawer"; import { HorizontalSplitPane } from "@/components/playground/VerticalSplitPane"; +export const revalidate = 900; + export default async function ExplorerLayout({ children, sidebar diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx index e29e7cd62d..6707f0722e 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx @@ -6,6 +6,8 @@ import { FernNavigation } from "@fern-api/fdr-sdk"; import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { HeaderTabsList } from "@fern-docs/components/HeaderTabsList"; +export const revalidate = 900; + export default async function HeaderTabsPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx index 934c8016fb..7e254f0b09 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx @@ -7,6 +7,8 @@ import { LanguageDropdown } from "@fern-docs/components/header/LanguageDropdown" import { getFernToken } from "@/app/fern-token"; +export const revalidate = 900; + export default async function LanguageSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx index cf490d9449..14abfddce5 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx @@ -10,6 +10,8 @@ import { getFernToken } from "@/app/fern-token"; import { Logo } from "@/components/logo"; import { withLogo } from "@/server/withLogo"; +export const revalidate = 900; + export default async function LogoPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx index 9cac111fd3..67cc553009 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx @@ -8,6 +8,8 @@ import { ProductDropdown } from "@fern-docs/components/header/ProductDropdown"; import { getFernToken } from "@/app/fern-token"; +export const revalidate = 900; + export default async function ProductSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx index bc0bcf8fc3..beae9e86c0 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx @@ -10,6 +10,8 @@ import { SidebarTabsList } from "@fern-docs/components/sidebar/SidebarTabsList"; import { SidebarTabsRoot } from "@fern-docs/components/sidebar/SidebarTabsRoot"; import { HiddenSidebar } from "@fern-docs/components/theming/HiddenSidebar"; +export const revalidate = 900; + export default async function SidebarPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx index 5c02a8b55a..fbda3d8eca 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx @@ -8,6 +8,8 @@ import { VersionDropdown } from "@fern-docs/components/header/VersionDropdown"; import { getFernToken } from "@/app/fern-token"; +export const revalidate = 900; + export default async function VersionSelectPage({ params }: { diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx index 3ca3728d63..7ae379c7e2 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx @@ -4,6 +4,8 @@ import { createCachedDocsLoader } from "@fern-api/docs-loader"; import SharedLayout from "@/components/shared-layout"; +export const revalidate = 900; + export default async function Layout({ children, params, From d4a4b10f29e2654a5fc770464b503b603c25947a Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Tue, 25 Nov 2025 13:15:26 -0500 Subject: [PATCH 3/7] try new headers --- packages/fern-docs/bundle/src/middleware.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/fern-docs/bundle/src/middleware.ts b/packages/fern-docs/bundle/src/middleware.ts index ebae960885..233b57b708 100644 --- a/packages/fern-docs/bundle/src/middleware.ts +++ b/packages/fern-docs/bundle/src/middleware.ts @@ -329,7 +329,10 @@ export const middleware: NextMiddleware = async (request) => { rewritePath, reason: "Self-hosted mode - using static route" }); - return rewrite(rewritePath); + const response = rewrite(rewritePath); + // Set CDN cache headers for static pages: 7 min cache + 1 day stale-while-revalidate + response.headers.set("Cache-Control", "public, s-maxage=420, stale-while-revalidate=86400"); + return response; } const { getAuthState } = await createGetAuthStateEdge(request, (token) => { @@ -342,7 +345,10 @@ export const middleware: NextMiddleware = async (request) => { return rewrite(withDomain(`/dynamic/${encodeURIComponent(conformTrailingSlash(pathname))}`)); } - return rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); + const response = rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); + // Set CDN cache headers for static pages: 7 min cache + 1 day stale-while-revalidate + response.headers.set("Cache-Control", "public, s-maxage=420, stale-while-revalidate=86400"); + return response; }; const response = getResponse(); From ad52193ac044f4993b3d3e069da72dd6fe7feebc Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Tue, 25 Nov 2025 13:47:56 -0500 Subject: [PATCH 4/7] cache control headers --- .../[domain]/static/@announcement/[slug]/page.tsx | 2 +- .../[domain]/static/@explorer/@sidebar/[slug]/page.tsx | 2 +- .../[host]/[domain]/static/@explorer/[slug]/page.tsx | 2 +- .../app/[host]/[domain]/static/@explorer/layout.tsx | 2 -- .../[host]/[domain]/static/@headertabs/[slug]/page.tsx | 2 +- .../[domain]/static/@languageSelect/[slug]/page.tsx | 2 +- .../app/[host]/[domain]/static/@logo/[slug]/page.tsx | 2 +- .../[domain]/static/@productSelect/[slug]/page.tsx | 2 +- .../[host]/[domain]/static/@sidebar/[slug]/page.tsx | 2 +- .../[domain]/static/@versionSelect/[slug]/page.tsx | 2 +- .../src/app/[host]/[domain]/static/[slug]/page.tsx | 2 +- .../bundle/src/app/[host]/[domain]/static/layout.tsx | 2 -- packages/fern-docs/bundle/src/middleware.ts | 10 ++++++---- 13 files changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx index ef0836d5a4..2dae57a19b 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@announcement/[slug]/page.tsx @@ -10,7 +10,7 @@ import { Announcement } from "@/components/header/Announcement"; import { MdxServerComponent } from "@/mdx/components/server-component"; import { createCachedMdxSerializer } from "@/server/mdx-serializer"; -export const revalidate = 900; +export const revalidate = false; export default async function AnnouncementPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx index 92c46a5f4e..235b315103 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/@sidebar/[slug]/page.tsx @@ -8,7 +8,7 @@ import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { PlaygroundEndpointSelectorContent } from "@/components/playground/endpoint/PlaygroundEndpointSelectorContent"; import { flattenApiSection } from "@/components/playground/utils/flatten-apis"; -export const revalidate = 900; +export const revalidate = false; export default async function EndpointSelectorPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx index 680f66f71a..3f7475d733 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/[slug]/page.tsx @@ -15,7 +15,7 @@ import { Suspense } from "react"; import { ExplorerContent, NoEndpointSelected } from "@/components/playground/ExplorerContent"; import { PlaygroundEndpointSkeleton } from "@/components/playground/endpoint"; -export const revalidate = 900; +export const revalidate = false; export default async function ExplorerPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx index d455e15ba3..5d515e3d85 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@explorer/layout.tsx @@ -2,8 +2,6 @@ import { InterceptedPlaygroundCloseButton } from "@/components/playground/Playgr import { PlaygroundDrawer } from "@/components/playground/PlaygroundDrawer"; import { HorizontalSplitPane } from "@/components/playground/VerticalSplitPane"; -export const revalidate = 900; - export default async function ExplorerLayout({ children, sidebar diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx index 6707f0722e..03799ed996 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@headertabs/[slug]/page.tsx @@ -6,7 +6,7 @@ import { FernNavigation } from "@fern-api/fdr-sdk"; import { slugjoin } from "@fern-api/fdr-sdk/navigation"; import { HeaderTabsList } from "@fern-docs/components/HeaderTabsList"; -export const revalidate = 900; +export const revalidate = false; export default async function HeaderTabsPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx index 7e254f0b09..cae28b385e 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@languageSelect/[slug]/page.tsx @@ -7,7 +7,7 @@ import { LanguageDropdown } from "@fern-docs/components/header/LanguageDropdown" import { getFernToken } from "@/app/fern-token"; -export const revalidate = 900; +export const revalidate = false; export default async function LanguageSelectPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx index 14abfddce5..83af0b85d3 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@logo/[slug]/page.tsx @@ -10,7 +10,7 @@ import { getFernToken } from "@/app/fern-token"; import { Logo } from "@/components/logo"; import { withLogo } from "@/server/withLogo"; -export const revalidate = 900; +export const revalidate = false; export default async function LogoPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx index 67cc553009..8e82449ec3 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@productSelect/[slug]/page.tsx @@ -8,7 +8,7 @@ import { ProductDropdown } from "@fern-docs/components/header/ProductDropdown"; import { getFernToken } from "@/app/fern-token"; -export const revalidate = 900; +export const revalidate = false; export default async function ProductSelectPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx index beae9e86c0..bd917151d4 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@sidebar/[slug]/page.tsx @@ -10,7 +10,7 @@ import { SidebarTabsList } from "@fern-docs/components/sidebar/SidebarTabsList"; import { SidebarTabsRoot } from "@fern-docs/components/sidebar/SidebarTabsRoot"; import { HiddenSidebar } from "@fern-docs/components/theming/HiddenSidebar"; -export const revalidate = 900; +export const revalidate = false; export default async function SidebarPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx index fbda3d8eca..011e72552e 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/@versionSelect/[slug]/page.tsx @@ -8,7 +8,7 @@ import { VersionDropdown } from "@fern-docs/components/header/VersionDropdown"; import { getFernToken } from "@/app/fern-token"; -export const revalidate = 900; +export const revalidate = false; export default async function VersionSelectPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx index 29a772f3dd..e88bdd281c 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/[slug]/page.tsx @@ -9,7 +9,7 @@ import { generateMetadataFromPage } from "@/components/seo"; import SharedPage from "@/components/shared-page"; export const dynamic = "force-static"; -export const revalidate = 900; +export const revalidate = false; export default async function StaticPage({ params diff --git a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx index 7ae379c7e2..3ca3728d63 100644 --- a/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx +++ b/packages/fern-docs/bundle/src/app/[host]/[domain]/static/layout.tsx @@ -4,8 +4,6 @@ import { createCachedDocsLoader } from "@fern-api/docs-loader"; import SharedLayout from "@/components/shared-layout"; -export const revalidate = 900; - export default async function Layout({ children, params, diff --git a/packages/fern-docs/bundle/src/middleware.ts b/packages/fern-docs/bundle/src/middleware.ts index 233b57b708..1e19498716 100644 --- a/packages/fern-docs/bundle/src/middleware.ts +++ b/packages/fern-docs/bundle/src/middleware.ts @@ -330,8 +330,9 @@ export const middleware: NextMiddleware = async (request) => { reason: "Self-hosted mode - using static route" }); const response = rewrite(rewritePath); - // Set CDN cache headers for static pages: 7 min cache + 1 day stale-while-revalidate - response.headers.set("Cache-Control", "public, s-maxage=420, stale-while-revalidate=86400"); + // Set CDN cache headers for static pages: no browser cache, 7 min CDN cache + 1 day stale-while-revalidate + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); + response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); return response; } @@ -346,8 +347,9 @@ export const middleware: NextMiddleware = async (request) => { } const response = rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); - // Set CDN cache headers for static pages: 7 min cache + 1 day stale-while-revalidate - response.headers.set("Cache-Control", "public, s-maxage=420, stale-while-revalidate=86400"); + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); // no browser cache, 7 min CDN cache, 1 day stale-while-revalidate + response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); + response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=86400"); // longer value for vercel CDN since it respects invalidateTag return response; }; From a9b526de9de5855c03b0a0e514f40092adda67c9 Mon Sep 17 00:00:00 2001 From: Colton Berry Date: Tue, 25 Nov 2025 17:01:52 -0500 Subject: [PATCH 5/7] alter cache control values --- packages/fern-docs/bundle/src/middleware.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/fern-docs/bundle/src/middleware.ts b/packages/fern-docs/bundle/src/middleware.ts index 1e19498716..3fcf083723 100644 --- a/packages/fern-docs/bundle/src/middleware.ts +++ b/packages/fern-docs/bundle/src/middleware.ts @@ -331,8 +331,8 @@ export const middleware: NextMiddleware = async (request) => { }); const response = rewrite(rewritePath); // Set CDN cache headers for static pages: no browser cache, 7 min CDN cache + 1 day stale-while-revalidate - response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); - response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); + response.headers.set("Cache-Control", "public, max-age=1, s-maxage=1, stale-while-revalidate=120"); + response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=120"); return response; } @@ -347,9 +347,9 @@ export const middleware: NextMiddleware = async (request) => { } const response = rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); - response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); // no browser cache, 7 min CDN cache, 1 day stale-while-revalidate - response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); - response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=86400"); // longer value for vercel CDN since it respects invalidateTag + response.headers.set("Cache-Control", "public, max-age=1, s-maxage=1, stale-while-revalidate=120"); + response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=120"); + response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=120"); return response; }; From e05c4d6b76acfedd2447096ba5005d50d9862c2b Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Mon, 1 Dec 2025 13:01:23 -0500 Subject: [PATCH 6/7] Revert "alter cache control values" This reverts commit a9b526de9de5855c03b0a0e514f40092adda67c9. --- packages/fern-docs/bundle/src/middleware.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/fern-docs/bundle/src/middleware.ts b/packages/fern-docs/bundle/src/middleware.ts index 3fcf083723..1e19498716 100644 --- a/packages/fern-docs/bundle/src/middleware.ts +++ b/packages/fern-docs/bundle/src/middleware.ts @@ -331,8 +331,8 @@ export const middleware: NextMiddleware = async (request) => { }); const response = rewrite(rewritePath); // Set CDN cache headers for static pages: no browser cache, 7 min CDN cache + 1 day stale-while-revalidate - response.headers.set("Cache-Control", "public, max-age=1, s-maxage=1, stale-while-revalidate=120"); - response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=120"); + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); + response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); return response; } @@ -347,9 +347,9 @@ export const middleware: NextMiddleware = async (request) => { } const response = rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); - response.headers.set("Cache-Control", "public, max-age=1, s-maxage=1, stale-while-revalidate=120"); - response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=120"); - response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=120"); + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); // no browser cache, 7 min CDN cache, 1 day stale-while-revalidate + response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); + response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=86400"); // longer value for vercel CDN since it respects invalidateTag return response; }; From 65994428304fc409e29c2604f87ce906d14c51f6 Mon Sep 17 00:00:00 2001 From: Kenny Derek Date: Mon, 1 Dec 2025 13:04:13 -0500 Subject: [PATCH 7/7] push --- packages/fern-docs/bundle/src/middleware.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/fern-docs/bundle/src/middleware.ts b/packages/fern-docs/bundle/src/middleware.ts index 1e19498716..c509586dbd 100644 --- a/packages/fern-docs/bundle/src/middleware.ts +++ b/packages/fern-docs/bundle/src/middleware.ts @@ -331,8 +331,8 @@ export const middleware: NextMiddleware = async (request) => { }); const response = rewrite(rewritePath); // Set CDN cache headers for static pages: no browser cache, 7 min CDN cache + 1 day stale-while-revalidate - response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); - response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=1, stale-while-revalidate=86400"); + response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=86400"); return response; } @@ -347,8 +347,8 @@ export const middleware: NextMiddleware = async (request) => { } const response = rewrite(withDomain(`/static/${encodeURIComponent(conformTrailingSlash(pathname))}`)); - response.headers.set("Cache-Control", "public, max-age=0, s-maxage=420, stale-while-revalidate=86400"); // no browser cache, 7 min CDN cache, 1 day stale-while-revalidate - response.headers.set("CDN-Cache-Control", "max-age=420, stale-while-revalidate=86400"); + response.headers.set("Cache-Control", "public, max-age=0, s-maxage=1, stale-while-revalidate=86400"); // no browser cache, 1 second CDN cache, 1 day stale-while-revalidate + response.headers.set("CDN-Cache-Control", "max-age=1, stale-while-revalidate=86400"); response.headers.set("Vercel-CDN-Cache-Control", "max-age=86400, stale-while-revalidate=86400"); // longer value for vercel CDN since it respects invalidateTag return response; };