One of the most frequent questions the Ionic team receives is "what frontend framework should I build my app on?"
Before we get into that, let's define what "frontend framework" means in this context, because it's a loaded word. When we say "frontend framework," we're referring to frameworks like Angular, Vue, or React. That's in contrast to "UI frameworks" like Ionic Framework. While some of those projects don't refer to themselves as frameworks, when combined with popular libraries in the ecosystem they all essentially are.
Angular vs React
We are often asked whether we think Angular or React is better in general, or better as a fit for enterprise development on the Ionic stack.
The answer is that both are great. The question really comes down to the needs of your team. You can build enterprise quality apps in either, so consider the skills and background of your existing development teams, your interest in using third party libraries vs "official" ones, and your future hiring plans.
One of the most significant differences between the two platforms is what's included out of the box. With Angular, many more official utilities and tools are provided out of the box. These also come with conventions around project structure and features for common app use cases (routing, i18n, etc). However, React is the opposite. React by itself is really just a view library. Developers will need to make decisions for other key aspects of their app infrastructure, and will find the majority of those libraries are unofficial and supported by community maintainers. The difference is the React community is very large and some of those libraries will have significant usage.
It's a tradeoff: We find that Angular's ethos and deep support of enterprise-friendly features like testing, object-oriented patterns, project conventions, routing, tooling, and more make it very appealing for enterprise teams. But we also see React's large community and ecosystem very compelling for teams that are willing and able to make more foundational decisions along the way.
What about Vue?
Vue is a fast growing and popular framework for building apps. We think it's a great option and is fully supported for community users of Ionic Framework.
With the rapid community adoption, we expect to see a lot more enterprise teams using it over time. For now, Vue support for enterprise apps on Ionic is in the early stages, so we recommend Angular or React for full compatibility with Ionic's enterprise suite of products. That being said, Vue adoption in the community is increasing rapidly and we will be improving our enterprise support for it over time.
Recommendations for the Ionic Stack
Angular is the most widely supported option in the Ionic stack, given that it's been there since the beginning. However, React is now essentially at parity with Angular and is fully supported. For enterprise teams, Vue is less supported in the Ionic stack given that support for it is relatively recent and demand for Vue support from enterprise teams is relatively new.
At the moment, we recommend using Angular or React purely for compatibility with Ionic's enterprise products and support. Compatibility for other frameworks is something we are constantly evaluating and we would be interested in discussing your team's needs regardless of what they may be.
In our opinion
When asked by the community, I always say "use whatever works for you," because the reality is you can build an app of quality in all popular frameworks. However, when it comes to the topic of enterprise app development specifically, I have a slightly different opinion.
I consider Angular to be the most enterprise-focused framework on the market today. It's built around a programming model that many enterprise developers are familiar with, specifically a heavy Object-Oriented approach with type checking, dependency injection, and an emphasis on testing. Additionally, being batteries-included and highly opinionated about project structure and conventions, it requires teams to make fewer decisions outside of their area of expertise and keep conventions between teams in sync.
That being said, it's impossible to deny that React has become the most popular frontend framework for building apps today, and while adoption started with smaller teams and indie developers, React is now actively used in enterprises around the world. The difference is the community is filling in the missing pieces around React, while in Angular most of those pieces are official.
I suspect that Angular is going to be increasingly niche, but in a way that is good for enterprises. I don't see Angular as a fit for anything but serious apps, because the overhead in using it is relatively high and it's solving problems indies and small teams don't have. But that means many serious enterprise apps will be built on it. I think the same can be said of backend technologies like Spring that are the bread and butter of enterprise teams.
I think the decision, like always, comes down to people. What skill sets do you have on your team? Do they have experience with Angular already, or do they come from the React world? Are you able to invest in training new developers on Angular, or do you need something that is easier to pick up and use and more widely known in the web development world?
Whatever you pick, the Ionic stack will work great with it. We fully support Angular and React for enterprise teams, and have recently started adding scaled down support for Vue developers as well.