Create your free Rollouts account

Free, no credit card needed.

Ship faster with less risk

Free feature flags for developers
  • Unlimited seats and feature flags
  • Remotely enable and disable features without deploys
  • Run betas or provision features to specific audiences

Works in the languages you do with zero-latency SDKs


Python Feature Flags JavaScript Feature Flags Node Feature Flags Ruby Feature Flags Java Feature Flags C# Feature Flags PHP Feature Flags React Feature Flags iOS Feature Flags and Swift Feature Flags Android Feature Flags

Try out the Optimizely Rollouts demo

Reduce risk and recover faster from failure

Say goodbye to messy rollbacks and hotfixes. Instead, use feature flags to roll out to a small percentage of users to reduce risk and fail safer. If you detect errors, performance spikes, or user backlash, just roll back - all without redeploying code. Rollouts make your release process more resilient.

Better continuous delivery with Rollouts

Stop dealing with painful merge conflicts. Move away from long-lived feature branches and start adopting feature flags for greater development velocity, safer code deployments, and increased developer productivity.

Fast decision engine

Roll out features in performance-critical codepaths. Our SDKs bucket users in memory so rollouts have no impact on latency.

Open platform

Open-source SDKs with pluggable components give you control over network activity.

Read the Docs

Get integrated with quickstarts for every language.

                      
              import optimizely
              optimizely_client = optimizely.Optimizely(datafile)
              
              

# Evaluate a feature flag

enabled = optimizely_client.is_feature_enabled('my_feature', 'user_123') if enabled:

# Show your feature

else:

# Hide your feature

                      
              import com.optimizely.ab.Optimizely;
              
              Optimizely optimizely = Optimizely.builder(datafile).build();
              
              

// Evaluate a feature flag

Boolean enabled = optimizely.isFeatureEnabled("my_feature", "user_123"); if (enabled) {

// Show your feature

} else {

// Hide your feature

}
                      
              import "optimizely"
              
              optimizely_client = Optimizely::Project.new(datafile)
              
              

# Evaluate a feature flag

enabled = optimizely_client.is_feature_enabled('my_feature', 'user_123') if enabled

# Show your feature

else

# Hide your feature

end
                      
              const optimizely = require('@optimizely/optimizely-sdk');
              
              const optimizelyClient = optimizely.createInstance({ datafile: datafile });
              
              

// Evaluate a feature flag

const enabled = optimizelyClient.isFeatureEnabled('my_feature', 'user_123'); if (enabled) {

// Show your feature

} else {

// Hide your feature

}
                      
              use Optimizely\Optimizely;
              
              

// Initialize an Optimizely client

$optimizelyClient = new Optimizely($datafile);

// Evaluate a feature flag

$enabled = $optimizelyClient->isFeatureEnabled('my_feature', 'user_123'); if (enabled) {

// Show your feature

} else {

// Hide your feature

}
                      
              using OptimizelySDK;
              
              

// Initialize an Optimizely client

Optimizely OptimizelyClient = new Optimizely(datafile);

// Evaluate a feature flag

bool enabled = OptimizelyClient.IsFeatureEnabled("my_feature", "user_123"); if (enabled) {

// Show your feature

} else {

// Hide your feature

}
                      
              import optimizelySDK from '@optimizely/optimizely-sdk';
              
              

// Initialize an Optimizely client

const optimizelyClientInstance = optimizelySDK.createInstance({ datafile: datafile });

// Evaluate a feature flag

const enabled = optimizelyClientInstance.isFeatureEnabled('my_feature', 'user_123'); if (enabled) {

// Show your feature

} else {

// Hide your feature

}
                      
              // In AppDelegate.m
              #import 
              
              

// Initialize an Optimizely manager

OPTLYManager *optlyManager = [[OPTLYManager alloc] initWithBuilder:[OPTLYManagerBuilder builderWithBlock:^(OPTLYManagerBuilder * _Nullable builder) { builder.sdkKey = @''; }]];

// Initialize an Optimizely client

[optlyManager initializeWithCallback:^(NSError * _Nullable error, OPTLYClient * _Nullable client) {

// Evaluate a feature flag

bool enabled = [client isFeatureEnabled:@"new_feature" userId:@"user123" attributes: nil]; if (enabled) {

// Show your feature

} else {

// Hide your feature

} }];
                      
              import Optimizely
              
              

// Initialize an Optimizely client

optimizely = OptimizelyClient(sdkKey: @'') try optimizely!.start(datafile: datafile)

// Evaluate a feature flag

let enabled = try optimizely.isFeatureEnabled(featureKey: "my_feature_key", userId: "user_123") if enabled {

// Show your feature

} else {

// Hide your feature

}
                        
              import com.optimizely.ab.Optimizely;
              
              Optimizely optimizely = Optimizely.builder(datafile).build();
              
              

// Evaluate a feature flag

Boolean enabled = optimizely.isFeatureEnabled("my_feature", "user_123"); if (enabled) {

// Show your feature

} else {

// Hide your feature

}