Enable Vue 3 rollout for the custom emoji page

What does this MR do and why?

Opts the group custom emoji entrypoint into the Vue 3 migration mechanism behind vue3_migrate_custom_emoji, following the vue3_migration.yml flow in the frontend guide.

The entrypoint schedules initCustomEmojis and nothing else, so Option 1 applies cleanly and the flag does not reach any other team's app.

References

Closes #611454

Parent epic: gitlab-org#23167 Pattern followed: !247789 (merged) Docs: https://docs.gitlab.com/development/fe_guide/vue3_migration/

Differences

Before: the entrypoint had no vue3_migration.yml, so it built only a Vue 2 chunk and Rails served it as Vue 2.

After: it declares status: rollout with vue3_migrate_custom_emoji. The bundler emits a ?vue3 sibling, and Rails serves the Vue 3 bundle when the flag is enabled for the current user. With the flag off, nothing changes.

How to set up and validate locally

  1. Confirm the entry is picked up and valid:

node -e "const {rolloutEntries,loadVue3Migrations}=require('./config/vue3migration/migration');
console.log(JSON.stringify(rolloutEntries(loadVue3Migrations()),null,2))" | grep -A2 custom_emoji

pages.groups.custom_emoji appears with feature_flag: vue3_migrate_custom_emoji. The loader validates every file in the tree against config/vue3migration/migration_schema.js, so this also proves nothing else broke.

  1. yarn jest spec/frontend/config/vue3migration/ — 17 tests, 2 suites.
  2. In GDK, gdk restart vite, enable the flag, open Group, Settings, Custom emoji. Expect [gitlab] [V] Using Vue.js 3 (with @vue/compat) for ... and a match from document.querySelectorAll('[data-gitlab-vue3-app]'). Then add and delete a custom emoji.

What I verified and what I did not

Steps 1 and 2 I ran. Step 3 I could not: I have no GDK environment, so the page has not been loaded under Vue 3 and the workflows have not been smoke tested. The change is one metadata file and a flag definition, with no runtime code, and the flag defaults to off. Flagging it rather than ticking the box.

introduced_by_url is intentionally blank so the config_files Danger rule can suggest this MR's own URL.

MR acceptance checklist

  • vue3_migration.yml added for the entrypoint, with status: rollout and a feature flag
  • Feature flag file created
  • File validated through the project's own loader and schema
  • Page verified running under Vue 3 locally — not done, no GDK, see above
  • Key workflows smoke tested — not done, no GDK, see above
  • Conforms to the code review guidelines

Merge request reports

Loading
Loading