Logo

dev-resources.site

for different kinds of informations.

Vue 3 Slowly Turning Into React? (I'm Honestly confused.)

Published at
1/13/2025
Categories
vue
react
webdev
javascript
Author
efemena_elvis
Categories
4 categories in total
vue
open
react
open
webdev
open
javascript
open
Author
13 person written this
efemena_elvis
open
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!

vue Article's
30 articles in total
Favicon
Learning Vue
Favicon
Resolving Auto-Scroll issues for overflow container in a Nuxt app
Favicon
Building a new Chat
Favicon
Creating a scalable Monorepo for Vue - Workspaces
Favicon
Creating a scalable Monorepo for Vue - Intro
Favicon
How to Load Remote Components in Vue 3
Favicon
Middlewares: O que são e como utilizar no Nuxt.JS
Favicon
Sore Throat: Causes, Symptoms, and Treatment
Favicon
Transform Your Web Development Workflow with These JavaScript Giants
Favicon
Integrate Storybook with VueJS
Favicon
Why JSX/TSX Isn't Cool
Favicon
We released AdminForth Components Library
Favicon
JSON Visual Edit
Favicon
How to create perfect CSS circle sectors
Favicon
Shady QR Code Generator Pages? Ugh!
Favicon
I Built a CaddyFile Generator Tool in Just 8 Hours – Here’s How It Went
Favicon
How to setup VueJs in Neovim (January 2025)
Favicon
Corello, Simple Dtos in FrontEnd
Favicon
The easiest way to migrate from Nuxt 3 to Nuxt 4!
Favicon
Vike - Next.js & Nuxt alternative for unprecedented flexibility and dependability
Favicon
Creating a Scroll-Spy Menu with Nuxt 3 and Intersection Observer API
Favicon
vue project
Favicon
Vue.js Fetch API | Search Vue.js | Sort Vue.js | Pagination Vue.js | Filter Vue.js
Favicon
[Boost]
Favicon
Testing Vue components with Vitest
Favicon
How can VoidZero be commercialized?
Favicon
romantic-cannon-lpg3yr
Favicon
Building a Vue CRUD App with a Spring Boot API
Favicon
Vue 3 Slowly Turning Into React? (I'm Honestly confused.)
Favicon
Angular vs. React vs. Vue

Featured ones: