vuejs/rfcs

Vue 3: mid 2020 status update

yyx990803 opened this issue Β· 70 comments

Vue 3: Mid 2020 Status Update

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.

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.

Decision Tree

It doesn't mean you cannot start using Vue 3 today though. Most of the framework parts are now in either beta or alpha, and the core itself has been extensively tested by our early adopters. The only thing that blocks us from going into RC is the browser devtools extension (which is being actively worked on at this moment). All the significant changes have been landed and documented in RFCs and there are no more planned breaking changes. If you've been waiting to get onboard with Vue 3, here is a decision tree to help you plan accordingly:

IWantVue3()

async function IWantVue3() {
  await read(`https://github.com/vuejs/rfcs/pulls?q=is%3Apr+is%3Amerged+label%3Acore+-label%3Arevoked+-label%3A2.6+sort%3Acomments-desc`)

  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 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
  }
}

Status of Major Framework Parts

Vue 3 Core

Vue 3 core has been in beta for over two months now. We have merged all planned breaking change RFCs, and there are no further breaking changes planned before official 3.0 release.

Thousands of early adopters have been using it for new projects and have helped us identify and fix many bugs and behavior inconsistencies with Vue 2. At this stage, we believe Vue 3 core is quite stable and ready for RC.

Vue Router

We still have a few minor router hook behavior consistency issues with vue-router@3.x, but these are the only things that is blocking the router from being marked as Beta. The router is usable for new, non-critical projects.

Vuex

The only difference between Vuex 4.0 and 3.x is that it's Vue 3 compatible! It is ready to enter RC together with Vue 3 core.

Vue CLI

Vue 3 support in Vue CLI is currently provided via the vue-cli-plugin-vue-next plugin. You can scaffold a new project and then run vue add vue-next to switch to Vue 3. Vue 3 will become a option in the project creation process when it reaches RC.

Note if you are not particularly attached to webpack and IE11 support, you can also start a Vue 3 project with Vite.

JSX Support

There are currently two JSX transform implementations for Vue 3 with slightly differing syntax (for Vue specific features):

We are using this thread to unify the design and land on an official specification of how Vue features should be handled in JSX. If you use Vue with JSX, please provide your feedback in that thread.

Other Projects

Project Status
vue-devtools WIP (beta channel with Vue 3 support in early July)
eslint-plugin-vue alpha [Github]
@vue/test-utils alpha [Github]
vue-class-component alpha [Github]
vue-loader alpha [Github]
rollup-plugin-vue alpha [Github]

Really thanks @yyx990803 to announce us about the progress of Vue 3. Waiting for good release this Aug.

It's okay, the wait will be worth it

thank you for the announcement, @yyx990803 πŸ’šπŸ’ͺ🏼

Apart from the update, really liked the Decision tree! <3

"I need TypeScript type checking support for template"

The biggest hang-up right now is the missing documentation!

I can read codebases with the best of them, but it doesn't explain the "intentional usage" of an undocumented feature.

Some features, in particular SSR, have had some major changes but are unusable until we know how they are meant to work.

Tl;Dr: without docs, the risk of "doing it wrong" is a deal killer.

@yyx990803 what's the recommended way for plugin authors to support both Vue 2 and 3?

What about vetur ? it's almost a requirement when developing in VSCode.

A little addition to the "I just want to play with Vue 3" part:

I'm maintaining a showcase playground with code examples for the new features and a curated list of articles/courses targeting Vue 3. Feel free to contribute if something is missing from them.

Great! πŸ’ͺ

Just love Vue 3 soo much , I have been playing around with the composition api in a vue 2 project and it awesome. I just can't wait for August for the official release. Great Work by all the contributors and the community. Let's keep making vue better

Thanks for the great work! The only thing stopping me is API changes at this point up until RC.

@CyberAP regarding plugins that need to support Vue 2 and Vue 3, the way this was handled from Vue 1 to Vue 2 was just having a separate branch and a note in the README. This is how Vuex is handling this right now. You just deploy a separate version on NPM using a tag (--tag [version]).

I plan to maintain my plugins Vue 2 compat for the next 18 months, then put them into migration mode.

