What is it about?

Togglz is an implementation of the Feature Toggles pattern for Java. Feature Toggles are a very common agile development practices in the context of continuous deployment and delivery. The basic idea is to associate a toggle with each new feature you are working on. This allows you to enable or disable these features at application runtime, even for individual users.

Want to learn more? Have a look at an usage example or check the quickstart guide.


Togglz 2.3.0.RC1 released
I'm very proud to announce the release of Togglz 2.3.0.RC1. This release includes many cool new features like the Spring Boot Starter and the Hazelcast integration. We decided to release RC1 first to give people the chance to test the new modules and to provide feedback. Have a look at the what's new page for a summary of all changes and the updating notes for important changes since 2.2.0.Final. Enjoy!
Togglz 2.2.0.Final released
I'm very proud to announce the release of Togglz 2.2.0.Final. This release includes many exciting new features like the new Archaius and Cassandra modules. Have a look at the what's new page for a summary of all changes. If you are upgrading from 2.1.0.Final, have a look at the updating notes, especially if you are using the Spring integration module. Enjoy!
Togglz 2.1.0.Final released

We are happy to announce the release of Togglz 2.1.0.Final. This new version ships with various improvements and new features. Special thanks to Fábio Franco Uechi for his help on the AppEngine and Guice modules. Have a look at the what's new for details!

Togglz 2.0.1.Final released

We are happy to announce the release of Togglz 2.0.1.Final. This version fixes various bugs in Togglz 2.0.0.Final which have been reported by the community. Have a look at the what's new for details.

Togglz 2.0.0.Final released

I'm very happy to announce the release of Togglz 2.0.0.Final. This new version is the result of many months of hard work. Many core concepts of Togglz have been revised to provide much more flexibility.

The most noteworthy change in Togglz 2.0.0.Final is the new extendible feature activation mechanism that allows to implement custom strategies for activating features. Beside that there are many other updates. You can learn more about them on the what's new page.

If you are updating from Togglz 1.1.x, you should have a look at the updating notes. You can get the new version from the download page. Feel free to post on the forums if you have any problems with updating.

Togglz 2.0.0.Beta1 and 1.1.1.Final released
We are very proud to announce two Togglz releases today. Togglz 1.1.1.Final is a bugfix release of the 1.1.x branch. If you are currently using Togglz 1.1.0.Final, you should update to this version soon, because it fixes some concurrency issues in the state repositories.
At the same time we have released Togglz 2.0.0.Beta1, which is the latest version of the new 2.x branch. So if you want to have a look at the latest and greatest version of Togglz, you should give it a try. Please have a look at the what's new section to learn about the major changes and the things to take care of before doing the update.

Why should you choose Togglz?

Because Togglz...

  • allows you to declare your features using a regular Java enum type.
  • is configured in a type-safe way by implementing a single interface.
  • provides integration with popular frameworks like CDI, Spring, JSF, etc.
  • supports different backends for storing toggle states (JDBC database, Java property files, etc)
  • can be integrated with your user identity management which allows to enable features only for specific users.
  • integrates with common security frameworks like JAAS, Spring Security, Seam Security and Apache Shiro.
  • supports complex application packaging scenarios like EARs, skinny WARs, etc.
  • ships with an embedded web-based admin console to manage feature states.


Features are declared using a regular Java enum type:

public enum MyFeatures implements Feature {

    @Label("First Feature")

    @Label("Second Feature")

    public boolean isActive() {
        return FeatureContext.getFeatureManager().isActive(this);


Checking whether a specific feature is enabled for the current user is very simple. Just call the isActive() method on the feature.

public void someBusinessMethod() {

  if( MyFeatures.FEATURE_ONE.isActive() ) {
    // do new exciting stuff here



You can find more details in the quickstart guide.