Your Node.js Codebase Has Flag Debt. Here's How to Find It in 30 Seconds.
Most teams don't know how many feature flags are in their codebase. They know they have some . They think they cleaned up most . They're not sure about the rest. One command changes that: npx flaglint audit ./src No API key. No credentials. No dashboard to sign up for. Just your source code and an honest answer. The Problem Nobody Talks About According to LaunchDarkly's best practices, most release flags should live for only days to weeks — yet many remain in codebases for months or years. That's not a LaunchDarkly problem. It's a universal one. Flags accumulate because adding one is fast and removing one is work. You ship the feature, move on, and the flag stays. Six months later a new engineer asks "is this safe to delete?" and nobody knows. So it stays another six months. Stale flags make code "more complex and harder to maintain," as developers spend extra time navigating obsolete conditionals. Unused toggles may degrade performance or even inadvertently expose features or data. And here's the part that stings: developers spend 33–42% of their time dealing with technical debt and maintenance. Feature flag debt is a quiet contributor to that number. What "Flag Debt" Actually Looks Like Here's a real checkout service. Nothing exotic — a Node.js backend with LaunchDarkly calls spread across five files. // checkout.ts export async function isCheckoutV2Enabled ( user : User ): Promise < boolean > { const ctx = { targetingKey : user . id , email : user . email , plan : user . plan }; return ldClient . boolVariation ( " checkout-v2 " , ctx , false ); } // discounts.ts const flagKey = `discount- ${ experimentName } ` ; const enabled = await ldClient . boolVariation ( flagKey , ctx , false ); // analytics.ts const state = await ldClient . allFlagsState ( ctx ); Three different patterns. Three very different levels of risk. The first one is fine — static key, known type, safely removable. The second one is a problem — the key is a template literal. You can't statically kn