Likely, you leave the main branch as Vue 2, until you feel like most of the issues and users are on Vue 3. Many old-school projects (eg vue-multiselect) still have a 1.x branch as well.

So far, Vue 3 + Router + Vuex + Utils is feeling pretty on point in some small projects I've been working on! Great job everyone.

@asafyish Vetur (for Vue 2) works pretty well with Vue 3 as is (some missing features, like it will warn you about a root node which is no longer required in Vue 3). Aside from small things like that, you can still get TS inference etc without problem. It also looks like the Pine (the maintainer, handle octoref) is doing a ton of work around Vetur lately as well.

Same for Vuex here. We'll probably create 3.0 branch and swap with current 4.0 branch. Vuex 3 will be supported as long as Vue 2 is supported πŸ‘

Even if it's a bit longer the most important is informations thank's a lot ! πŸ‘

Evan You , Immortal god .

ι©¬δΈŠζ‰“εΌ€ζœ‰ι“θ―ε…ΈηΏ»θ―‘δΈ€δΈ‹γ€‚ε€§η₯žη‰›ι€ΌοΌ

Thanks to the whole team for your efforts!

Yeah ! Good news !
Is anyone have test to switch an existing app vuejs2 to vuejs3 recently ? Because we try, want it was dirty (mostly imported libraries like Element, etc)... Is anyone have good resources on migration ?

Yeah ! Good news !
Is anyone have test to switch an existing app vuejs2 to vuejs3 recently ? Because we try, want it was dirty (mostly imported libraries like Element, etc)... Is anyone have good resources on migration ?

I encountered the same issue, and now I am going to refactor Element-UI. Seem the Element official has no plan to upgrade Vue3.

Thanks You All

That's really really great stuff! Looking forward to the final release πŸ™‚

Final release...It's time to make new thingπŸ˜‰

