- webextensions specific storage apis to return promises but chrome still needs callbacks
- A few UI differences between chrome's extension popup and firefox's one means you'll need to potentially leave out features for one browser.
- csp policies differs between chrome and firefox(and cors too I think)
- UX differences between browsers means you'll need to write extra code, and maybe a few extra tutorials.
- Difference between how permissions are interpreted on different browsers
- Huge huge difference between publishing on chrome vs on firefox
- Safari requires xcode, and therefore macos to publish
Plus, you probably still need a Mac or a virtualized Mac (for automated tests, for example) because you’ll want to test your extension with Safari to ensure it works correctly.
It is a limitation and it’s completely unnecessary for the end user.
If they’re so lazy to have a extensions-specific store they could at least offer an automatic wrapper that they run before publishing. I should not need XCode anywhere in my build to publish web extensions.
And there are services like https://www.browserstack.com/docs/automate/selenium/add-plug... where you can basically rent Mac VMs on cheap monthly plans. Or GitHub Actions, as I pointed to earlier, has a free tier with free minutes on an automated Mac terminal.
On one side Apple says they now offer a compatible API, on the other side you’re telling me dropping a minimum of $800 on a computer (+$100 annually) to release a free extension is the easy part.
BrowserStack would be a good solution to test it, but unfortunately you also need a lot of preparation and XCode-specific knowledge to even get to a testable point, which you don’t get unless you own a Mac.
The browsers that Apple claims to be compatible with don’t require anything more than WinZip.
Why not ask Apple to release macOS for any computer like Windows on x86? Why not ask for Safari to be published for and API compatible with Windows as on macOS? Why not ask Apple to ship Windows since mac-only APIs would be problematic?
Fact is, Apple requiring a Mac to publish for a Mac-only browser is not a problem. It’s not even true. You can code sign for Mac from Linux[1], as I understand it. Worst case, a third-party service will step in to handle packaging and publishing the way we already do for cross-platform native apps and yet Apple will continue to expect devs to test on their Apple devices.
I can run Firefox or Chrome on my Mac so it’s not like I’m missing out if you choose to not develop an extension for Safari and test it in Safari. I feel like you’re arguing that testing isn’t required if you have the right web standards, which is pretty much always false when there are privacy or other implementation details that vary by browser…
1. https://github.com/zhlynn/zsign
2. Apple’s codesign tool is open source: https://opensource.apple.com/source/security_systemkeychain/...
In that sense I agree with you; personally I think it was a mistake of Apple to have the Mac App Store so closely mirror the iOS App Store. They should have made it a more aggressively curated experience.
>
“A few UI differences between chrome's extension popup and firefox's one means you'll need to potentially leave out features for one browser. - UX differences between browsers means you'll need to write extra code, and maybe a few extra tutorials. - Huge huge difference between publishing on chrome vs on firefox - Safari requires xcode, and therefore macos to publish”
Bottom line is I don’t think there is going to be an api standard around “distribution and publishing areas”
Firefox also provides a polyfill to adapt the Chrome API to the WebExtensions standard.
More info here: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
Chrome published the WebExtensions API, not Mozilla. Whether or not it’s a standard is another question, you could call it a defacto standard, but Chrome definitely implemented the api that they published.
Mozilla as even stopped using the term WebExtensions, instead just going with Extensions [2]
The "spec" that most people refer to as WebExtensions, is BrowserExtensions orginally published by Microsoft via W3C [1]
[1] https://browserext.github.io/browserext/ [2] https://wiki.mozilla.org/Add-ons/Terminology#Background
[1] Extensions can change it, but they don't take effect until the tab for current page has loaded, which often defeats the purpose.
Mozilla make money from Google deals and so have outside incentives to not rock the boat too hard on this detail.
The goal is deprecation of "remote code" execution, where "remote" means remote to Vendor, but local to user, aka anything not shipped and signed by the extension store.