From feca902271865037509a2d420a65577be66b1033 Mon Sep 17 00:00:00 2001 From: Peter White Date: Wed, 14 Oct 2026 10:46:07 +0200 Subject: [PATCH] Keep static-only routes static when a theme is forced A ?theme= param or x-gitbook-theme cookie switched every route to the dynamic tree, but markdown, llms.txt, rss and sitemap routes only exist under static, so they 404'd. Site previews always persist the theme cookie, which made View as Markdown 404 there. Fixes RND-12749 --- packages/gitbook/src/middleware.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/gitbook/src/middleware.ts b/packages/gitbook/src/middleware.ts index 8a75df506..e346b9c8f 100644 --- a/packages/gitbook/src/middleware.ts +++ b/packages/gitbook/src/middleware.ts @@ -496,7 +496,9 @@ async function serveSiteRoutes(requestURL: URL, request: NextRequest) { themeMode === CustomizationThemeMode.Dark ? CustomizationDefaultThemeMode.Dark : CustomizationDefaultThemeMode.Light; - } else { + } else if (routeTypeFromPathname !== 'static') { + // Markdown, llms.txt, RSS and sitemap routes only exist under `sites/static`, so + // forcing them dynamic 404s. They don't render a theme anyway. RND-12749. routeType = 'dynamic'; requestHeaders.set(MiddlewareHeaders.Theme, themeMode); }