Running in the mode we do, our platform support for WebExtensions in Basilisk is basic, mostly limited to cross-browser content manipulation, and won't be extended with Mozilla-specific APIs, mainly because we already have existing APIs that can be fully used from XUL extensions. This makes our WebExtension support increasingly at odds with what "gecko" targeting WebExtensions expect.
After some discussion we've decided to completely drop WebExtension support from the platform. The reasons for this are many, a lot of them technical in nature, but the main points behind this decision are:
- Increasing disparity with the "gecko" target, as explained above.
- The large security attack surface WEs pose. Some taste of that became public knowledge recently with web content being able to steal browser data through WEs.
Aside from that though, there is constant upkeep in security bugs (undisclosed) dealing with WEs. - The non-native nature of WE interface elements in a XUL-based application. A whole bunch of hacks are needed to integrate web content widgets in the XUL UIs.
- XUL extensions already offer anything WEs can do, and then some, without the need for writing new WE APIs for specific extensions, each with their own maintenance and risks.
there is simply no long-term solution for keeping WebExtension support in UXP that is going to work. Mozilla will keep changing the way WebExtensions work in Firefox, and our platform and browsers are simply too far removed from their direction (let alone the immense effort needed that we don't have the manpower for) to keep parity. Extension developers will not cater their WebExtension development to us either, since we can simply not give them the WE APIs they will be needing to extend the browser. BUT at the same time we do already have what extension developers might need available in the extension technologies (XUL Overlay, bootstrapped and Jetpack) we do support (which Mozilla dropped).
So, ultimately what we're doing here is focusing more on XUL and the potential it offers.
Please note that when this change lands in Basilisk, the browser will very likely automatically remove all installed WebExtensions from your browser profile since they will become invalid extensions.
We're sorry if this causes you inconvenience, but it is a decision that must be made for the long-term health of the platform and its applications.