$flag
This small utility provides an environment-aware feature flags with full type safety and convenience. It's built to handle both simple boolean flags and advanced per-environment configurations.
Usage
ts
const { $flag } = defineFlags({
useBetaFeature: true,
showDebugTools: {
dev: true,
test: false,
prod: false,
},
})
if ($flag("showDebugTools")) {
// Enable debug tools in dev
}API
defineFlags(flags)
Takes a typed record of flags and returns an object containing:
$flag(name: string): booleanflags: The original flag definitions for reference/debugging
Supported Flag Types
ts
type Envs = Record<"dev" | "test" | "prod", boolean>
type FlagValue = boolean | Envsboolean: Always on/off.Envs: Scoped flags per environment.
Environment Handling
Environment is determined using process.env.NODE_ENV and import.meta.test. Resolution priority:
development→ usesval.devproduction→ usesval.prod- Test environment → uses
val.test(only ifimport.meta.testis true) - Any other case returns
false
Example
ts
const { $flag } = defineFlags({
enableLogging: {
dev: true,
test: false,
prod: false,
},
feature: () => false // run functions too
disableAnalytics: false,
})
$flag("enableLogging") // → true in development
$flag("disableAnalytics") // → false always