Remove homepage_merge_requests_widget feature flag
What does this MR do and why?
Removes the homepage_merge_requests_widget feature flag and the code it gated, now that the flag is enabled for 100% of GitLab.com. The merge requests widget on the personal homepage becomes unconditional.
- Cleanup issue: #631637 (closed)
- Feature issue: #627724 (closed)
- Rollout issue: #631474 (closed)
Per the feature flag removal guidance, all references and the YAML definition are removed in a single merge request. The multi-milestone expand-and-contract pattern does not apply here: the flag gated only frontend rendering, not a data write, a cache key or a state transition.
Who is affected
- GitLab.com: no visible change. The flag is already enabled for everyone, so the page renders exactly as it does today.
- GitLab Self-Managed and Dedicated: the flag was disabled by default, so this merge request is what releases the feature there. The merge requests widget appears on the personal homepage, and the four count cards are removed.
What was removed
- Feature flag
- The YAML definition.
- The
push_frontend_feature_flagcalls inapp/controllers/root_controller.rbandapp/controllers/dashboard_controller.rb.
- The four count cards
- The four
<user-items-count-widget>usages inhomepage_app.vue, along with all their supporting props, computed properties, click handlers and error state. - The
user_items_count_widget.vuecomponent and its spec. - The two GraphQL query files
merge_requests_widget_metadata.query.graphqlandwork_items_widget_metadata.query.graphql, and their spec mocks. - The four dashboard path keys in
app/controllers/concerns/homepage_data.rband the matching props inindex.js. - The duplicated
createUserCountsManagerandfetchUserCountscalls. The super sidebar's ownuser_counts.vuealready makes them on every signed-in page.
- The four
- Also now unused
- The
duoCodeReviewBotUsernameprovide, inject and controller key, which existed only to supply a variable to one of the deleted queries. - The concern's private
duo_code_review_bot_usernamemethod, which duplicated the one inMergeRequestsHelperthat the concern already includes. - The redundant
Gitlab::Utils::StrongMemoizeinclude, which the concern was also getting through that helper. - The three tracking constants
TRACKING_LABEL_MERGE_REQUESTS,TRACKING_LABEL_WORK_ITEMSandTRACKING_PROPERTY_AUTHORED_BY_YOU.
- The
The diff is roughly 21 insertions against 1183 deletions across 17 files. locale/gitlab.pot was regenerated.
Not included: the page layout is unchanged. With the card row gone, the left column now begins at the pick-up, to-do and activity widgets. Whether the grid itself should change is a design question against the Figma reflow frames, and is deliberately left out of this merge request.
Screenshots or screen recordings
Screenshots of the changes can be found in the implementation MRs (while the feature flag was OFF):
- "Assigned to you" tab only: !256604 (merged)
- Whole widget: !256605 (merged)
- Behind the flag, hide count cards and only show the new widget: !258432 (merged)
Then the feature flag has been fully enabled in production: #631474 (comment 3937465367)
Currently on master:
| current master: flag OFF | current master: flag ON |
|---|---|
![]() |
![]() |
How to set up and validate locally
- Check out this branch and visit
/as a signed-in user. - Confirm the four count cards ("Merge requests / Waiting for your review", "Merge requests / Assigned to you", "Work items / Assigned to you", "Work items / Authored by you") are gone, and that the merge requests widget renders.
- Repeat on
/dashboard/homeand confirm the same result. - In the browser network tab, confirm no request is made for the
mergeRequestsWidgetMetadataorworkItemsWidgetMetadataqueries. - Run the frontend specs:
yarn jest spec/frontend/homepage - Run the backend specs:
bundle exec rspec spec/requests/dashboard/homepage_spec.rb spec/controllers/concerns/homepage_data_spec.rb spec/views/root/_index.html.haml_spec.rb
On this branch the results were 336 frontend tests passing and 37 RSpec examples passing.

