Data Products (Optimize): Migrate feature set to Vue 3
## Why now
Vue 2 has been end-of-life since **December 31, 2023**, over 2.5 years without security patches. For our FedRAMP customers, running an unsupported framework is an active compliance risk that grows every month.
Beyond security:
- Our AI coding tools produce better suggestions against Vue 3 code.
- Key libraries we need are Vue 3 only.
- Candidates consistently ask about our frontend stack during interviews.
## What it brings for engineers
- **Better AI-assisted development.** Vue 3 is the default in all current documentation, tutorials, and community examples. AI coding tools (Duo and others) are trained predominantly on Vue 3 patterns, meaning suggestions for our Vue 2 codebase are frequently inaccurate or require manual correction. Migrating directly improves the quality of AI-generated code you work with every day.
- **Modern libraries.** Vue 3 unlocks libraries that teams have been asking for, like `vue-flow` for workflow visualization, along with actively maintained versions of the tools we already depend on.
- **Better TypeScript support.** Vue 3 was built with TypeScript from the ground up. Types are accurate and inference works properly. Moving to Vue 3 can open doors for TS in our codebase.
## What we need from the team this milestone (DONE)
Add the flag-gated Vue 3 rollout switch for your pages. New tooling makes this straightforward:
1. Add one feature flag per feature (`vue3_migrate_<feature>`, type `beta`, disabled by default).
1. Add a `vue3_migration.yml` per page entrypoint.
1. Smoke test your key workflows with the flag enabled.
Full Vue 3 compliance (fixing compatibility issues, migrating unit tests) is **not required this milestone**. Open follow-up issues for anything that smoke testing surfaces.
Each issue below contains a detailed implementation plan with the exact entrypoints, flag name, and smoke test checklist for that feature.
Migration steps: [Vue 3 migration guide, Option 1 (recommended)](https://docs.gitlab.com/development/fe_guide/vue3_migration/#option-1-recommended-migrate-your-page-entrypoint-using-a-feature-flag-and-vue3_migrationyml)
Example migration MR: [gitlab-org/gitlab!247789](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/247789)
Please assign your migration MRs to `@Miguel R`, `@Illya Klymov` or `@ntepluhina` for review. If you run into issues or have questions, please reach out in `#vue3_migration`.
## Features to audit and migrate
- [x] [Value Stream Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607821)
- [x] [Contribution Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607822)
- [x] [Contributor Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607823)
- [x] [DevOps Adoption](https://gitlab.com/gitlab-org/gitlab/-/issues/607824)
- [x] [Insights](https://gitlab.com/gitlab-org/gitlab/-/issues/607825)
- [x] [Issue Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607826)
- [x] [Productivity Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607827)
- [x] [Repository Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/607830)
- [x] [Usage Trends](https://gitlab.com/gitlab-org/gitlab/-/issues/607831)
- [x] [Dashboard framework](https://gitlab.com/gitlab-org/gitlab/-/issues/607832)
- [x] [Project Code Review Analytics](https://gitlab.com/gitlab-org/gitlab/-/work_items/614007)
- [x] [Group CI CD Analytics](https://gitlab.com/gitlab-org/gitlab/-/issues/614009)
## Follow up: feature deprecations
Migrations like this are cheaper the fewer standalone features we own. Moving MR Analytics, DORA and VSD into the dashboarding framework has already reduced the technical debt we have to carry when framework-wide changes such as this one come up.
We need to discuss our deprecation strategy with Product, so that more of the features above can move into the dashboarding framework and reduce tech debt for future migrations.
Requirement for deprecating a feature: the matched functionality must exist in the dashboarding framework, so any deprecated dashboard can be rebuilt through configuration instead of a standalone feature.
epic