It’s been two years since we last looked at React vs Angular and in that time a lot has changed in the world of mobile web and hybrid application development technologies. As well as conducting ongoing evaluations of emerging technologies, we think it’s also important to pause and reflect a little on the changes we’ve seen in the mobile app development technologies we use day-to-day. So, together with our partners at Kumulos, we’re going to take a fresh look at Angular and React.
As with our previous article, we will cover the landscape from a high level to help guide key decision makers when choosing a new technology to build your next mobile experience.
We will cover the main points by looking at:
- The history of the projects and what has changed over the past two years
- Resourcing: how interest over time has shaped the availability of skilled developers
- Maturity and maintainability: how this has developed and what it means for choosing between the technologies
To round up we’ll look at which key considerations may lead you down one technology choice or the other, and talk about what the future may bring for mobile app development.
But first, a little history.
Angular was initially released by Google in 2010 as AngularJS, but only started to see more widespread adoption around 2013 with the release of the 1.2 series.
At the same time, React was released by Facebook in 2013, but again didn’t see wider adoption until a couple of years later with the release of the 0.14 series.
Since then, Angular has seen several major new releases, with the first large breaking architecture changes landing in Angular 2, at which point the AngularJS name was dropped in favour of ‘Angular’, leaving AngularJS only referring to version 1.
These breaking changes have been necessary for Angular to move forward with their goals to build a more performant and comprehensive, yet modular framework for mobile web development.
The initial release cycle for version 2 was painfully slow as the internals of the framework were reworked to incorporate more advanced features and ship a robust suite of developer tooling out of the box.
Once version 2 had stabilised, the release cadence picked up and more regular updates started bringing wide-ranging changes and improvements across the board. During the time Angular 2 was in development (when keeping up with breaking changes was nearly a full time job), React started to pick up momentum as it offered a younger, yet simpler and therefore potentially more stable, alternative to the aging AngularJS framework.
React as a library doesn’t provide opinionated tools for state management or networking, so it allowed the core framework to change and stabilise its API more rapidly than the Angular 2 framework simply because there’s less code included.
However, the additional costs of choosing your own state management and networking solutions in an immature ecosystem, and a lack of robust tooling meant adopting React around this time was almost as brave an endeavour as embarking with Angular 2 betas.
That said, as time has gone on this is much less of a concern as the ecosystem around React has matured greatly and tooling has improved (although it is still not nearly as comprehensive as the tooling provided by Angular).
Where Angular dictates an opinion and provides an included tool for the job, React defers to the community letting many flowers grow and freeing developers to choose the best one for their project.
Now in 2018, both of these technologies have achieved widespread adoption and they have both defined their aims and core APIs well.
When undertaking a new app development project, it is important to consider the availability of skilled developers to fully realise the project’s goals.
Previously we had mentioned that Angular offered a ‘batteries included’ approach, and that’s certainly still true today. The developer tooling now offered by Angular is superb, hiding all the complexities of the build system from the user.
This can really help to kick off new projects quickly as developers don’t need to spend time configuring the build process. They just create a new Angular project and the tooling takes care of the rest.
TypeScript can bring confidence to teams of all skill levels whilst using agile development practices because the tooling offers more assistance in editors for refactoring, and the type safety checks during compilation lessen the chance of bugs slipping through QA into production.
React on the other hand offers more limited tooling. Whilst it does have tools to create a new project with a build system included, it may often be necessary to further customise the build system to support additional asset types.
For example if you wanted to add TypeScript support to the default new React project, you would have to set up the TypeScript compiler on your own, or turn to a third-party template project to set it up for you.
This in itself doesn’t make React a bad choice, it just means it may be a little less accessible for mid-level developers who are starting a project from scratch. Add to this the additional choices to make about networking and state management and it can be quite overwhelming.
In terms of available developers for each technology, we can see from the Google Trends analysis that interest in Angular over time has typically dwarfed React, but this is changing. As React has gained popularity, its interest has slightly overtaken Angular in recent months.
Now, whilst search interest does indicate general trends in developer skillsets, it doesn’t necessarily correlate with the ability to find professionally skilled developers for a given technology. As interest grows, many developers may simply be experimenting with a new technology in their spare time.
If we turn to the Stack Overflow Developer Survey from this year we can see that 38% of respondents use Angular professionally, compared to only 28% using React in this context.
In theory this means it will be easier to find skilled Angular developers, but in practice as React shows such strong interest, it is equally likely you’ll be able to find a skilled React developer for your project too. At Waracle, mobile app development, we have both Angular and React skilled developers.
However, as we all know, finding the right team to take on a new project is only half of the story. As every successful project grows in scope and continues to be developed, it is important to consider the longevity and maintainability of the technologies you initially chose.
Maturity and maintainability
As mentioned earlier, the road to Angular 2+ has been very long and bumpy, but it has been worth it in the end as the tooling support (one of the key initial goals of the rewrite) is very good.
As new features are released, the tooling helps facilitate keeping up to date, and improvements in the tooling lead to more optimised application builds without the developer having to do anything. Because of this, breaking changes are less scary than they once would have been, and keeping up to date is relatively painless as the framework matures.
It is also worth pointing out that Google have continued to maintain AngularJS with bug fixes and improvements, and have committed to a three year support period from 2018 to cover critical issues. This is good news if you happen to be maintaining an AngularJS app, but it also bodes well for the future maintainability of Angular apps that are started now.
Where React is concerned, whilst the road to the 0.14 series was also quite bumpy, Facebook began to focus on making breaking changes in a more responsible manner starting with React version 15. Upcoming breaking changes now issue deprecation warnings in your application and give you time to migrate to the newer APIs.
The current stable release (version 16) has changed some core lifecycle methods, but also officially stabilised some long-used ‘experimental’ APIs, meaning future updates should be easier after reaching this point.
Due to React being lighter on tooling, whilst some breaking updates can be automated, not everything always can be. This means some updates can be more painful than others, although the improvements in the core library are usually worth it.
One notable annoyance with React has been the removal of older release documentation, making maintenance of existing (and potentially future) projects harder unless you keep up to date.
Decisions, decisions, and looking ahead
As with our previous article, the advice remains largely the same:
- Angular suits getting something off the ground quickly and offers clear guidelines on project structure for less experienced teams or larger projects
- React still gives more freedom but demands more responsibility and discipline in larger projects, so may be better suited on smaller applications
As projects scale, the TypeScript tooling in Angular can provide compelling benefits, but it is possible to enjoy the same with React projects if you put in a little more effort.
For smaller projects, the simplicity of React and a few well-chosen libraries may be all the structure you require, and it can certainly feel refreshing compared to the rigidity of the Angular framework.
Ultimately, the choice will depend on project requirements, availability of good developers, and which project structure fits well within your organisation.
Looking forward we can see both Google and Facebook are heavily invested in these frameworks, which means they should enjoy continued development and support for years to come, including updates to support the latest and greatest emerging standards. One such tech we’re particularly excited about are Progressive Web App capabilities being added to modern browsers, which allow delivering native features such as push notifications and offline experiences through your mobile web site.
About Waracle Mobile App Developers
Waracle is one of the UK’s top mobile app development companies. We offer full lifecycle mobile app and digital product services through conception, design, UX, UI, development and post launch optimisation. Waracle specialises in a widening range of digital products and technology: Mobile Web, iOS, Android, Hybrid, Native, Internet of Things (IoT), Voice and Augmented Reality (AR). Waracle help large UK and international organisations plan and execute their digital product strategy. Our mobile app developers have the skills and expertise required to help your enterprise innovate faster and deliver world class apps. Contact us today!
And, we’re always on the lookout for additional mobile app developers, so if you have experience in Angular or React, check out our vacancies.
Kumulos is a mobile App Performance Management (mAPM) and marketing automation platform. Kumulos gives mobile app developers a single-pane-of-glass to manage the technical and commercial performance of their mobile apps and run targeted push notification campaigns to drive up engagement. From a single SDK, Kumulos provides App Store Optimisation; Crash Reporting and Diagnostics; Audience, Engagement and Retention Analytics as well as Automated Push Notifications. Kumulos works with enterprises and specialist mobile app developers like Waracle, in over 20 different countries around the world, to help them deliver successful mobile apps for their clients. Contact Kumulos to book a demo or signup for a free trial.