Why I am moving away from Vue.JS - Hashnode


As developers, we need to be up to date with all technologies, and it wasn't different with me. My main stack most of the time was .NET, building API's and services using ASP.NET MVC and WebForms (yep). From this experience, I often received some opportunities to work using pure JavaScript clients, and my first movement was dive into jQuery world.

On the first sight, 2011, it was a great mess to build something to web. See, I was living in a world full of Explorers and an incipient new Google browser, make an app compatible with all this wildness was... wild.

jQuery came to me as a freeze and fresh breeze of air. I could iterate the DOM with ease, make XmlHttpRequest calls (I am feeling myself too old saying this), and add new dynamic content to the page, in a way Razor couldn't make it. Of course, I've put jQuery everywhere. Of course, it was a mess.

No longer after that, I started working with AngularJS. It solved a lot of problems I had back then, such as maintain my state and front synced and up to date, componentize all app's sections in (in an ideal world) small controllers and "components", and I could use dependence injection, with I always loved, but I didn't have the opportunity to work with until then. Angular came to me as a freeze and fresh dush shower, and I saw it was good. Of course, I've put AngularJS everywhere, migrating existing code to, and making new projects in. Of course, it was an enormous mess.

Then came Google, the same Google again, saying all my knowledge in its framework would be kind of unusable, since they were building a new version of AngularJS, not being Angular at all. Even now I have no idea why they did this, instead of building this new framework with a new name. Why on Earth they needed two Angulars? On my mind, Angular today has to many angles, it could be called "circle" :)

I went to the web and search for the next step then. React was already a thing, growing in a ridiculous pace. But I have some problems back then I was indeed looking to solve: maintain my current codebase (migrating from jQuery to AngularJS was pain enough to me), reuse most of my skills I had in AngularJS way-of-life, and be in the middle way between AngularJS and React. Vue was in its infancy, so it was not easy to pick it and learn.

I did some small project’s (to-do apps) using Ember, Aurelia, Knockout. Gosh, I even tried Backbone. When I decied to visit the Vue’s documentation, was a love at first sight. Easy to learn, all integrated in components, directives (yes, I still have some kind of compassion with), and in a day I was able to put code in production learning alone, without knowing someone working with Vue.JS. I was in version 0.12, and I was starting freelancing for real, so I thought my clients wouldn’t care about the technology stack. They just wanted the job done.

Was a long two years inside this platform and community. I went to some conferences and saw people doing very well-crafted code, learned Typescript (what can we do to make Typescript the de-facto standard on browsers?), made some money and I had the opportunity to puot back effort on my backend devtools, using Linux on my primary machines, and .NET Core powering all. Of course, I’ve put Vue.JS everywhere, and was beautiful, was not a mess. I had full control in all my code, was a perfect world.

Then came a client and offered me a job to make and cross-platform mobile app. They already had jobs in Angular and Vue.JS. I know enough to now put efforts on Ionic or other hybrid solutions, at the same time I love my Linux machine, and I didn’t like the idea to use a MacOS. Native Vue was not huge, and all of this left me with one alternative.

I didn’t like React at the time. I came from Vue, it was everything so easy to build, and React is more abstract, more direct, more… pure JavaScript. I sit down and studied lifecycle, components, props and state, reactivity, HOC’s, Redux. Then I learned the Expo wasn’t React, just a framework over a framework, with builds natively. Some weird concepts I felt into but it was good.

Today I feel myself a over the average to great React developer. I did some others React Native apps, went to web, did some great apps using sockets, Firebase, a brand-new API Node-powered, dashboard apps, and I get traction. And then, when I was relaxed about the life, the universe and everything, one of this last Vue projects of mine come back to me. And scared me.

Vue.js launched a new version of its CLI, using Webpack 4. My old project automatically became incompatible with itself. New components were not that easy to be added, and modified. The code became a mess a lot faster. And the market as a whole doesn’t care.

The mobile is literally eating the world. New projects are created in a pace never seen before. And the wages are only increasing, freelancing positions are being created faster and faster, and React won this by far. Vue.JS maybe still good to work these days, but not at my team, not mainstream here in Brazil, and for sure, not mobile.

The same me two years ago would cry saying these words, but today I’m fine with this. And consequently, I am moving back to backend, using Nest.JS and ASP.NET Core all the way up, but this is for another day :)