The original “Total reach popup” was implemented as a simple title tag with a formatted text. Over time it evolved into full blown component with many features and much better design!

2. Leverage The Modern JavaScript (No Browsers, No Cry…)

Modern JavaScript is great! The ES6 stuff, modules, async methods, you name it… The only thing holding web back is the need to support some of the older browsers. This is usually solved by introducing a whole galaxy of tools like transpilers and bundlers in standard frontend projects.

Chrome extension development is different! Chrome is a evergreen browser so every user can be assumed to run the latest version which supports all the great stuff! This enables us to write good old (ehm new😅) JavaScript and just run it as it is.

Directly include and run plain JavaScript file? Seems like we have come full circle!

Example of using new JavaScript features without the need for transpilation

Also, as I was reminded by Martin Hochel this fact enables us to get a bit fancy and use WebComponents without much worries as they are well supported by the Chrome!

3. Predict And Ask For Reasonable Set Of Permissions From The Start

Most Chrome extensions will need to ask for at least some of the permissions to be able to do anything useful. For example, being able to make requests to the target website or sending logs to our server can be pretty useful.

User has to confirm set of requested permissions during the initial extension installation. Similarly, user has to confirm any additional permission that we add in future versions of our extension.

This unfortunately disables default auto update behaviour and can significantly prolong update timeframe. In the worst case scenario it can even lead to high uninstall rates because of the mistrust on the user’s side.

It is much better to ask for a reasonable set of permission from the start instead of asking for a new permission with every new release!

For example, during the development of Medium Enhanced Stats I could have foreseen the need for logging and the related URL permission even though it was added much later.

Similarly, it would made sense to ask for storage permission which is needed to implement any “over time” features like checking if user has reached the next milestone or how have the views changed compared to the last month…

Permissions currently used by Medium Enhanced Stats

Follow me on Twitter to get notified about the newest Angular blog posts and interesting frontend stuff

4. Automate The Collection Of Specific Feedback

Getting quality feedback is one of the most important things in the whole software development endeavour

The more feedback we can get the faster we can fix all the issues which are not obvious to us as developers but are painstakingly clear for the end users!

W ouldn’t it be great to get feedback from users who uninstalled our extension? I mean, they liked it enough to install it in the first place so something must have gone wrong...

Was it riddled by bugs?

Did it keep crashing?

Did they expect it to do something else?

The truth is we have no clue and the best way to figure this out is to give users the opportunity to vent their frustration in the most frictionless way possible!

Chrome extensions provides us with a feature that enables us to setUninstallURL which can be used to collect this kind of feedback. The implementation involves setting of an uninstall URL for every new user (the install event) and also for every existing user updating to a latest version of the extension (the update event).

Implementation of the uninstall feedback collection

The uninstall URL can then point to the fancy form on our website or even to a modest Google Form which can work just fine while requiring very little investment to get it up and running! ROI 🤑🤑🤑

Example of a Google extension uninstall feedback collection with help of Google Forms

5. Realize That Fixing Of A Bug Can Take Longer Than You Would Expect (Mobile Devs Know…)

We’re used to being able to fix bugs immediately, at least in the web application development. The fix is live immediately after it was deployed for all new user sessions. This is NOT the case with extension development.

Fixing the bug is just the beginning. Once fixed we have to create a new release that needs to be published in the Chrome Web Store. The fix may still take quite some time until it will be distributed to all our users. Check out the following versions chart. It can easily take more than five days until the majority of the users update to the next version!