Using WaffleJS

Waffle supports using flags, switches, and samples in JavaScript (“WaffleJS”) either via inline script or an external script.


Unlike samples when used in Python, samples in WaffleJS are only calculated once and so are consistent.

The WaffleJS waffle object

WaffleJS exposes a global waffle object that gives access to flags, switches, and samples.


These methods can be used exactly like their Python equivalents:

  • waffle.flag_is_active(flag_name)
  • waffle.switch_is_active(switch_name)
  • waffle.sample_is_active(sample_name)


WaffleJS also directly exposes dictionaries of each type, where keys are the names and values are true or false:

  • waffle.FLAGS
  • waffle.SWITCHES
  • waffle.SAMPLES

Installing WaffleJS

As an external script

Using the wafflejs view requires adding Waffle to your URL configuration. For example, in your ROOT_URLCONF:

urlpatterns = patterns('',
    (r'^', include('waffle.urls')),

This adds a route called wafflejs, which you can use with the url template tag:

<script src="{% url 'wafflejs' %}"></script>

As an inline script

To avoid an extra request, you can also use the wafflejs template tag to include WaffleJS as an inline script:

{% load waffle_tags %}
  {% wafflejs %}