Part of the desktop improvements project involves implementing a search type-ahead widget using Vue.
v2.6 is the current & stable version of Vue at the time of this writing. It’s built using **ES5** and it technically supports **Internet Explorer 9** and up[1].
The most crucial ES5 feature used by Vue v2 is `Object.defineProperty`, which is used to build its reactivity system.
Accoding to the MediaWiki browser support matrix[2] , MediaWiki currently serves javascript to **Internet Explorer 11** and up.
The next major release of Vue, v3, is set to be released in the very near future. This version of Vue is written with **ES6** and does not support **Internet Explorer 11** by default. Vue 3 uses the es6 `Proxy` feature as a core part of its new reactivity system, which is supported by Edge 12 and up.
However, Vue 3 will also decouple it's reactivity system from Vue core into a separate package, and **will ship with a compatibility build that supports IE11** [2], using the old reactivity system. But Vue 3 has not yet been officially released (beta is slated for Apr 16[4]), should we start with it anyway?
**Open questions**:
- Should we start DIP using Vue 2 or Vue 3
- If we start with Vue 2, will that require a major effort to upgrade to Vue 3?
- If we start with Vue 3, should we use the old reactivity system & support IE 11?
- Does Vue 3 need another security review? Vue 2 was reviewed in T168264.
- What version is or will be available in Core?
1. https://vuejs.org/v2/guide/installation.html
2. https://www.mediawiki.org/wiki/Compatibility#cite_note-5
3. https://medium.com/vue-mastery/evan-you-previews-vue-js-3-0-ab063dec3547
4. https://www.youtube.com/watch?v=Nk3cC7xNfkk (State of Vue, Apr 16)