Since last year, it has been eight months since Vue3 released its RFC, and over two months since Vue3 beta was released. Many of you may have been wondering when Vue3 would be released, and on the first day of July, UVU gave an answer. Here is part of the text:
Many of our users have been asking this question: when will Vue 3 be ready? We have refrained from giving a definitive answer because predicting software delivery time is hardly ever accurate. As a non-profit-driven project, we wanted to focus on writing good software instead of hitting deadlines. However, it’s been a long wait, and we know the uncertainty can make it difficult to make plans with Vue 3. So here we would like to provide some general guidance and detailed status updates to help our users adjust their expectations and plans accordingly.
Uvu stated that it was not easy for the team to give users a clear “ready” date for Vue3, as predicting software delivery time is generally inaccurate. As a non-profit project, the team wanted to focus on writing a better framework for users, rather than trying to catch up with the deadline. As a fan of Vue, I am very pleased with the efforts made by the Utah team in Vue3 and support them. Uvu also said that there may be a long waiting period, and the uncertainty makes it difficult to plan for Vue3. However, they are happy to provide some general guidance and detailed status updates to help Vue users adjust their expectations and plan accordingly.
The majority of the time spent on Vue 3 has been invested into designing and building a solid core, which brings about many exciting improvments (you can read more about it here). However, in order to mark the whole framework “ready”, it’s not just about the core. We also need to have compatible versions of the supporting libraries (Vue Router, Vuex, test utils), tools (CLI, eslint plugin, browser devtool extensions, IDE extensions), and documentation (both for new users and migration). While we have been working hard on all of these parts, it is very difficult to accurately predict a timeline given the amount of effort and coordination it takes to have all the pieces fit together. We originally hoped to have Vue 3 released in the first half of 2020, but we have to adjust it given the current progress. Our current target dates are mid July for the RC (release candidate) and early August for the official release of 3.0.
Uvu went on to explain that Vue3 has spent most of its time on core design, designing a more robust “core” for Vue3, so Vue3 will bring a lot of exciting improvements. But beyond the core of Vue3, to make it fully usable, the team had to be compatible with the entire ecosystem of Vue: Vue Router, Vuex, test suite, tools (CLI, ESLint plugin, browser plugin DevTools, IDE plugin, etc.), documentation (including documentation for new users and migration documentation), although they have been working on these, But given the amount of effort and tweaking required to put the frameworks together across all ecosystems, it’s very difficult to predict times accurately. Originally the team had hoped to have a Vue3 release by mid-year, but now they have made some schedule adjustments and are aiming for a RC release in mid-July and a 3.0 release in early August.
The Vue3 ecosystem is mostly in beta or alpha, and the core framework itself has been extensively tested by early adopters. The only thing keeping them out of RC is the browser DevTools extension (still in development). Uvu also wrote an interesting decision tree in code to guide users through Vue3’s corresponding plans:
IWantVue3()
async function IWantVue3() {
await read('https://github.com/vuejs/rfcs/tree/master/active-rfcs')
if (isTrue("I just want to play with Vue 3"))) {
// If you just want to try Vue 3 out - you can do it right now with Vite.
// Vite (https://github.com/vitejs/vite) is a new dev/build tool that we
// created that is lighter, faster and produces smaller bundles. It works
// with Vue 3 out of the box.
run(`npm init vite-app hello-vue3`)
return
}
if (isTrue("I am planning to use Vue 3 for a new project")) {
if (isTrue("I need IE11 support")) {
await IE11CompatBuild() // July 2020
}
if (isTrue("RFCs are too dense, I need an easy-to-read guide")) {
await migrationGuide() // July 2020
}
if (isTrue("I'd rather wait until it's really ready") {
await finalRelease() // Targeting early August 2020
})
run(`npm init vite-app hello-vue3`)
return
}
if (isTrue("I am planning to upgrade an existing Vue 2 project")) {
await IE11CompatBuild()
await migrationGuide()
await ecosystem(
// this is the tricky part: if you have an existing, non-trivial Vue 2
// app, you likely are using some dependencies that are not yet
// Vue-3-compatible, for example meta frameworks like Nuxt, or UI
// component libraries like Vuetify. If that's the case, our suggestion
// is don't be in a hurry to upgrade. It *will* take some time for the
// ecosystem to catch up.
// Also note that you can start using Vue Composition API in Vue 2 today
// via https://github.com/vuejs/composition-api - we are also going to be
// Backporting compatible Vue 3 porting features to 2.x once 3.0 is out.
)
return
}
if (isTrue("I am the author of a Vue ecosystem library")) {
// It's time to make your lib Vue 3 compatible!
return}}Copy the code
Finally, the progress of Vue3 main framework is given.
Vue3 Core
Vue 3 Core has been in beta and testing for over two months now, and the team has incorporated all of the changes that broke the plan, with no plans to break the changes further until the official 3.0 release. At this stage, they believe the Vue 3 core is fairly stable and ready for the RC stage.
VueRouter
At vue-router@3, the team still has some minor routing hook behavior consistency issues to discuss, but these are the only issues that prevent routes from being marked as Beta. Routing is now available for new, non-critical projects.
Vuex
The only difference between Vuex 4.0 and 3.0 is that in order to be compatible with Vue3, it is ready to enter the RC stage along with the Vue3 core.
Vue CLI
Vue support for Vue 3 in the CLI is currently provided through the vue-cli-plugin-vue-next plug-in. You can build a new project and switch to Vue 3 by running vue add vue-next. When Vue 3 reaches RC, it becomes an option during the project creation process.
Uvu also advertised its recently written tool Vite as a way to launch a Vue 3 project if you don’t particularly like WebPack and need to support IE11.
Other items
Project | Status |
---|---|
vue-devtools | WIP (beta channel with Vue 3 support in early July) |
eslint-plugin-vue | alpha [Github] |
@vue/test-utils | alpha [Github] |
Babel jsx transform | alpha [Github] |
vue-class-component | alpha [Github] |
vue-loader | alpha [Github] |
rollup-plugin-vue | alpha [Github] |