Use Hypertune on static pages
Last updated
import { decodeFlagValues } from '@/generated/hypertune'
import { HypertuneClientLogger } from '@/generated/hypertune.react'
import { offerPageFlagPaths } from '@/lib/constants'
export async function generateStaticParams() {
// Enable ISR
return []
}
export default async function Page({
params,
}: {
params: { encodedFlagValues: string }
}) {
const { exampleFlag, enableDesignV2 } = decodeFlagValues(
params.encodedFlagValues,
offerPageFlagPaths
)
return (
<div>
<div>Example Flag: {String(exampleFlag)}</div>
<div>Enable Design V2: {String(enableDesignV2)}</div>
<HypertuneClientLogger flagPaths={offerPageFlagPaths} />
</div>
)
}import { NextRequest, NextResponse } from 'next/server'
import { flagFallbacks } from '@/generated/hypertune'
import { offerPageFlagPaths } from '@/lib/constants'
import getHypertune from '@/lib/getHypertune'
export const config = {
matcher: '/offer',
}
export async function middleware(request: NextRequest) {
const hypertune = await getHypertune()
const encodedFlagValues = hypertune.encodeFlagValues({
flagFallbacks,
flagPaths: offerPageFlagPaths,
})
// Rewrites the request to include the encoded flag values
const nextUrl = new URL(
`/offer/${encodedFlagValues}${request.nextUrl.search}`,
request.url
)
return NextResponse.rewrite(nextUrl, { request })
}