Introduce vue3_migrate_jobs to migrate Job views to Vue 3

What does this MR do and why?

Depends on !230873 (merged).

Introduce vue3_migrate_jobs to migrate Pipeline views to Vue 3

This change defines the vue3_migrate_jobs feature flag to allow the Job table and details views to run using Vue 3 in compatibility mode.

The behavior of the applications should be the same.

How does this work?

We use config/plugins/webpack_vue3_infection_plugin.js (for webpack) and config/helpers/vite_plugin_vue3_infection.mjs (for vite) to swap out the Vue 3 related dependencies and compatibility adapters when the ?vue3 query is added to an import.

This, in combination with a feature flag, allows us to dynamically insert a Vue 3 compat app into a page that still uses Vue 2 to enable a gradual rollout of Vue 3.

Fun fact! As feature flags are all enabled by default in rspec, the Vue 3 enabled code will be tested in our system/feature specs. This will ensure stability for features that are covered by our feature specs.

References

Screenshots or screen recordings

With vue3_migrate_jobs enabled:

Admin Jobs Jobs Job
Screenshot_2026-04-08_at_11.44.35 Screenshot_2026-04-08_at_11.44.42 Screenshot_2026-04-08_at_11.44.28

Console logging shows that Vue 3 is used to mount this endpoint:

Screenshot_2026-04-08_at_11.46.24

How to set up and validate locally

Example:

  1. In rails console enable the feature flag
    Feature.enable(:vue3_migrate_jobs)
  2. Visit the job pages, example URLs:
  3. Click things, ensure it's working correctly.

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.

Edited by Miguel Rincon

Merge request reports

Loading