Vue 3 migration: admin group, project, and topic page entrypoints
What does this MR do and why?
Gate the admin group, project, and topic page entrypoints behind the
vue3_migrate_admin_group_project_pages beta feature flag, enabling
a controlled rollout of Vue 3 (@vue/compat) for these pages.
Pages in scope (paths relative to app/assets/javascripts/pages/):
admin/groups/indexadmin/groups/new(CE + EE shadow)admin/groups/edit(CE + EE shadow)admin/projects/indexadmin/topics/indexadmin/topics/newadmin/topics/edit
Each directory receives a vue3_migration.yml with status: rollout and
feature_flag: vue3_migrate_admin_group_project_pages. EE-shadowed pages
carry a matching file so the CE/EE pair stays in sync.
Dependency-tree audit (2–3 levels deep) found no Vue 3 blockers: no raw
new Vue() sites outside initVueApp, no Vue.observable, no old
slot=/slot-scope syntax, no <template functional>, no prop defaults
using this, and no Vue filters. The codemod confirms "No residual sites".
References
Screenshots or screen recordings
No UI changes — this only adds rollout infrastructure.
| Before | After |
|---|---|
| N/A | N/A |
How to set up and validate locally
- Enable the flag in rails console:
Feature.enable(:vue3_migrate_admin_group_project_pages) - Visit any in-scope page (e.g.
/admin/groups,/admin/projects,/admin/topics). - Open the browser console and confirm:
[gitlab] [V] Using Vue.js 3 (with @vue/compat) for <app name> - Verify
document.querySelectorAll('[data-gitlab-vue3-app]')returns the mounted app root. - Disable the flag and confirm the page still works under Vue 2.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.