Looking forward to migration guide! Where could we find a draft version, to provide feedback on it?

 if (isTrue("I am planning to upgrade an existing Vue 2 project")) {
    await IE11CompatBuild() //this is not required. 
   //We want to upgrade existing Vue 2 projects and drop IE support. You might want to ask how many still need IE support for Vue3 version.

Great update. Good work takes time.

antfu commented

what's the recommended way for plugin authors to support both Vue 2 and 3?

@CyberAP Saw your comment and I made a library for that just now - vue-demi πŸ˜†

Thanks for all the great work everyone!!

I hope vetur extension can get more attention. Currently, there are too many problems with vetur that make the experience of developing vue not good

Many important issues are not solved quickly and thoroughly

I cant parse the code past line 5 due to a syntax error, please advise:

  if (isTrue("I just want to play with Vue 3"))) {

얼릉 Vuejs 3.0 정식 버전을 맛보고 μ‹Άλ„€μš”! Awesome!

amazing , awesome , so fast ; waiting for Vuact;πŸ˜ƒ

You guys rock! Can't wait for new features and performances!

Amazing ! Thanks to you and your team 's great efforts to bring us this exciting features !!

Here's an example of using Vue 3 with Vue-Router, lazy async components and without webpack:

https://github.com/arijs/vue-next-example

the function is absolutely fabulous

"I need TypeScript type checking support for template"

use this IDE -- VSCode
install this extension -- vetur
set this config -- vetur.experimental.templateInterpolationService = true

console.log("Great work!");

#dieHardVueFan

So long as I never have to use reactjs, I will wait!

Do what you must do! πŸ₯°

Courage to y'all ✌🏿

Awesome! I’m definitely interested in Vite!

Greate job, so see you in Aug.

8ζœˆθ§οΌŒι‡θ§ζ›΄ε₯½ηš„Vue。

8ζœˆθ§οΌŒι‡θ§ζ›΄ε₯½ηš„Vue。

Just waiting for you! Thanks for your team

YYESSS!! Can't wait!!!! :D

Thank you for the great work πŸ˜„
Waiting for laravel, vuetify and other dev tools support
My early test on laravel with vue 3 was working but only with webpack. Would want to see laravel mix integrated thank you πŸ˜„

Good news

Thank you. When are we getting a native delivery vue solution?

Congratulations on RC 1, guys!

very excited for the update!

awesome! really excited for Vue 3! 😁

@yyx990803 excellent job!
By the way, the address of rollup-plugin-vue mentioned in "Other Projects" is wrong.

image

Is IE11 supported now?

Hey, can't wait for VueJs 3 - got a question though,
The roadmap still says Q3 2020 -> didn't we just enter Q4? ;)
https://github.com/vuejs/vue/projects/6

No, Q4 starts on october

Oh my fault... little headache and a boss telling you that it's Q4 already messed me up πŸ˜‚

Tell your boss to wait a little more because Vue 3 is coming very soon

Starting an Angular 1.x application migration to Vue 3 + Vite + Wijmo + Tailwindcss + PostgreSQL. The expectation is to have it running in production by March 2021. We would like to wait for the stable version to arrive, but if we wait, we will not hit the target. We must start in September. Any advice @yyx990803?

xmsz commented

I really need IE supported!!! not just IE11!
We have a lot of users is using Windows7(that is right , IE8 are still active οΌ‰ and Windows10(IE11)。

The most tricky problem is some others software such as WeChat are still using the IE as default browser。

and, Is there any workaround to solve IE supported that I can use now?

m3nu commented

Why would anyone support an OS that's already at end of life? If you need IE8 support, maybe stick with an older library until your users can upgrade.

@xmsz Right now you cannot use Vue 3 in IE. The work around is using Vue 2, works great in IE. If you need to support IE (like me in my work) you are likely used to not using the latest and greatest technologies, anyway. Vue 2 -> Vue 3 is not so different, you can use the composition API and upgrade in the future when IE support is made available. That is what I am planning to do.

@m3nu a lot of orgs are locked to older OS/IE versions for political and/or other reasons. No one wants to use XP + IE.

@lmiller1990 To be complete, as @xmsz is asking for IE8 support: thereβ€˜s no Vue support for IE8 and below, as indicated on Vue 0.11 doc and Vue 2 doc.

@lmiller1990 Hi. do you have any news (when?) about supporting IE11?

As vue 3 is about to be released, I am starting to use vue 3 to develop new projects. Before this time, I wanted to know the progress of IE 11 support, so that I could decide whether to use vue 2 or vue 3.

I don’t want to online my project before supporting IE 11. my client might kill me(😒). That will be a sad story

@lmiller1990 Hi. do you have any news (when?) about supporting IE11?

As vue 3 is about to be released, I am starting to use vue 3 to develop new projects. Before this time, I wanted to know the progress of IE 11 support, so that I could decide whether to use vue 2 or vue 3.

I don’t want to online my project before supporting IE 11. my client might kill me(😒). That be a sad story

me too..πŸ₯Ί

FYI if no one has seen the full conference official announcement about Vue 3: https://www.eventbrite.co.uk/e/vue-global-online-conference-tickets-105505078530#tickets - this will happen on this week 17th and 18th πŸ‘

the short live announcement will happen for free in here: https://www.youtube.com/watch?v=Vp5ANvd88x0

@axetroy @Vvni if you need IE11 support by a specific date, you will need to use Vue 2 for now.

I am in the same situation. We use Vue at work, and we need IE11 support. This this is open source, even if there was an optimistic deadline in mind for IE11 (which there isn't), there is no guarantee it will be ready by that time anyway (or be 100% perfect).

So, if your success relies on IE11 support, you should use Vue 2. This is what I'll be doing. I don't really see this is a problem - Vue 2 works great in IE11 (battle tested) and you can use the composition API plugin if you want to. Look at this as a good thing - Vue 2 very reliable and has been used in production for years by many companies. You can then upgrade sometime in the future, when all the bugs are ironed out of Vue 3.

I am sure more information will come about IE11 support, but the team is focused on shipping Vue 3 for the rest of the browsers, devtools, testing plugins, router, docs etc. Thanks for your enthusiasm!

Any chance at a new update for the end of 2020? Curious about IE11 support as well as what's next for the framework looking into 2021!

Is there any workaround to solve IE11 supported that I can use now?after vue 3.0 is official released

The work-around is to use Vue 2 + Composition API for now - the Vue 3 IE11 support will be have the same reactivity limitations as Vue 2 anyway, so upgrading will not be difficult.