Why the Proliferation of Front End Frameworks and Libraries in Recent Years?

It seems like every 6 months or so, a new front-end JavaScript framework or library appears from the ether, proclaiming to be the definite tool for single page application (SPA) or front-end web development. With the number of options increasing as time progresses, it can be difficult and time-consuming to choose a framework for developing front-end-heavy web applications. Are developers misallocating their time and efforts in developing and learning these frameworks? Is there a real need for these frameworks, other than a desire to use the latest tool? What is the reasoning behind Facebook, Google, and many other companies investing resources in these frameworks and libraries?

Before the onslaught of front-end frameworks, if you wanted to create a web app that mimics native mobile apps, you would generally use jQuery to create that app. But as complexity increased with the development of web applications, jQuery was not enough to keep a developer's productivity up and application complexity down. In came front-end frameworks, such as Backbone, Angular, Ember, and React to fill the niche that jQuery could not satisfactorily fill. The creators of these frameworks saw a need to abstract away the many common requirements of developing single page applications. Soon their adoption level increased as developers increasingly hopped on the single page application bandwagon.

The emergence of mobile applications is one of the reasons for the proliferation of these frameworks. Native mobile apps' low-latency user interaction allows for higher user engagement and longer usage of the apps. With Apple and Google attempting to carve out a closed ecosystem with iOS and Android operating systems, app makers must find ways to stay competitive with products built specifically for iOS and Android. To stay competitive, web developers seek to offer the same user experience as native apps while utilizing familiar web-based technologies. Web-based apps built using these frameworks offer almost the same performance as native apps on mobile devices, while not requiring the user to download and update the app. Web apps built this way also avoid going through the app store approval process and go straight to any user's device through their browser. The benefits of web apps such as immediate bug fixing and continuous feature delivery are also available when using these frameworks.

For apps that must serve multiple devices, these frameworks allow the developer to create a cohesive user experience. Best practices were adopted from mobile app development by web developers to create this cohesive experience. Minimizing screen touches became minimizing button clicks. Endless pagination appeared on many websites after native apps incorporated similar features. Competition from native apps has created better web based apps. Apps are now more focused with regards to their functionality and content.

Front-end frameworks provide many abstractions to make developing web-based apps simpler, quicker, and cost efficient. Community adoption is another critical factor when evaluating these frameworks. ‚ÄčThe open-source nature of these frameworks and libraries also allows their users to benefit from open-source community contributions including bug fixes, feature enhancement, and new feature creation. Best practices and support are easily shared through Stack Overflow and other forums. For the frameworks that are widely adopted, user communities grow to support their usage and growth.

With the proliferations of these front end frameworks, many have complained that there are too many choices while some champion one framework and disparage other frameworks. What is the right course of action for developers looking to build single page apps? Developers must evaluate their needs and reconcile those needs with the features offered by each framework.