In the world of technology, things are always changing: new tools are created, popular tools receive updates, design patterns and best practices evolve. In such an evolving landscape selecting a tech stack can seem like a daunting task. Thankfully, when it comes to Frontend Frameworks the choice is relatively easy. React, Angular, and Vue are the most widely used modern frontend web frameworks, and should be the main candidates for your frontend framework.
All three frameworks can handle the technical requirements of the majority of frontend applications. How each framework handles the requirements may differ, for example React is a relatively minimalist framework in which developers install various packages to fulfill project requirements, whereas Angular comes with more functionality out of the box.
Choosing a frontend framework should therefore be based around the people building the project, the size and scope of the project, and the longevity of the project.
The Team
- Senior vs Junior Developers: While evaluating the existing skills it is important to consider the experience level of the developers on the team. In a team with one Senior who has experience with Vue and three Junior Developers with Angular, it would still be in the team's best interest to select Vue, as the Senior developer will have an easier time helping the Junior’s along the development process.
- Desire to Learn: When in a professional setting picking a new technology just to learn would not be a recommended approach. However, if you are spinning up a hobby project with friends, then select any tech you like!
- Developer Competence: A senior developer with extensive experience in one of the three frameworks can easily get up to speed with one of the other two frameworks within a few weeks. While syntax and API’s between frameworks change, all three frameworks have similarities. All frameworks utilize html like templates to structure components, can have values passed into these components, use javascript to handle component logic, support typescript, and have ways to manage global and component state.
Project Scope
- Number of Developer Teams: If a project has a wide feature set and will result in a number of development teams, then a more opinionated framework like Angular may be desired. Having code that is structured in a similar manner between teams will help cross team communication and collaboration.
- Lifespan: Software development rarely stops completely. There is always something to add, change, and a bug to fix. Software often lives on for years after it was first started. During the lifespan of the project people come and go. Being able to hire developers with experience in your selected framework is crucial. There are tons of React, Angular, and Vue developers around, and who knows how many SolidJS, or Qwik developers (probably not many). That being said, don't be afraid to hire a competent React developer for your Angular or Vue application (or vice versa) as they will be able to get up to speed quickly.
- Current Projects: If there are already existing projects within your organization using a specific framework, then you should select the same framework when starting a new project. When all projects are developed with similar technologies this will allow future maintainers and current developers to more easily work across your suite of projects and support other developers and teams.
AI Tools
- Copilots/Coding Agents/LLMs: Large Language Model tools are trained on open sourced code, and various text content from the internet. These tools therefore are most effective at aiding in frameworks that are commonly developed, since there are more examples for which the AI to be trained on. Therefore selecting Angular, React, or Vue would lead to more effective AI results.
Ultimately, the choice between React, Angular, and Vue is less about which framework is technically superior, and more about which framework best fits the team's current capabilities and the project’s scope.
Personally when I’m looking to start a customer project, my first option leans toward React because of my familiarity with it and its ease of use. However, if it is clear that this is a big project and will have multiple teams in the future I would more heavily consider Angular for its opinionated nature.