@supabase/middleware - v0.6.0
    Preparing search index...

    Variable withFeatureFlagConst

    withFeatureFlag: Middleware<
        "featureFlag",
        WithFeatureFlagConfig,
        Record<never, never>,
        FeatureFlagContribution,
    > = ...

    Feature-flag middleware.

    import { withFeatureFlag } from '@supabase/middleware/feature-flag'

    export default {
    fetch: withFeatureFlag(
    {
    name: 'beta-checkout',
    evaluate: (req) => req.headers.get('x-beta') === '1',
    },
    async (_req, ctx) => Response.json({ feature: ctx.featureFlag.name }),
    ),
    }

    Pluggable providers — use whatever you like in evaluate:

    withFeatureFlag({
    name: 'beta-checkout',
    evaluate: async (req) => {
    const userId = req.headers.get('x-user-id') ?? 'anon'
    return await posthog.isFeatureEnabled('beta-checkout', userId)
    },
    })

    Placed after an auth entry, evaluate reads the caller it verified:

    pipeline(
    [
    withUser(),
    withFeatureFlag({
    name: 'beta-checkout',
    evaluate: (_req, ctx) => {
    const { user } = ctx as { user?: { id: string } }
    return user !== undefined && betaTesters.has(user.id)
    },
    }),
    ],
    handler,
    )