We have a Vue frontend and I’m getting some feedback when we upgrade to Vue3 we should move to React just for the ecosystem and dev availability. I thought Vue was a better/faster/easier response to react. What are your thoughts?
I was a big fan of Vue 2. Vue 3 is a completely different library if you choose to adopt the composition API (which is where everything is headed). If everyone is going to have to learn a totally new composition pattern, might as well look at what else is out there.
Kinda similar to the big overhaul between Angular 1 and 2
Vue 3’s Composition API and composables are more similar to React functional components and hooks than it is to Vue 2 and its Options API. That’s not to say that React Hooks and Vue Composables are apples-to-apples. They still have different approaches to reactivity and so on, but the programming model is more familiar between the two.
Coming to Vue 3 from 2 was a bit of whiplash. However I’ve been working with it for a few days now and have come to appreciate how much more flexible and powerful it is to have access to Vue’s reactive primitives anywhere - you don’t have to write all your business logic in the scope of a Vue instance.
That said, it comes with a much higher learning curve. Vue 2 gave you guardrails, an easily understood component class structure, etc. That’s what I liked about it as it scaled well to large teams. Whereas React scaled to a large team quickly turns into a complete mess. Ask 10 different React engineers and you’ll get 10 surprisingly different approaches to how to implement components and architect applications.
Truth. As someone who cares more about getting the job done and done well, Vue 3 seemed like a step back to me. If it’s moving to be more and more like React, why wouldn’t I just use React? These frameworks don’t need to be as complex as they’re being made to be, and Vue 2 proved that. Vue 3 loses the magic for me.
I will say it took a bit of warming up to the composition API but referencing the static variables as opposed to
this.variableName
made it easy to spot a bunch of dead code in our components. I also don’t have to think about reactivity like I used to.Vue.set
andVue.observable
just aren’t necessary any more. So from a surface level it seems you’re more abstracted and removed from the target browser code it outputs but from a cognitive overhead standpoint it’s been a simpler, cleaner experience using the composition api and build toolchain.My only complaint is inside the script block you have to reference computed values as
variableName.value
instead of justvariableName
. If it wasn’t for eslint to tell me I forgot to type “.value” when referencing a computed value in the script block I’d probably screw this up a lot. Having to depend on eslint to address a shortcoming in the api feels wrong to me.
Vue has had the fastest growing adoption for the last few years according to the Stack overflow and JetBains surveys.
I’ve had better experiences onboarding young developers onto Vue projects than React. I also feel that Vue skills transfer better to other applications rather than front-end.
The dev availability is different per region. We see that applicants in northern Europe for example is still very Angular leaning, while SE Asia is more Vue. I think React is mostly a West US phenomenon.
I prefer vue because of better syntax (imo)
I think Nuxt is light years ahead of Next, imo. Both Vue and Nuxt are easier to use than React and Next, even in their Vue3 form (despite my other comment).
I’m jealous of the React ecosystem, for sure.
I tried react, and it just didn’t click for me.
I like Vue3, it has some awesome features and power as you dig in, and at the same time if it’s a simple component it’s simple code.
I like that 99% of the time, I don’t have to overthink the reactivity and lifecycle of components.
I like that the templating is basically HTML.
And I think the composition API has finally clicked for me, instead of just using it “because I should”I’ve never developed in Vue, personally, just mostly in React. However, I don’t think that the framework is that important at the end of the day. Your app will be plenty fast no matter what option you choose, assuming you ensure you are following the guidelines set by the framework, and React is plenty easy if you have enough experience under your belt.
Whats more important is making sure you, and your team, can understand and maintain the code. If more of your team is comfortable with Vue, then stick with Vue. If you’re thinking your team will expand, and you want to leverage the fact that React is the better-known framework to have more options for hires, then choose React. Choose what makes the most sense for your team and your application.