Feature Flags

Using a feature flag management platform to deliver better software, faster

Feature flags are a software development best practice of gating functionality. Functionality can be deployed “off”, then turned on via the feature flag, separate from deployment. With feature flags, you can manage the entire lifecycle of a feature.

LaunchDarkly is a continuous delivery and feature flag management platform that enables teams to launch, control, and measure their features at scale. The platform allows companies to continuously deliver and deploy software to their users in a faster, more reliable way. By wrapping your features in LaunchDarkly flags, you will have full control over who sees the feature (users or user groups). It helps companies perform gradual feature rollouts, disable buggy features without redeploying, and reduce development costs with a more streamlined development cycle.

The process of feature flagging is fairly straightforward: you wrap your features in conditionals for full control over that feature's visibility. At an enterprise scale, organizations must confront the complexities of mitigating technical debt, managing developer workflows, compliance, and controlling the lifecycle of feature flags. To meet these challenges, LaunchDarkly provides an enterprise-grade feature flag platform built specifically for development teams.

Feature flagging enhances continuous delivery and continuous integration by enabling companies to implement trunk based development (TBD) or feature flag driven development as their de facto development style. These are software release strategies that enables companies to quickly iterate code and roll out new features. Here are some of the benefits of a LaunchDarkly-powered continuous delivery system:
  • 1.
    Opt In
    Run beta programs on your live application by explicitly including the people you want to see a new feature.
  • 2.
    Kill Switch
    Quickly turn off a poorly performing feature.
  • 3.
    Early Access
    Allows users to opt-in for early access to new features.
  • 4.
    Scalable Roll Outs
    Do phased rollouts to percentages of your users to verify there are no scalability issues.
  • 5.
    Block Users
    Protect features from users by excluding them from ever seeing them – for example, excluding anyone from TechCrunch from seeing new functionality.
  • 6.
    Run A/B Tests
    Run A/B tests of features to see which features perform better.
  • 7.
    Control subscription plans by bundling feature flags into plan.
  • 8.
    Newbie vs Power User
    Show expert users and beginner users different features entirely.
  • 9.
    Maintenance Mode
    Put portions (or your entire application) into maintenance mode.
  • 10.
    Cleanly sunset old, unused features.
Feature flags (or feature toggles) are meant to complement features branching and distributed version control systems. One of the primary benefits of features flags is the ability to separate feature lifecycle management from code deployment. Using a robust / access-controlled user interface, non-technical users can observe feature performance and analytics, perform A/B testing, set and manage goals, and have full visibility into feature performance.

LaunchDarkly allows teams to develop software in a way that’s fundamentally healthier, removing friction from the Product and Engineering relationship. The results are a dramatic savings in time and focus as well as faster delivery with greater trust.

Feature flag management built for teams
How It Works Watch The Video
Feature Flag Articles
Feature Flag Driven Development
Using feature flags to power continuous delivery and test-driven development.
Feature Flag Driven Releases
Using feature flags to incorporate a release strategy into your development process.
Building vs. Buying a Feature Flagging Platform
How to use feature flag driven development effectively at your company
Enterprise Requirements for Managing Feature Flags
Harnessing LaunchDarkly to manage feature flags at scale
The 10 ways you should be using feature flags.
There are a lot of ways to use feature flags - and not all of them are obvious.
Why use feature flags?
Why should you use feature flags (also called feature toggles, flippers, switches, etc.)? Here’s what the community has to say about why they’re important.
Feature Flag SDKs and Plugins
Feature flags are a software development best practice of gating functionality.
Feature Flags without Technical Debt
Tricks and tips for using feature flags without introducing technical debt
Continuous Delivery
DevOps 2.0
Decoupling feature rollout from code deployment and the rise of user-centered deployments.
Continuous Delivery | Thoughtworks
Thoughtworks discusses the benefits of continuous integration and continuous delivery.
Continuous Delivery at Google
Brett Slatkin is the engineering lead of Google Consumer Surveys. He formerly worked on App Engine and is the co-creator of the PubSubHubbub protocol. He talks about how Google uses continuous delivery for software.
The Fast and the Furious - Continuous Delivery
Edith Harbaugh, CEO of LaunchDarkly, discusses how smaller steps mean higher velocity. Best practices in software development like agile, continuous integration, continuous delivery and canary launches are like taking smaller steps to move quicker.
Continuous Delivery by Martin Fowler
Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.
Feature Toggles by Martin Fowler
In his article, Martin Fowler discusses the pros and cons of feature toggles and how to implement them within your continuous delivery process.
The anatomy of a feature flag. Basics of how flags work.
Feature flagging is a method by which developers wrap a new feature in an if/then statement to gain more control over its release. By wrapping a feature with a flag, it’s possible to isolate its effect on the system and to turn that flag on or off independent from a deployment. This effectively separates feature rollout from code deployment. Feature flagging is a core component of continuous delivery that empowers software organizations to release quickly and reliably.
Feature Flag Statuses and Dashboard LaunchDarkly
LaunchDarkly’s feature flag platform enables teams to take full control of their feature flags and mitigate technical debt. To do this, the platform provides an intuitive user interface that aggregates all feature flags, displays rich data, and provides real-time statuses. These flag statuses allow teams to manage both short and long-term flags, and know when flags are safe to remove. LaunchDarkly shows you when the flag was added, when it was last requested, the current state of the flag, and the rollout percentage. This gives teams full visibility into their feature flag lifecycles, the ability to clean up flags that are obsolete, and know which features are rolled out.
Feature Flagging Access Controls & Audit Log LaunchDarkly
Foundational to effective feature flag management is the ability to track changes and control access to feature flags. LaunchDarkly provides an audit log that contains a record of all changes made to each feature flag, including who made those changes and when. The audit log is also critical for organizations that have compliance obligations, giving managers full visibility into the who, what, and when of feature flag changes. LaunchDarkly’s fine-grained access controls allow teams to manage permissions for everything in the system, from feature flags to A/B testing. Managers can assign one or multiple custom roles to each team member using a policy system modeled after AWS.
Feature Flag Development Environments Local QA Staging and Production
LaunchDarkly allows teams to create custom development environments for local, staging, QA, and production (with no limit on the number of environments). This enables developers to manage features across multiple testing environments and manage developer access to those environments.
Feature Branching & Flags
The Product Manager’s Guide to Feature Flags
How product managers can harness feature flags to improve their product's efficacy and facilitate user feedback.
Secret to Google's Engineering Culture
See how Google implements continuous delivery by harnessing the principles of TBD and feature flag driven development.
Facebook's Hacker Engineer Culture
See how Facebook implements trunk based and feature flag driven development.
Feature Branching by Katherine Bailey
In this article, Katherine Bailey discusses the merits of feature branching and its associated benefits. "At the heart of this branching strategy is the idea that your feature branches are completely unadulterated by anything else happening in the repo - their history should be a series of commits, each one of which is related solely to the feature itself (i.e. no back merges).
Trunk Based Development
What is Trunk Based Development?
Paul Hammant discusses Trunk Based Development (TBD) and provides a comprehensive overview of its pros and cons: "TBD is where all developers (for a particular deployable unit) commit to one shared branch under source-control. That branch is going to be colloquially known as trunk, perhaps even named “trunk”. Devs may, on their own dev workstations, do some multi-branch development (say with Git), but when they are “done” with a change or a bug fix, it should go back to the shared trunk. It is not “done” if it is not there – watch for that little lie of omission."
Trunk Based Development for Organizations By Always Agile Consulting
In this article, you will learn about the benefits of TBD for both developers and product management. "Trunk Based Development is a version control strategy in which developers commit their changes to the shared trunk of a source code repository with minimal branching. Trunk Based Development became well known in the mid 2000s as Continuous Integration became a mainstream development practice, and today it is equally applicable to centralised Version Control Systems (VCS) and Distributed Version Control Systems (DVCS)."

