DEV Community

Cover image for Vue 3 Slowly Turning Into React? (I'm Honestly confused.)
Efemena Elvis
Efemena Elvis

Posted on

5 1

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>
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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!

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (4)

Collapse
 
oluwajubelo1 profile image
Oluwajubelo • Edited

Frameworks are always going to evolve, and it can be unsettling when things shift. While I see what you mean about the shift towards 'React-like' patterns, I also believe that the composition API has brought a lot of positive changes to Vue, enabling more modular and reusable code. Instead of being confused, maybe we should focus on understanding how we can leverage these new tools to improve our development workflows. I see a better feature as an advantage rather than the fear of convergence.

Collapse
 
riikka_koivisto profile image
Riikka Koivisto

Personally, I've found that the changes from Vue 2 to 3 has made Components much more understandable. I missed the train on exporting even in vanilla JS (long years spent in jQuery-land..), and exporting felt like a given -- of course I want to use this prop I've just created, and I want my functions to be available to the Component! That might just be my brain understanding the current way of things better, but it also helps me keep a clean codebase: no props or functions unless I actually need them.

I agree with you on option paralysis -- I am very much the same in that I use the few tools I've grown accustomed to and that get the job done. Only recently I've found courage to actually look for and try out new tools, since some old favorites have become obsolete or unmaintained. I wish there were more officially recommended stuff that I could take a peek at, but in that case, would all Vue projects start to look alike?

As a summary, I've seen the trends you mention, but I try to embrace them within the boundaries of the projects I'm working on. So far, I've been pleasantly surprised!

Collapse
 
onyekachukwu profile image
Gerald Onyeka

Too many options can be a problem sometimes, I agree

Collapse
 
efemena_elvis profile image
Efemena Elvis

Yeah exactly.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay