uuid: - value: 22e50919-7f11-45ed-881e-31482670f416 langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:50+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: | Separating releases from deployments with feature flags created: - value: '2022-12-07T00:00:00+00:00' changed: - value: '2025-05-11T09:00:50+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2022/12/07/separating-releases-from-deployments-with-feature-flags langcode: en body: - value: |

In a typical feature release process, a feature is released when you merge the code and push it to production.

If a bug is found after the release, the code needs to be reverted (and any conflicts or issues dealt with) and deployed again.

Also, features can only be merged once they are complete, which may take hours, days or weeks, depending on the size of the feature.

These are some reasons I like to use feature flags (aka feature toggles) and separate the code deployment from releasing the feature. The code is deployed as before, but the feature isn't released, and the code isn't executed until a feature flag is enabled.

If there is a bug, the feature flag can be disabled, and the feature is turned off until a fix can be pushed - without needing another code deployment.

If my feature is incomplete, if it's feature flagged, I can commit and deploy it without users seeing it or affecting the running application, resulting in smaller and more manageable commits and deployments.

If you wanted, you could enable a feature flag for a subset or a certain subsection of your users - allowing them to test it before making it available to everyone.

Another way I use feature flags is within a multi-site Drupal application to enable a different feature set per site and allow me to keep one version of the code for all sites to keep this easy to manage and maintain.

format: full_html processed: |

In a typical feature release process, a feature is released when you merge the code and push it to production.

If a bug is found after the release, the code needs to be reverted (and any conflicts or issues dealt with) and deployed again.

Also, features can only be merged once they are complete, which may take hours, days or weeks, depending on the size of the feature.

These are some reasons I like to use feature flags (aka feature toggles) and separate the code deployment from releasing the feature. The code is deployed as before, but the feature isn't released, and the code isn't executed until a feature flag is enabled.

If there is a bug, the feature flag can be disabled, and the feature is turned off until a fix can be pushed - without needing another code deployment.

If my feature is incomplete, if it's feature flagged, I can commit and deploy it without users seeing it or affecting the running application, resulting in smaller and more manageable commits and deployments.

If you wanted, you could enable a feature flag for a subset or a certain subsection of your users - allowing them to test it before making it available to everyone.

Another way I use feature flags is within a multi-site Drupal application to enable a different feature set per site and allow me to keep one version of the code for all sites to keep this easy to manage and maintain.

summary: null field_daily_email_cta: { }