In previous blogs, I reviewed the community popularity and the philosophy behind three different front-end frameworks: Vue, React and Angular. Now, I will share my point of view on when you should consider one framework over another.

Each framework brings a slightly different approach to the table, with different pros and cons that must be weighed against the project you are undertaking. In my opinion, each of the three frameworks are strong choices and all are capable of building world-class applications. Each framework allows you to build your user interface as discrete component building blocks. Tooling, features and performance are all comparable between the three. However, certain project types may have better success with one framework over another.

Based on my experience, I’ve seen that some of the underlying philosophies of one framework may give it an advantage over the others in specific situations. Here are some examples.

You need to staff up a team from scratch on an application and speed to market is a priority: Vue

Developers who know JavaScript can become productive quickly with Vue, as there is low ramp up time. Vue is also proven to scale well as the app grows larger when done in the right way.

You are re-platforming an existing application but would like to phase in updates page by page: 
React and Vue

Because React and Vue both take the approach of a singular, lightweight core component library, they are ideal for gradually re-platforming a legacy application into a system of components. This is how Facebook migrated from server-side PHP, for example.

You are building a highly complex enterprise app and have access to a pool of Java developers: Angular

Java developers transition well to TypeScript and should be more equipped than general web developers to ramp up on the Angular framework, which is the most complex. Also, the full framework features of Angular should be able to handle most high complexity enterprise apps without introducing new custom code or unorthodox patterns.

<<< Start >>>



<<< End >>>

You have a single team of web developers and have to quickly build an MVP for mobile and web: React

React Native is used in some of the most world class mobile applications such as Instagram, Facebook and Uber. While frameworks such as Ionic for Angular and Vue-Native for Vue also compete, track record and community size keep React as the preferred framework. As your application grows, you can also replace certain mobile pages with native ones for better performance if needed.

You are building a library of reusable components to be shared by multiple applications: React

Some organizations want to use an atomic design pattern and create consistent UI widgets that are used throughout different applications and platforms. Because React is actually a small UI library, it is ideally positioned for this purpose—the dependency being to include the React library within the same HTML page. Consider React + Stencil for a library of reusable component ACROSS frameworks. In addition, since React has a larger community and share of developers, it has an edge over Vue, assuming that more projects will be React projects with the ability to include these reusable components.

You are building an omnichannel experience across a variety of platforms and want to reuse components for consistency and efficiency: React

React has the most abundant custom renderers, making it the best choice if you are building an omnichannel type experience. There is even a VR renderer!

You have a COTS product but would like to add your own modern custom UI on top of it: 
React and Vue

React or Vue’s flexibility as a standalone UI library enables you to decide whether you would like a complete SPA, a mixture of COTS pages and react pages, or even full COTS pages with a few React components. React or Vue can be used to gradually take over a COTS application to use a fully modern front-end architecture.

You are building a largely data entry type application that has many forms with complex rules: Angular

Angular has robust tools for creating dynamic, complex forms and validating those forms directly into the framework.

You are building an app that will run on a lower power device: Vue

Though benchmarks are close, Vue has a slight edge on performance.

You have a large project with a large distributed team: Angular

Since Angular is more opinionated and structured, it provides less of an opportunity for small teams to stray into their own unique structure and style. Vue provides the most flexibility and simplicity but allows a lot of opportunity for poor code structure and tough debugging.

<<< Start >>>



<<< End >>>

You are building a system of independently maintained and deployed micro-frontends: React

There are a few different patterns for implementing micro front-ends (including a mix of technologies). The right choice may also depend on more situational details. However, because React gives you a lot of flexibility with your architecture, and shines as a lightweight component library, we feel that in most cases it is more well suited for this type of architecture.

Predictions

Let’s take a guess at where things will be towards the end of the year. We expect that all three frameworks will retain net positive growth. Angular will continue to see growth for usage of highly complex enterprise applications, but it will likely not see the usage outside of that demographic slide. React will retain its popularity and continue to grow, and its ecosystem of libraries will continue to become more mature and accepted. Because of these two factors, more enterprise clients will be willing to pick up adoption of React. Vue will continue to see growth within startup environments and will start to trickle into more enterprise projects. However, it will remain a third-tier framework within the enterprise.

The JavaScript ecosystem continues to evolve at a fast pace. Making the right choice for your project will have an impact on the maintainability and longevity of your application. Hopefully these points can provide some insight and help you make the right choice.

Daniel Hvidding

Tech Architecture Delivery Sr. Manager

Subscription Center
Subscribe to Software Engineering Blog Subscribe to Software Engineering Blog