The short answer, if you are after that, it is no you shouldn’t, yes it will create more trouble than benefits … especially if you are going for the 1.0 route.
That said, if you have more time, let me guide you through my rationale. With an almost steady growth, Angular has been implemented on over 450K sites out of the 1m analysed by BuildWith Trend, with top three verticals being Business, Shopping and Technology.
An interesting percentage, but when compared to the worldwide implementation (over 370m), the above translates in just a 0.1% adoption.
Therefore, it is a legitimate understanding as to why the framework hasn’t taken off. In my opinion, this is due to some factors out of which implementation costs, maintenance and marketing (SEO) benefits should stand up.
AngularJS has many positive aspects, but like every technology, this doesn’t mean it can be adopted everywhere. Think to Plutonium: initially used for warfare, but sooner after new applications in the medicine or energy domains was discovered.
Similarly with AngularJS, the complexity of certain websites is high. Implementing “SPA-like” models doesn’t make the deployment process any faster, and usability-wise such complexity can deteriorate the site performance at high speed. Equally, this is isn’t a war declaration against its usage.
Angular vs. SEO: The International Challenge
Depending on the application domain, AngularJS implementation has to be also (or mainly) a marketing driven decision.
Although certain search engines (Google and Bing) have become more confident at interpreting and rendering richer websites (meaning they can see content in the same way as modern web browsers do), such behaviour is not consistent.
Think of Yandex (Russia) and Baidu (China). Both engines struggle to digest simple JavaScript code like jQuery. Therefore, if the business is considering a move or is already operating in such markets, it would be useful in determining the impact of this technical decision beforehand.
Not only that, there are several emerging markets (e.g. India or South America) that have access to subpar devices with limited performance. Implementing AngularJS by moving the critical rendering path entirely to the client can only result in a poor user experience.
A number of websites were tested with Webpagetest.org site from several locations, showed CPU processing time rocketing with several seconds of delay on the rendering phase.
This once again challenges the adoption of the technology because as demonstrated from Amazon, every one second of delay stopped 100 visitors from converting.
Should I adopt AngularJS for my site?
Adopting AngularJS it may mean sitting on a time bomb ready to explode. As mentioned, the ready to go framework initially for web applications, has challenges in pure front-end applications.
Thus, without consideration, it has blinded the developer’s mind-set, forcing them to write code thinking about HOW to do things with AngularJS instead of WHAT the life-cycle should be. The downside here is that the additional complexity is practically useless.
Fortunately, the newer version of Angular 2.0, along with Angular Universal, seems to have re-established the right way of doing things. The application design now being distributed between the server and the client site at which a richer HTML boilerplate will be sent is likely to circumnavigate the issues previously created.
In general, Angular will be good at delivering things like:
A pagination system, having paginated elements on the client being replaced on demand and making a more fluid experience
Richer and interactive web parts, for instance on graphs whose data will be updated according to the user choice, limited data transmission only to the moving parts
On the contrary, AngularJS is not suited for pure static elements. For example, delivering the entire content of a blog is counterproductive as there will be anything on the client that will affect the layout or the data.
Key Take Away
Having a past background as a developer, there are two principles I learnt over time that applies very well to the AngularJS context. Those are:
KISS. Something that I often repeat to my team: Keep It Simple Stupid. Explain things like you are talking to a three years baby, and you are going to get people on your side very quickly. Applied to AngularJS, especially the 1.0, this should be read as avoiding over complications to the dynamics of your pages. As I said, Angular is good to enhance the experience, not to replace the design/delivery logic.
**YAGNI. You Aren’t Gonna Need It - Seriously. Leaving aside the SEO for a moment, think at your website and your users for a moment. Do you really need roughly 150Kb (or about 200Kb) of additional JS code on top of yours to make your website better? For the majority of sites I recently audited the answer was no, at least in the way how this was done.
So, before adopting Angular, make yourself a big favour and sketch a matrix to determine the benefits vs. the challenges that may arise. Don’t jump on the AngularJS bandwagon just because you want a trendy website or because your Head of Development suggested so.