So your team’s been using LaunchDarkly and has embraced flagging as a best practice for shipping software. It’s game day, and you feel confident because you’ve tested the new feature behind a flag in Production and fixed all the bugs. Your team is cheering for you to toggle the flag and release the feature to all your customers. You’re about to click ‘Save Changes’, and…wait, what’s that? You hesitate. Just for a second, but you glance back to double and triple check your changes.
You’re not alone. As a daily user of LaunchDarkly, I often catch myself doing this exact thing. After all, it’s only natural to want to really confirm any changes you’re about to make to your application in Production, which will impact all your users in real-time.
When we asked some of our long-time users about this, we realized that there was always an informal review process that was involved. This would range from the entire team hopping on a call and drafting the changes together, to taking a screenshot of the changes and messaging them to the rest of the team to solicit feedback. This works fine for a small team of developers, but when you consider multiple teams collaborating across different codebases to manage a single application, it gets hard. This gets even more complex when we consider the different compliance practices that teams follow and their frameworks for approving and making changes.
To help with this, we’ve launched Flag Approvals – which allow users to request a review from their teammates for a set of proposed flag changes from within LaunchDarkly. Through a simple process for requesting approval, you can loop in the right people to provide input into your proposed flag changes before they get applied.
Better Change Management with Flag Approvals
These review-style flag approvals mimic common code-review workflows, such as PR reviews in GitHub, which developers are already familiar with. By seamlessly integrating into existing workflows to update a flag’s targeting, approvals provide a fast, convenient way for more members of your team to contribute to changes to your feature flags, and for you to gain confidence in the changes you’re about to make.
Benefits of using Flag Approvals
- Collaborate on updating flags with other members of your team
- Encourage members of your team to confidently adopt feature flags without worrying about accidental updates
- Review a list of all proposed changes before they get merged to Production
Getting started is simple – Any user that has permissions to edit a flag, can do so and ‘Request approval’ to create an approval request. They can verify their change list, add a brief description for their request, and select 1 or more reviewers to review their changes. The selected reviewers will be notified via email that their review has been requested for a flag change. The approval request can either be from the email or from the ‘Pending Changes’ for a flag.
The reviewers can choose to comment and request more information or can approve or decline the proposed changes with an optional comment. The requester can also comment on their approval request, but cannot approve or decline it, by default. Once the changes are approved, either the requester or the reviewer can choose to ‘Apply Changes’ which will update the flag and close this request. The separation of ‘Approve’ and ‘Apply’ was key to some of our customers, who would like to get their changes reviewed, but ultimately have control over when they get merged into Production.
Users can also customize their approval settings and configure various aspects of how Flag Approvals work in LaunchDarkly. This can be done for each environment, which allows you to have granular control over how approvals work in different environments.
It’s also worth noting that when a user requests approval to update a flag in LaunchDarkly, it doesn’t “lock down” the flag or prevent users from requesting approval for other changes to the same flag. We see this as being critical for continuous delivery and teams that ship software in an iterative cadence to their customers. This was made possible by using Semantic Patch – which captures the actual intent of the flag update, rather than being specifically tied to a diff of the current flag state. Therefore, a pending approval request can be approved and applied as an independent change to the flag’s targeting.
We’re excited to have launched this initial milestone, and continue investing in several areas of advanced functionality to realize our full vision of ‘Approval Workflows’:
- Requiring Approvals for all flag changes in an environment. This will allow Enterprise customers to enforce that all flag changes in critical environments require approval. This is a helpful way to ensure compliance and that any changes in Production (or Staging) are reviewed by a second pair of eyes before they get applied.
- Approval Requests for Scheduling flag changes. This combines two very powerful feature workflow capabilities — requesting approvals for scheduling a set of flag changes. This will ensure that you can continue automating flag rollouts in environments where approvals are required.
- ServiceNow Approval Workflows. This will allow Enterprise organizations that leverage ServiceNow for centralized change management to integrate with LaunchDarkly and continue using it as the approval system for all flag change requests. This allows LaunchDarkly to fit into your teams’ existing tools and processes while improving feature management practices.
In addition to the above, we’re working on several enhancements to the Approval Settings and Notifications, to provide more customization, while allowing teams to leverage good feature management.
We’re excited to see how Flag Approvals in LaunchDarkly help teams streamline collaboration and rest easy knowing that their flag updates won’t take down Production. To try this out, the next time you’re updating a flag in LaunchDarkly, select ‘Request Approval’ instead of saving your changes immediately. You can also read the documentation to learn more, or contact us at firstname.lastname@example.org with questions.