Some time ago I created 3 different courses about how to build a real production application, clone of the Medium website with React, Angular and Vue.
And here I want to share how much time I spend to develop with each of them, were I had most problems or difficulties and which I like most.
Let's find it out.
So the application that we are building is not a todo list or a blog. It's a fully functional project with authentication, fetching articles from API, managing them, like and disliking them, following users and much more. In each application we build only frontend and we use a public API to save changes or get data. Which means the time of development is just the frontend framework. Also I have quite a lot of experience in all 3 of them so no time was spend for searching how to implement things.
If you are interested in any of this courses I will link them down in the description.
Time of development
So the most interesting question which one of the fastest to implement with? So I spend normally 1-2 hours in evening while building so it was not like a full day. Also I didn't cut any corners and all 3 are build in a correct, dry and scalable way.
So on the first place is obviously Angular but of course from the end. It took 2 months of time to build the project sitting there almost every evening. This is first of all because Angular is quite verbose and additionally we need to cover everything with Typescript. Also I used NgRx which is the most popular solution for state management but the amount of code is huge.
On the second place is React with React hooks. It took 2 weeks in total and actually the development speed was pretty fast. The problem is that there were several nasty bugs in application due to the nature of React hooks which took a bit chunk of time to fix.
In hooks the code was short and easy to reuse. We don't have a lot of files. Also as we have React.Context I didn't use Redux for state management but just plain React and useReducer hook.
And actually the winner that I didn't expect is Vue. I created an application is less than a week. I wrote on average the same amount code as in React but there was Vuex as a state management out of the box and what simplified things a lot is computed properties. In Vue you can create properties of the component which will be automatically recalculated based on other inputs of properties. This makes your code extremely simple and reactive. Also all problems were really easy to debug as error messages were always visible and human readable.
While building and later from students I've got some bugs in the applications. In Angular most problems were with angular-router and some of them were not trivial to solve because component remounts and router subscriptions worked not as I would normally expect it to work. Other than that Typescript helped a lot in finding bugs or typos.
In React most problems were coming from the hooks and from cases were components were rerendered too often or with stale values which is sometimes difficult to debug. Also sometime error messages from React were not clear enough to understand the problem.
In Vue which surpised me it was the easiest to fix problems because of human readable messages and they were not that tricky.
Big and small Apps
But I still think what how big production applications we can't live without Typescript. It makes it much easier to support, refactor and scale. In all 3 frameworks we can use Typescript if we want to but realistically in Angular and all third party libraries you will get Typescript out of the box because it's in their ecosystem.
In React and Vue it depends on the author of the library and even Vue itself supports Typescript really good only in version 3. So if you plan on build a big application I would still look only on Angular or React with most popular libraries which are covered with Typescript.
What to use?
So what to use? As always it depends.
If you learn a framework to find a job React is the most popular, then Angular, then Vue.
If you want to get more money most often Angular is paid better because the level of entrance is much higher and the amount of developers is lower.
If you never worked with frameworks take Vue which is the easiest to start with.
But obviously in all this frameworks you can build a frontend application. They all have good performance, same set of features and architecture. It's just a matter of taste.
Also if you want to improve your programming skill I have lots of full courses regarding different web technologies.