+
{subtitle}
diff --git a/src/routes/(marketing)/+page.server.ts b/src/routes/(marketing)/+page.server.ts new file mode 100644 index 0000000000..0841413d80 --- /dev/null +++ b/src/routes/(marketing)/+page.server.ts @@ -0,0 +1,25 @@ +import { STATSIG_STABLE_ID_KEY, DEFAULT_HERO_SUBTITLE } from '$lib/statsig/constants'; +import { evaluateHeroDescriptionExperiment } from '$lib/statsig/hero-statsig.server'; +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async ({ cookies, request, url }) => { + let stableId = cookies.get(STATSIG_STABLE_ID_KEY); + if (!stableId) { + stableId = crypto.randomUUID(); + cookies.set(STATSIG_STABLE_ID_KEY, stableId, { + path: '/', + maxAge: 60 * 60 * 24 * 365, + sameSite: 'lax', + httpOnly: false, // intentional: client JS reads this cookie to sync SSR and browser experiment assignments + secure: url.protocol === 'https:' + }); + } + + const userAgent = request.headers.get('user-agent') ?? undefined; + const heroSubtitle = await evaluateHeroDescriptionExperiment( + { userID: stableId, userAgent }, + DEFAULT_HERO_SUBTITLE + ); + + return { heroSubtitle }; +}; diff --git a/src/routes/(marketing)/+page.svelte b/src/routes/(marketing)/+page.svelte index c6eabe5d70..f08e9b0ac6 100644 --- a/src/routes/(marketing)/+page.svelte +++ b/src/routes/(marketing)/+page.svelte @@ -13,6 +13,8 @@ import { FooterNav, MainFooter } from '$lib/components'; import LogoList from './(components)/logo-list.svelte'; import Ai from './(components)/ai.svelte'; + + const { data } = $props();