By Hassan Ali, Chief Technical Officer, Ecommerce
Feature flags are a software development technique that allows teams to enable or disable certain features in an application or service without changing the code.
At Unstoppable Domains, we’ve used an in-house feature flag solution for a number of years. As it got the job done, we started running into some limitations and issues that forced us to consider other options. After some research and testing, we decided to migrate to Launch Darkly, a popular feature highlighting service.
In this post, we discuss why we made the switch and how we benefited from using Launch Darkly.
Our internal solution for managing feature flags was very simple: a database table with two main columns, flag_name And is enabled. This was easy to use, but also limited functionality.
To enable non-developers to toggle feature flags, we’ve added a user interface to our admin panel. While the UI worked well, it became challenging to navigate as the list of feature flags grew. Documenting and managing the extensive list of feature flags was an increasing task. Not all flags were documented and we got several flags with similar names. At some point a bug was introduced in our UI that enabled all flags, which was really scary! Fortunately, our team made a mistake and reversed.
In addition, we started to receive more traffic on our site and our feature flag table was requested too often. As a result, the database became a bottleneck and we started seeing high latency on the backend. Users were sometimes unable to perform basic actions on the website, such as searching for domains or logging in. To solve this problem, we invested resources in caching feature flags, removing the bottleneck.
All things considered, what started as a simple solution for managing our in-house feature flag system eventually increased our internal maintenance workload and led us to look for other options.
Initially, our team looked at building a more robust internal solution, adding a feature flag that could be enabled on a per-domain basis. For example, we may enable new features for our development teams and whales to test and give us feedback before opening it more widely. However, the technical cost of building a robust feature flag management platform was higher than for an out-of-the-box solution.
After some research and testing, we decided to migrate to Launch Darkly, a leading feature management platform that is much more reliable than our previous implementation. The transition was smooth – we migrated a set of feature flags each week and completed the full 50 flag transition within a quarter.
Code for LaunchDarkly:
The adoption of Launch Darkly has brought several benefits to our team, improving our development process and productivity.
The flexibility of the platform allows us to enable flags per user, per wallet or per domain, providing granular control over feature implementation. Adding a new flag only takes a few seconds, greatly improving development speed compared to our previous in-house solution.
Launch Darkly’s built-in analytics provides insight into feature flag usage, helps maintain a clean codebase and reduce technical debt. The percentage rollout feature enables controlled testing, minimizing risk and ensuring a seamless user experience.
We’ve used Launch Darkly flags for several recent features, including the UD.me token gallery, AI avatars (where we were able to provide early access to community members), sponsored badges, and our email messaging service.
Overall, we are very happy with our decision to migrate to Launch Darkly for feature highlighting. The robust capabilities, improved reliability and visibility features have all made our development process smoother and more efficient.