Vue in 2016
Evan You
73325

Some people have been asking about the dependability of Vue.js’s continued support and development and whether a large US tech corporation is likely to support this and make it somehow more dependable. I think this is the wrong question and see mostly the good parts.

TLDR; Vue.js is well designed and limits exposure. But in case something happens to threaten vue’s continued progress we will step up for either a transition time or for longer and I guess others will too.

With any open source project or any library/framework used as a dependency in non trivial applications one has to decide how to hedge against changes in direction or execution of that dependency. The more important it is to the final solution, the more careful one should choose.

In our case, the view renderer is very important to our front-end and thus we have to choose carefully and we did not even consider anything but Angular 2 at first (React does not fit our requirements at all btw, since its too dev focused)

We have built an entire business application platform using Angular 1 for view rendering from the start since it was such a good fit (Back then vanilla.js or Backbone.js were considered since Angular was brand new).

It served us well for 2 years as it fit nicely with our requirements. There were some issues though that Angular 1 never overcame and we were kind-of hoping that Angular 2 would solve those. We patiently waited for the RC (which turned out to be Betas) then the final release. I thought “all is well now, lets have a closer look by just building our core pipeline in Angular 2 again”.

It took me a full day to get up and running with lots of swearing involved. I got it working, but it felt over engineered and over complicated. The API Surface Area for what we needed is just too big and badly documented (This was never a strong suit of the Angular team anyway). Even though its released and people talked about certain features, a closer look revealed some of those still work-in-progress. Badly chosen ES6 imports actually made it even worse since some things were exported from deep inside. The choice to go with Typescript meant the webpack setups wont work sometimes (ts and ts-loader actually have a number of issues making them not quite javascript replacements). I guess this is what happens when a project gets redone by a large number of very talented hard-core developers. Sometimes they forget the developer experience since they know exactly what is important and what isn’t. They just don’t see any superfluous stuff.

At the end of that day I decided to look at Vue.js (dont know why, but I had read a little about it a few weeks earlier). 2 hours later, my entire pipeline was up, including SSR/async/dynamic components etc.

The API is straightforward. The code is lean and not over engineered. The choices made are logical. Code has clear separation of concerns and doesn’t try to do things it shouldn’t.

That meant, not only was it easier for us to use, but the bus factor is also not as relevant to us anymore since its so straightforward, that we think it will be much easier to make little fixes if need be then fixing Angular 2 if we had needed to. Maybe angular 4 or 5 etc will become leaner etc but I consider that unlikely since the team behind it has just too many people.

Also, the Angular 1 learning curve was already so bad for many developers, that third party and first party controls (like jquery control wrappers or angular material) were often not really good (cleanup issues, etc) and we had to redo them or fix them.

So we did not even get a benefit from the eco-system. The smaller and easier to understand something, the better the quality of the work in the ecosystem will be too. Angular 2 with typescript is approaching Java/.Net land with all the good things and the bad things, but that is not what I want on for our clients.

All said. We really like Vue. It will be the basis for our next version of our main product line user-interface.

Sorry this was so long :) But Angular 2 really disappointed me.