Use feature flags to quickly deliver software, control your rollouts, and mitigate risk.
How It Works

LaunchDarkly Feature Flags Overview
When a user loads a page, your application will use that user’s attributes to determine what features to show. For example, if I am a BETA user and I log in to myexamplesite.com, I will see the brand new BETA feature. However, all non-BETA users will just see the old feature. The reason I see the BETA feature is that my user is grouped as BETA.
How LaunchDarkly's Integratable SDKs Work
This diagram shows how LaunchDarkly's SDKs integrate into your application. Our software introduces near zero-latency into your development cycle via our streaming architecture. You simply use our dashboard to take full control of your features.
Feature Flagging Platform Spped and Reliability
This diagram illustrates how LaunchDarkly's streaming model works. In order to support billions of events per day, LD uses a streaming architecture to serve feature flags without making remote requests. Requesting a feature flag simply reads the latest flag rules from memory, and evaluates those rules against the current user object. With streaming, flag requests take between 10 and 100 microseconds. With layers of CDN redundancy, feature flags will always be served.
Feature Flag Driven Development for releasing and iterating features quickly
Feature flags/toggles/controls harness the power of test-driven development (TDD). This is the process of releasing and iterating features quickly, testing those features, and making improvements. Think of it as Lean UX methodology. You release light features to receive market feedback. You iterate on that feedback, make improvements, and redeploy.
Incremental & Percentage Rollouts Using Feature Flags
A feature flag rollout is the practice of gradually releasing a feature to a percentage of your users. Let's look at an example. You are a developer launching a new feature that will require you to process hundreds of additional requests per second. A few hundred more? That's no problem - you've built the infrastructure to scale and handle that load. But, what if all your users fall in love with the new feature? Bombarding you with thousands of requests. How do you manage this? Imagine that you were able to roll out your feature live to 10% of your users and then 20%... 30%.... Each step becomes a testing benchmark where you assess performance feedback and can scale accordingly. More importantly, you mitigate unanticipated performance degradation and meet the consumer expectation of seamless application performance.
Open Source Feature Toggles
Ruby Feature Toggle Library
Feature is a battle-tested feature toggle library for ruby. The feature toggle functionality has to be configured by feature repositories. A feature repository simply provides lists of active features (symbols!). Unknown features are assumed inactive.
Feature Toggles for .NET
Simple, reliable feature toggles in .NET
Feature Toggles
FeatureSwitcher is little library for feature switches/toggles.
Handy tool to deal with feature toggles.
Features helps you to determine whether or not a feature should be made available to one or more users. You can choose one of the following ways: Enable a feature only for a specific set of users; Enable or disabled for a percentage of users; Disable a feature.
Feature Toggle Libraries
Feature toggles with docker
This repo contains the unleash-server, which contains the admin UI and a place to ask for the status of features. In order to make use of unleash you will also need a client implementation.
Hobknob Feature Toggles
Hobknob is a feature toggle front-end built on top of etcd. It allows users to create and modify feature toggles, which can then be accesesed in your applications.
Feature Toggles for JavaScript
A painless feature toggle system in JavaScript. Decouple development and deployment.
Zumba Swivel Feature Toggles
Strategy driven, segmented feature toggles.

Learn more about how LaunchDarkly's feature flags work
How It Works