Comparing React, Vue, and Angular
Framework choice comes up in almost every frontend engagement. Opinions are abundant; structured comparison is not. To get something more useful than a preference, I built the same small application in React, Vue, and Angular and kept notes on what each one demanded.
Method
The application had the same feature set in all three versions:
- a data-driven list and detail view with routing;
- a form with validation;
- an asynchronous API call with loading and error states;
- a shared state store;
- a production build.
I tracked time to a working screen, bundle size, the amount of incidental code, and how much the framework decided in advance. The scoring is a hands-on impression, not a benchmark.
| React | Vue | Angular | |
|---|---|---|---|
| Time to first working screen | Medium | Fastest | Slowest |
| Routing | Choose a library | Official router | Included |
| Forms | Choose a library | Official patterns | Included, opinionated |
| State | Choose a library | Composition API or Pinia | Services and RxJS |
| Structure | Unopinionated | Guided | Enforced |
| Bundle size | Smallest | Small | Largest |
| Onboarding | Depends on the stack | Gentle | Steep |
What stood out
React has the widest ecosystem and the most hiring demand, but it is a rendering library rather than an application framework. Routing, data fetching, forms, and state are separate decisions. For a team with React experience that is freedom; for a small project it is extra work that the other two answer by default.
Vue was the fastest to become productive in. The Options API reads close to ordinary JavaScript, and the Composition API scales cleanly once the application grows. The documentation is unusually consistent. For a small team or a project where onboarding matters, it is difficult to argue against.
Angular is the most complete out of the box: routing, forms, HTTP, and dependency injection are part of the framework, and the structure is consistent across a codebase. The initial curve is the steepest, and RxJS is a real thing to learn rather than a detail. For a large team maintaining an application for years, that structure earns its cost.
What I actually recommend
For most client projects of the size I work on — marketing sites with a few dynamic parts, small dashboards, internal tools — Vue or React are the practical choices. Angular’s value shows up when a longer-lived application will be maintained by a larger team.
The larger point is that framework choice should follow team familiarity and expected lifetime, not novelty. A framework that the next developer can read is worth more than one that scores better in a comparison like this.