From 5cb2fa77ae5c18215142cf0f6df8da56b57d5700 Mon Sep 17 00:00:00 2001 From: Satya Patel Date: Sat, 3 Oct 2026 18:46:09 -0700 Subject: [PATCH] fix(marketing): prerender the sitemap again The sitemap has been rendered on every request since cacheComponents was turned on. Its feature-flag read went through unstable_cache, and the PostHog call inside it ends a route handler's prerender, so Next gave up and marked the route dynamic. The flag read is now a "use cache" function with the same one-minute lifetime, and the sitemap is static with a one-minute refresh, as it was before. It only reproduced with a reachable PostHog host, which is why local builds with a placeholder host stayed static. --- apps/marketing/src/lib/site-flags.ts | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/apps/marketing/src/lib/site-flags.ts b/apps/marketing/src/lib/site-flags.ts index 0a7aaf26e3c..6b2f2aa653c 100644 --- a/apps/marketing/src/lib/site-flags.ts +++ b/apps/marketing/src/lib/site-flags.ts @@ -1,27 +1,22 @@ import "server-only"; import { FEATURE_FLAGS } from "@superset/shared/constants"; -import { unstable_cache } from "next/cache"; +import { cacheLife } from "next/cache"; import { posthogServer } from "./posthog-server"; const SITE_DISTINCT_ID = "marketing-site"; const REVALIDATE_SECONDS = 60; -const evaluateSiteFlag = unstable_cache( - async (flag: string) => - Boolean( - await posthogServer.getFeatureFlag(flag, SITE_DISTINCT_ID, { - sendFeatureFlagEvents: false, - }), - ), - ["site-flag"], - { revalidate: REVALIDATE_SECONDS }, -); - /** A flag evaluated once for the whole site. Any failure reads as off. */ export async function getSiteFlag(flag: string): Promise { + "use cache"; + cacheLife({ revalidate: REVALIDATE_SECONDS }); try { - return await evaluateSiteFlag(flag); + return Boolean( + await posthogServer.getFeatureFlag(flag, SITE_DISTINCT_ID, { + sendFeatureFlagEvents: false, + }), + ); } catch (error) { console.error(`[site-flags] Failed to load ${flag}`, error); return false;