[{"data":1,"prerenderedAt":362},["ShallowReactive",2],{"term-f\u002Ffeature-flag":3,"related-f\u002Ffeature-flag":346},{"id":4,"title":5,"acronym":6,"body":7,"category":327,"description":328,"difficulty":329,"extension":330,"letter":331,"meta":332,"navigation":160,"path":333,"related":334,"seo":340,"sitemap":341,"stem":344,"subcategory":6,"__hash__":345},"terms\u002Fterms\u002Ff\u002Ffeature-flag.md","Feature Flag",null,{"type":8,"value":9,"toc":321},"minimark",[10,15,19,23,26,30,310,314,317],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A feature flag is a toggle that lets you turn features on or off without deploying new code. Ship the code dark (hidden behind a flag), enable it for 5% of users, check if it's working, then roll it out to everyone. Bug found? Flip the flag off. No rollback, no revert, no emergency deploy. It decouples deployment from release — you can deploy on Friday and release on Monday.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Feature flags (feature toggles) are conditional code paths controlled by external configuration that allow teams to enable or disable features at runtime. Types include release flags (gradual rollouts), experiment flags (A\u002FB tests), ops flags (kill switches), and permission flags (entitlements). Managed services include LaunchDarkly, Unleash, and Flagsmith. Implementation ranges from simple boolean checks to sophisticated user-targeting rules with percentage rollouts.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Simple feature flag check\nif (featureFlags.isEnabled('new-checkout', { userId: user.id })) {\n  return \u003CNewCheckout \u002F>;\n} else {\n  return \u003CLegacyCheckout \u002F>;\n}\n\n\u002F\u002F Gradual rollout config\n{\n  \"new-checkout\": {\n    \"enabled\": true,\n    \"rolloutPercentage\": 25,\n    \"targeting\": {\n      \"include\": [\"beta-users\"],\n      \"exclude\": [\"enterprise-tier\"]\n    }\n  }\n}\n","javascript","",[38,39,40,49,110,126,137,149,155,162,168,173,189,209,227,241,269,293,299,305],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Simple feature flag check\n",[41,50,52,56,60,64,68,71,74,78,80,83,86,90,93,96,98,101,104,107],{"class":43,"line":51},2,[41,53,55],{"class":54},"s7zQu","if",[41,57,59],{"class":58},"sTEyZ"," (featureFlags",[41,61,63],{"class":62},"sMK4o",".",[41,65,67],{"class":66},"s2Zo4","isEnabled",[41,69,70],{"class":58},"(",[41,72,73],{"class":62},"'",[41,75,77],{"class":76},"sfazB","new-checkout",[41,79,73],{"class":62},[41,81,82],{"class":62},",",[41,84,85],{"class":62}," {",[41,87,89],{"class":88},"swJcz"," userId",[41,91,92],{"class":62},":",[41,94,95],{"class":58}," user",[41,97,63],{"class":62},[41,99,100],{"class":58},"id ",[41,102,103],{"class":62},"}",[41,105,106],{"class":58},")) ",[41,108,109],{"class":62},"{\n",[41,111,113,116,119,123],{"class":43,"line":112},3,[41,114,115],{"class":54},"  return",[41,117,118],{"class":62}," \u003C",[41,120,122],{"class":121},"sBMFI","NewCheckout",[41,124,125],{"class":62}," \u002F>;\n",[41,127,129,131,134],{"class":43,"line":128},4,[41,130,103],{"class":62},[41,132,133],{"class":54}," else",[41,135,136],{"class":62}," {\n",[41,138,140,142,144,147],{"class":43,"line":139},5,[41,141,115],{"class":54},[41,143,118],{"class":62},[41,145,146],{"class":121},"LegacyCheckout",[41,148,125],{"class":62},[41,150,152],{"class":43,"line":151},6,[41,153,154],{"class":62},"}\n",[41,156,158],{"class":43,"line":157},7,[41,159,161],{"emptyLinePlaceholder":160},true,"\n",[41,163,165],{"class":43,"line":164},8,[41,166,167],{"class":47},"\u002F\u002F Gradual rollout config\n",[41,169,171],{"class":43,"line":170},9,[41,172,109],{"class":62},[41,174,176,179,181,184,187],{"class":43,"line":175},10,[41,177,178],{"class":62},"  \"",[41,180,77],{"class":76},[41,182,183],{"class":62},"\"",[41,185,186],{"class":88},": ",[41,188,109],{"class":62},[41,190,192,195,198,200,202,206],{"class":43,"line":191},11,[41,193,194],{"class":62},"    \"",[41,196,197],{"class":88},"enabled",[41,199,183],{"class":62},[41,201,92],{"class":62},[41,203,205],{"class":204},"sfNiH"," true",[41,207,208],{"class":62},",\n",[41,210,212,214,217,219,221,225],{"class":43,"line":211},12,[41,213,194],{"class":62},[41,215,216],{"class":88},"rolloutPercentage",[41,218,183],{"class":62},[41,220,92],{"class":62},[41,222,224],{"class":223},"sbssI"," 25",[41,226,208],{"class":62},[41,228,230,232,235,237,239],{"class":43,"line":229},13,[41,231,194],{"class":62},[41,233,234],{"class":88},"targeting",[41,236,183],{"class":62},[41,238,92],{"class":62},[41,240,136],{"class":62},[41,242,244,247,250,252,254,257,259,262,264,267],{"class":43,"line":243},14,[41,245,246],{"class":62},"      \"",[41,248,249],{"class":88},"include",[41,251,183],{"class":62},[41,253,92],{"class":62},[41,255,256],{"class":88}," [",[41,258,183],{"class":62},[41,260,261],{"class":76},"beta-users",[41,263,183],{"class":62},[41,265,266],{"class":88},"]",[41,268,208],{"class":62},[41,270,272,274,277,279,281,283,285,288,290],{"class":43,"line":271},15,[41,273,246],{"class":62},[41,275,276],{"class":88},"exclude",[41,278,183],{"class":62},[41,280,92],{"class":62},[41,282,256],{"class":88},[41,284,183],{"class":62},[41,286,287],{"class":76},"enterprise-tier",[41,289,183],{"class":62},[41,291,292],{"class":88},"]\n",[41,294,296],{"class":43,"line":295},16,[41,297,298],{"class":62},"    }\n",[41,300,302],{"class":43,"line":301},17,[41,303,304],{"class":62},"  }\n",[41,306,308],{"class":43,"line":307},18,[41,309,154],{"class":62},[11,311,313],{"id":312},"when-youll-hear-this","When You'll Hear This",[16,315,316],{},"\"Ship it behind a feature flag — we can enable it for beta users first.\" \u002F \"Kill switch the payment feature if we see error rates spike.\"",[318,319,320],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":322},[323,324,325,326],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":312,"depth":51,"text":313},"backend","A feature flag is a toggle that lets you turn features on or off without deploying new code.","beginner","md","f",{},"\u002Fterms\u002Ff\u002Ffeature-flag",[335,336,337,338,339],"A\u002FB Testing","Canary Release","Deployment","LaunchDarkly","Rollout",{"title":5,"description":328},{"changefreq":342,"priority":343},"weekly",0.7,"terms\u002Ff\u002Ffeature-flag","8vKeHKuae5ecepCNfAF3_tBKQmnS4V3rXqJt8mKDkno",[347,351,356,359],{"title":335,"path":348,"acronym":6,"category":349,"difficulty":329,"description":350},"\u002Fterms\u002Fa\u002Fa-b-testing","testing","Showing half your users version A and half version B to see which one performs better. Blue button vs green button? Short headline vs long headline?",{"title":336,"path":352,"acronym":6,"category":353,"difficulty":354,"description":355},"\u002Fterms\u002Fc\u002Fcanary-release","cicd","intermediate","A canary release is like sending a canary into a coal mine — you deploy the new version to a tiny fraction of users first and watch closely.",{"title":337,"path":357,"acronym":6,"category":353,"difficulty":329,"description":358},"\u002Fterms\u002Fd\u002Fdeployment","A deployment is the event of pushing your code live — it's both the action and the thing you deployed.",{"title":338,"path":360,"acronym":6,"category":353,"difficulty":354,"description":361},"\u002Fterms\u002Fl\u002Flaunchdarkly","LaunchDarkly is the king of feature flags as a service. Toggle features on\u002Foff for specific users, segments, or percentages without deploying.",1776518279330]