Never give a second thought to coordinating deployments that involve feature releases. With feature flags, the development team can deploy whenever the code is finished, and the product/marketing team can enable and announce new features to whoever they want, whenever they want.
Since feature flags aren't just on for everybody or off for everybody, you decide which launch strategy works best for the new features or functionality and your customers. You can manage the state of a flag from Flipper UI, Flipper Cloud, or using Ruby and the API.
Enable for individual actors
With Flipper, you can enable features in any environment for any user. Let internal team members review new functionality in production before enabling it for customers. Or let key customers get early access to new features. Or enable a feature for a single user to help troubleshoot an issue.
With feature flags, releasing new stuff is no longer an all-or-nothing proposition—it's more scalpel than sledgehammer.
Flipper.enable_actor :new_design, current_user
Flipper.enabled?(:new_design, current_user) # => true
Enable for specific groups of actors
If you're comfortable expanding access to new functionality even further, you can set up a group for early access for those customers that always help troubleshoot and provide detailed feedback. Or you can create a dedicated group to let customers opt-in to new stuff early and on their timeline.
Flipper.enable_group :new_design, :paying_customers
Flipper.enabled?(:new_design, paying_customer) # => true
Enable for a percentage of actors
Ready to let more customers in but not quite ready for the full wave of performance implications or customer support questions? Enable the new feature for a percentage of users to get a feel for how it's going to go, and expand the percentage as your confidence increases.
Flipper.enable_percentage_of_actors(:new_design, 25)
# Returns true or false consistently for the
# same enabled percentage and actor
Flipper.enabled?(:new_design, user)
Enable for a percentage of time
Swapping out caching strategies or background job infrastructure? Split the percentage of traffic sent to the old and new systems to ensure the new system is ready to go before you flip the switch for everybody. And since you can gradually increase the percentage of traffic, it's no longer a cross-your-fingers-all-or-nothing proposition.
Flipper.enable_percentage_of_time(:new_design, 25)
# Returns true for ~25% of the enabled? calls
# regardless of the actor provided.
Flipper.enabled?(:new_design)
Flipper.enabled?(:new_design, user)