Edge, I’ve said no dammit!

Screenshot of Microsoft Edge Website

Microsoft’s web browser according to their side “puts you first” however unfortunately their tactics for promoting their browser certainly do not. In this article, I explore this problem, and basically why there are no (or few) reasons other than shameless self-promotion at the expense of user experience for Microsoft to do this. I must also make it abundantly clear I’m a fan of MS and Windows and as such, I do not write such an article lightly.

Windows 10 is at the moment my current daily driver and personally, I think it’s a great OS, I mean it’s stable, WSL lets me run Linux apps within Windows which is awesome for web and software development projects, and it’s awesome for gaming and has been since early days, I genuinely love that I barely need VM’s anymore, I mean I might use the odd Docker container but containers are awesomely handy and that’s a story for another day. I have few complaints, hardware support has been top-notch, I’ve never (if ever) had a BSOD which wasn’t my fault, sure there is the odd minor gripe such as the snipping tool hanging or the ctrl + alt + delete screen taking its sweet time to open, or the half baked “new” control panel, but honestly those I can tolerate as they’re bugs/regressions/in development. What bothers me most is the complete and utter disrespect for settings I’ve gone out of my way to set or preferences that I’ve already defined with regard to the web browser.

Browser Preference

I have little issue with changing browser preference being a bit more difficult in Windows 10 as honestly, I don’t think that’s an unreasonable security precaution as it makes the user definitively go out of their way to make a choice, as previously there was the problem that malicious applications would hijack the users’ browser preference sometimes by looking very similar to the users’ default browser as I mean let’s face it, the generic grey/white bars at the top of the screen and an address bar looks similar to the average user. Initially, this added difficulty frustrated me but I thought about it and now consider the change reasonable.

The fact that changing browser preference needs to be made so deliberately makes it all the more unforgivable that MS has gone out of its way to make many of its apps ignore this preference, not only that but frequently with major updates the user will be asked if they wish to change to Edge. If a user wanted Edge they would not have gone out of their way to change away from it! Less infuriating however still an annoyance given all of the badgerings is that but a Bing search for “Chrome” displays a banner once again attempting to divert you from your choice, a google search for Edge however the first link is to the Edge download page.

This lack of respect is why I absolutely refuse to use Edge, I mean it’s preinstalled as the default browser which surely is more than enough of an advantage! One might argue that MS needs its own browser for certain functionality however that’s honestly a weak argument as the very mechanism MS uses to redirect you to edge could be used for most functionality which a browser other than Edge does not provide as these allow calling of an external application from any browser.

Edge, Chrome, Safari, Firefox and fallbacks

A brief but important point is that 3 out of 4 of those browsers (as with many other common alternative browsers) are essentially based on or derived from WebKit the exception Firefox uses their own Gecko browser engine however all major browsers these days support a sufficiently overlapping subset of web standards to provide a good user experience for the vast majority of use cases with relatively small additional effort from the web developer, this is evidenced by the massive quantity of web sites which work well on many browsers. In the instances in which their pages don’t or require functionality which another browser certainly cannot support I would not object to MS redirecting via their own scheme handler as a “backup” as this would respect the users choice whilst not inhibiting any functionality, they could display this a message at the top of the screen on non-Edge browsers with a link just in case something didn’t render quite right.

URI Scheme Handlers

URI Scheme handlers are the likely mechanism of action for Edges + MS app’s redirection of web links. I don’t expect non-developers/IT professionals to understand these off the bat so I’ll give a brief rundown.

When it comes to the web, the URI scheme is generally used to denote protocol (HTTP/HTTPS/FTP etc.), for Windows the URI scheme tells it what application to launch and how to facilitate this Windows has simple mechanisms which allow for additional URI scheme handlers to be registered, any custom functionality could be handled using these. Security could be handled by passing a nonce to the browser when launched and back to the scheme handler when requesting other functions, for privileged operations user confirmation could be triggered from the scheme handler as the biggest security issue I can see is having an open endpoint which could perform privileged instructions without authentication.

The interesting thing is this is how MS ignores your browser preference, MS applications often prefix their links to MS own services with “microsoft-edge:” and Microsoft having registered a handler for said URI’s for Edge means that instead of launching your handler for HTTP or HTTPS (ie your web browser) it launches Edge. This is also the same mechanism that apps such as Edge Deflector use to correct this.

Code Snippet from EdgeDeflector demonstrating the relevant registry keys under HKCU\Software\Classes\${PRODUCT}.Microsoft-Edge setting URL to Microsoft-Edge and a shell\open\command to $installdir\${PRODUCT}.exe %1. and a blank string for URL Protocol.
A snippet from EdgeDeflector’s Installer demonstrating the relevant installer lines, within the application it

The likely caveat for MS with these approaches is that the amount of data that can be transferred may be limited however that is hardly an excuse as one could pass an identifier that said browser then uses to request the data required via a local Web Server, Web Socket, whatever is appropriate for the use case there are simple methods of implementing the same functionality.

Regardless of how MS spins it, I cannot see sufficient justification for them to prevent a user from using their browser of choice. If they wish to correct me with specific cases where another browser is insufficient where a workaround requires substantial effort worthy of rejecting a users browser preference, I’d love to hear it.

Windows 11 and my concerns

A big concern of mine with Windows 11 is that Microsoft has apparently taken an even stronger approach by breaking redirection of these schema’s one should not even need things like EdgeDeflector in the first place when an app such as this is respectful of their links (it avoids redirecting or rewriting any links even if they do not use the default search engine) is blocked it demonstrates a clear and willful disregard for their users’ choices.

Conclusion

I understand that Microsoft wants to drive adoption for these apps/services, I understand that Edge is an underdog but these kinds of tactics are unacceptable and provide a negative user experience. Personally, I’d have tried Edge again when they switched to being Chromium-based however as it stands and whilst MS uses these tactics that is not even an option. I genuinely hope that Microsoft changes tack as I don’t believe that these approaches benefit users or Microsoft.