JavaScript frameworks as browser add-ons

January 27, 2017

Performance and modularity

The general tendency in the web development world is to increase reusibility of completed web projects which eventually leads into a faster delivery of new products, updates, etc. That’s what’s always been obvious to experienced programmers when desiging software (modularity, loosly coupled classes, etc) is being supported from every possible angle (tooling, frameworks, repositories, even project planning) these days. Well, it’s good :)

The second important feature of web frameworks which has always been and always will be in a focus of attension is performance. There’s plenty of techniques used to improve performance and it will matter even more in coming years (companies tend to replace native mobile apps with html5 apps).

Let’s go a step further

It’s all cool but how about going a step further. What if we would install JavaScript frameworks as browsers add-ons?
Instead of downloading a “compiled” html5 app that includes all neccerary JavaScript libraries, we would just download our code that uses libraries that are already installed in our browser - would that not increase the performance and reduce bandwidth usage? I think it would.

Let’s take a classic example of two “incompatible” AngularJS frameworks. That could be just two independent browser add-ons. I’m sure Google could preinstall these two add-ons in Chrome, so batteries would be included.

There are already extensions that verify if there’s a specific framework used by a web page. Haven’t checked how’s that done but I can imagine the same approach could be used to replace http calls for downloading frameworks with calls to the installed add-ons. The question is could these calls (to our add-ons) be triggered before the browser loads a webpage? I don’t know yet to be honest but even if that’s not possible with existing browsers extensions’ API and requires changes in web browsers engine I think it still worth to consider it.

This is a simplified version of the flow as obviously users should agree to install these extensions and it could be triggered by the framework itself by adding a new API to the web engine.

Let’s summarise it up

  • it should be an optional choice accepted by users
  • “download once, use it often” (it’s not excluding neccecary updates) would save bandwidth and improve performance
  • each extension would address a specific framework version and browser
  • extensions should be signed and certified by a trusted authority
  • most likely it requires changes in the web engines but companies like Google are in an ideal situation to drive this idea as they own both a popular browser and a popular framework

I hope you like my idea. Maybe someone from the core teams working on popular frameworks or browsers would address this solution one day?.