Reference
2 min read

@vercel/flags/sveltekit Reference

The reference for the @vercel/flags/sveltekit submodule
Table of Contents

The @vercel/flags/sveltekit submodule implements the Feature Flags pattern for SvelteKit.

To learn more about the Flags pattern:

Description: Declares a feature flag

A feature flag declared this way will automatically respect overrides set by Vercel Toolbar and integrate with Runtime Logs, Web Analytics, and more.

ParameterTypeDescription
keystringKey of the feature flag.
decidefunctionResolves the value of the feature flag.
description (Optional)stringDescription of the feature flag.
origin (Optional)stringThe URL where this feature flag can be managed.
options (Optional){ label?: string, value: any }[]Possible values a feature flag can resolve to, which are displayed in Vercel Toolbar.

The key, description, origin, and options appear in Vercel Toolbar.

flags.ts
export const showSummerSale = flag<boolean>({
  key: 'summer-sale',
  async decide() {
    return false;
  },
  origin: 'https://example.com/flags/summer-sale/',
  description: 'Show Summer Holiday Sale Banner, 20% off',
  options: [
    // options are not necessary for boolean flags, but we customize their labels here
    { value: false, label: 'Hide' },
    { value: true, label: 'Show' },
  ],
});

Description: Turns flags declared using flag into Vercel Toolbar compatible definitions.

ParameterTypeDescription
flagsRecord<string, Flag>A record where the values are feature flags. The keys are not used.

Description: A handle hook that establishes context for flags, so they have access to the event object.

ParameterTypeDescription
options{ secret: string, flags?: Record<string, Flag> }The FLAGS_SECRET environment variable and a record of all the flags
hooks.server.ts
import { createHandle } from '@vercel/flags/sveltekit';
import { FLAGS_SECRET } from '$env/static/private';
import * as flags from '$lib/flags';
 
export const handle = createHandle({ secret: FLAGS_SECRET, flags });

Note that when composing createHandle with other handlers using SvelteKit's sequence utility then createHandle should come first. Only handlers after it will be able to access feature flags.

Last updated on July 20, 2024