Skip to main content

An example of feature flagging

I've written a number of emails about feature flags, or feature toggles, and am a strong advocate of using them whilst developing new features.

I've used them a couple of times recently on my website so I wanted to share them as examples.

Experimenting with presentation layouts

Firstly, I wanted to experiment with a different layout for my presentation pages.

They currently have a list of events, embedded slides and a video recording when there is one.

Each event linked to its website, where applicable, and the slides and video were from one of the most recent versions of the presentation.

I wanted to change this so each event would have links to its own slides, example code or demo.

I didn't want to change this yet for all presentations, only my Sculpin talk as it's the most recent and, if I like it, later apply it to the others.

My website is built with Sculpin, so adding a feature flag was as simple as adding new: true to the YAML front matter at the top of the file for that presentation.

This is available as page.new in the layout file and I can use this to load different markup.

Rewriting my CSS

Secondly, I've been wanting to re-style my website with Tailwind CSS 4 and refactor some of the templating.

As this is a change I wanted to be site-wide, I added new_css: true to my sculpin_site.yml file.

This time, I was able to use site.new_css to toggle the loaded stylesheet and using Sculpin's environment files - e.g. sculpin_site_dev.yml and sculpin_site_prod.yml - I can be explicit about which stylesheets are used locally and for my live website.

Summary

Feature flags are a great approach to splitting up large changes into manageable, deployable pieces, and they don't need to be complicated.

Essentially, they are a simple boolean value that you can use to execute different code based on whether it's false or true.

About me

Picture of Oliver

I'm a certified Drupal Triple Expert and former Drupal Association staff member with 18 years of experience, a Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.