Should I go with Angular 2, React or Vue.js for my CMS project implementation?

Headless CMS implementations have been on the lips for everyone for quite a few years now. With the JavaScript ecosystem evolving at a rapid rate, it might be hard to keep up with which of the front end frameworks might be best for your decoupled or hybrid project.

There are three very common options that come up in discussions when setting the front end architecture in place for long living Content Management Systems built. Our three options are:

  • Angular 2
  • React.js
  • Vue

Angular 2 is a major improvement over the first generation of the front end JavaScript Framework. It is built in TypeScript and enables building of sophisticated front end applications. As a whole framework, Angular 2 offers a coherent development experience for all projects. Angular 2 offers excellent tooling and also server side rendering by default for optimal SEO (Search Engine Optimization).

React.js is an interface library that originates from the Instagram team at Facebook. It was one of the first that introduced the component based architecture that both Angular 2 and Vue.js now also follow. React is only a view level library and there are quite a few other pieces that you will need to build a complete functional application. This can lead to distracting and unstable development environments depending on the stack components selected.

Vue.js is a simplistic front end view library that is coming to it's second major iteration, Vue.js 2.0. This new version offers quite a bit of options for writing applications. It supports both a custom templating languages (similar to the one used in Angular 2) as well as full support for the JSX syntax (from React.js). As a view library, Vue.js requires components to support it. There are official Routing and State storage libraries that offer a comprehensive experience.

Conclusion

All of these three options are virtually identical in performance and features when it comes to building typical CMS driven experiences. The selection boils down to preference and the history your developers have experience with.

Angular 2 is very different from Angular 1.x, but it is still very familiar and is probably a good choice if your developers have previous experience with it. There is a learning curve, but many terminologies are shared between AngularJS (as Angular 1.x is known) and Angular2 (as Angular 2.x is known). It's also a very good choice if you have a lot of developers as it is opinionated.

React.js is a bit of a mixed bag. It's very powerful, but because of it's limited problem domain - it can lead to suboptimal implementation project workflows as essentially every React.js project can be quite different. React.js is a good choice if your vendor has strong JavaScript knowledge and the project has an assigned front end architect to it. 

Vue.js is an ambitious project, but out of the three it as the best candidate to replace jQuery for widgets in jQuery. The API is quick to pick up and the architectural improvements in the 2.0 branch enable scaling to complex applications as well. It does not have the corporate backing of Google (Angular) and Facebook (React), but the Laravel framework now suggests it - so Vue definitely has staying power.

More reading: