Remove GraphQL `feature_flag` property
About
We currently have 2 methods of using feature flags in GraphQL:
We also have a related alpha
property (doc) that marks the item as @deprecated
and appends the description with a notice that it should not be used.
Problem
feature_flag
has always had a problem where when the flag is toggled on, the field is "released", even though the flag can be toggled off again.
We currently advise not to use feature_flag
when following our frontend best-practice.
It's been raised that having 2 methods of feature flagging items, plus a new related alpha
property, is confusing.
Proposal
There's an opportunity to remove feature_flag
, and consolidate these items to:
- Toggle the value/behaviour with a feature flag.
alpha
These two allow for these scenarios:
Scenario | header |
---|---|
New volatile schema item with a flag | Toggle + alpha
|
New volatile schema item with no flag | alpha |
New stable schema item with a flag | Toggle |
New stable schema item with no flag | - |
We would replace all current usage of feature_flag
with a value/behaviour toggle behind a flag + mark the field as alpha
if the flag is disabled by default.
We will need to update RuboCop::Cop::Gitlab::MarkUsedFeatureFlags
#369202 (comment 1047189351).