As stated in {T241180} [[ https://vuejs.org/ | VueJS ]] was chosen as the main UI framework to evolve the front-end architecture of MW core. The adoption of it on MW extensions/skins is not mandatory and there isn't a clear dead line for the transitioning. Still it seems a good idea to anticipate the move. This task is open to gather the team thoughts on starting the migration to Vue.js of **some** of the Growth Extension [[ https://github.com/wikimedia/mediawiki-extensions-GrowthExperiments/tree/master/modules | front-end modules ]].
**Benefits**
- Align with MW standard
- Facilitate client code maintenance including unit tests
- Reduce code surface by adopting a component approach (theoretically we already use OOUI components but the fact the HTML constructions implies imperative code instead of declarative templates adds a lot of code duplication)
- Reduce contributors barrier
- Performance improvements in UX and DX
**Risks**
- The learning curve may have impact on the team velocity
- Changes can introduce bugs in already tested features
- We depend on the [[ https://docs.google.com/document/d/1bLlafj66X27CPKHiNt5QRcrNfARFduU7xleetUTXwTE/edit#heading=h.t2fodpjrphgy | integration of Vue.js with VE ]] for some of our components
**Sub-tasks draft (pending consensus and creation) **
# Setup (add Vue.js as a dependency in our `extension.json`, install Vue dev tools for testing, make sure linting works with the new code, etc.)
# Architecture proof of concept (decide and test what's the best way to "plug" Vue.js, create a main app or several, etc)
# Develop a full feature (ideally an easy/small one) to find out other challenges in the migration process
# Document a migration guide in the context of our extension
**Links**
- [[ https://www.mediawiki.org/wiki/Vue.js | Main MW VueJS doc page ]]
- [[ https://www.mediawiki.org/wiki/Vue.js#Extension | List of extensions already using Vue ]]
I think the most important is to come up with a team **strategy** for the migration which allows us to start using Vue.js with the least time impact on the deliver of regular growth experiments features and bug fixing. Feel free to add/remove/strike anything on this description