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/index
  • admin/groups/new (CE + EE shadow)
  • admin/groups/edit (CE + EE shadow)
  • admin/projects/index
  • admin/topics/index
  • admin/topics/new
  • admin/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

  1. Enable the flag in rails console:
    Feature.enable(:vue3_migrate_admin_group_project_pages)
  2. Visit any in-scope page (e.g. /admin/groups, /admin/projects, /admin/topics).
  3. Open the browser console and confirm: [gitlab] [V] Using Vue.js 3 (with @vue/compat) for <app name>
  4. Verify document.querySelectorAll('[data-gitlab-vue3-app]') returns the mounted app root.
  5. 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.

Merge request reports

Loading
Loading