There are a lot of ways to manage feature flags in products, but at Basedash, one of the easiest ways to manage them is to, well, just use Basedash.
Here's how we set that up:
We have a table in our database called FeatureFlag which lists all the current features that are actively in development. Usually it's just a list of 3 or 4, since these don't stay as feature flags for very long.
To add them to a user, we then have a separate database table called UserFeatureFlag. This one allows us to associate users with the feature we're testing.
Usually, those users are our own product team. We assign ourselves to feature flags for QA, feedback, and to generate some more ideas before it hits prod.
We also add external users that we think might benefit from the feature, or who have opted into being beta testers.
Here's what that table looks like:
And finally, here's the whole flow for adding a user to a feature flag:
I just go to the table, create a new record, choose which feature flag I want to enable, and then select the correct user (in this case myself). Couldn't be easier!
Using product feature flags like this has had a huge impact on how we roll out new features. We've used it to catch performance issues, UI bugs, app crashes, and just get a better feel for how things will work before customers see them. We also ask users if they want to opt-in or not, and if they run into issues, can easily remove them from the beta without affecting their workflow. We try to keep out releases as small as possible, so most every feature we're making is released as a feature flag first.
For now, the workflow is pretty basic. We don't have a great need for complex feature testing, staged roll-outs, in-product A/B testing, but as Basedash (the company) grows and our needs change, Basedash (the product) will stay up-to-date. It removes the need for a separate tool to manage feature flags and helps us build a better product.
Get to know what Basedash can do and how it changes traditional internal tools.
See a full app that connects to a Postgres database and external API made from scratch.