dev-resources.site
for different kinds of informations.
Vue 3 Slowly Turning Into React? (I'm Honestly confused.)
I've been a big fan of Vue for a long time. I remember when I first started using it, the simplicity was a breath of fresh air, especially compared to the React projects I had been wrestling with. Vue 2 felt like it had a clear philosophy: be approachable, be straightforward, and let developers focus on the application, not the framework itself.
But lately, I've been spending more time in Vue 3, and honestly? I'm a bit confused. I'm starting to see some patterns that feel awfully familiar, and not in a good way. It's like I'm starting to see Vue 3... slowly morph into something resembling React.
Now, I'm not trying to bash Vue 3. It has a ton of great features, and the composition API is powerful. But I can't shake this feeling that we're losing some of the core principles that made Vue so unique in the first place.
The "Vue Way": What We Loved
Let's be real. A big part of Vue's appeal, especially Vue 2, was its ease of use. You had the straightforward Options API. Templates were a joy to work with; simple and intuitive. You could spin up a Vue app quickly without having to wade through complex configurations. The ecosystem felt manageable; you had a solid router (vue-router) and a state management pattern (vuex), and that was it! You could be very efficient using Vue.
Here’s a simple example of a Vue 2 component:
<template>
<div>
<p>{{ message }}</p>
<button @click="reverseMessage">Reverse</button>
</div>
</template>
<script>
export default {
data() {
return {
message: "Hello Vue 2!",
};
},
methods: {
reverseMessage() {
this.message = this.message.split("").reverse().join("");
},
},
};
</script>
Simple. Direct. Easy to understand. This was the Vue promise.
The Shift: When Things Started to Feel... Different
But with Vue 3, things started to shift. The introduction of the Composition API, while powerful, brings an entirely different mental model to the table. It feels... abstract. Suddenly, simple tasks now require more code. You can do the same things in both APIs, but in some situations, the complexity feels uncalled for.
Here’s an example of the same component in Vue 3, using the Composition API:
<template>
<div>
<p>{{ message }}</p>
<button @click="reverseMessage">Reverse</button>
</div>
</template>
<script setup>
import { ref } from 'vue';
const message = ref("Hello Vue 3!")
function reverseMessage() {
message.value = message.value.split("").reverse().join("");
}
</script>
It does the same, but... doesn't it feel like more work? Look at how even a simple message variable now requires a ref and needs a value to access its content! It’s a bit much for something that was previously straightforward.
And it's not just the composition API. The state management space has also become more complicated. We now have Pinia, which is great, but now we have another choice to make. It starts feeling like "react-like" complexity, where there isn't a single way of doing things and the developer has to make many decisions before coding.
I'm also starting to see some Vue 3 projects that feel like they've gone completely off the deep end, with intricate setups and layers of abstraction for projects that might only need the basics. It is like the React way where you will see a hello world done with 10 libraries.
The Growing Ecosystem & Choices
I can't help but notice the growth of the Vue ecosystem. New tools and libraries seem to pop up constantly, which is both exciting and overwhelming.
It makes me think about a feeling that a lot of us React devs have: "option paralysis." And I'm starting to feel it with Vue 3:
Should I use Pinia or Vuex?
Which set of testing utilities should I go with?
Should I just create everything from scratch or adopt a big component library?
This was something I thought I left behind when I moved to Vue...
Am I Crazy?
I know, I know. Maybe I'm just missing something. Maybe these changes are all necessary for Vue to grow and adapt. Maybe it's just me and my preferences.
But I can't shake this feeling that the core appeal of Vue—its simplicity, its clarity, its "just works" nature—is being eroded a little bit. I'm worried that we're slowly but surely building a Vue ecosystem that looks and feels more like React. It's starting to feel like we are losing Vue unique identity.
So, what do you think? Am I alone in this? Are you seeing the same trends? I'd love to hear your perspective. Maybe I just need someone to convince me I'm wrong, or maybe we're all feeling a little bit of the same thing.
Let’s discuss in the comments!
Featured ones: