Vue 2.7 update
INFO
This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. You can find the original version here
Context
Vue released a new version for Vue 2. This update contains some new backported features of Vue 3 like the new Composition API. This ADR explains why we don't upgrade to Vue 2.7 in the next major.
Decision
We skip the version 2.7 and will jump directly to Vue 3 in the next year. The reason for this is that the amount of work need to be put into the update out weights the benefits the update delivers.
Following things need to be done to update to Vue 2.7:
- Fix and update the Component Factory to support the new Composition API. This also means that we need a decision if we want to make this API extendable and if yes, we need to create a concept how the extensibility should look like and implement this.
- Fix many runtime errors which freezes the whole admin. The reasons for this are several things, like using internal Vue code and more.
- Rewrite the TypeScript definitions for our components to support the improved TypeScript definitions of Vue 2.7. They are now supporting also Mixins, Extend and more. The main problem here is that we have wrapper around all these things like the Mixin Factory. And they need to return the correct types otherwise the component will not work with TypeScript
To solve all issues it will take much work. And this work will be done only for one major version, and then we go directly to Vue 3. So in general: much work for a short time and no real benefits (if we don't want to allow the Composition API yet).
Consequences
We don't update to Vue 2.7 and jump directly to Vue 3.