Firefox 30 will be released on June 10th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 30 for Developers, so you should read that too.
- Move some addon-private JSM’s to a subdirectory. A large number of number of JS modules used in the Add-ons Manager were moved to a different path. They include AddonRepository.jsm, LightweightThemeImageOptimizer.jsm, XPIProvider.jsm, AddonUpdateChecker.jsm, AddonLogging.jsm, PluginProvider.jsm, AddonRepository_SQLiteMigrator.jsm, XPIProviderUtils.js and SpellCheckDictionaryBootstrap.js. The new path is
- Make the Object.prototype.__proto__ setter warn about perf impact.
setPrototypeOfshouldn’t be used to set prototypes due to their performance impact.
Object.createcan be used as an alternative.
- Disallow calling WebIDL constructors as functions for system callers in non-release builds. This throws an error if you try to invoke the constructor of certain global objects without the
newkeyword. Note that this is disabled for release versions, but it’s a first step in disallowing it entirely.
- Get rid of related code of NS_VK_ENTER and nsIDOMKeyEvent::DOM_VK_ENTER. The
_VK_ENTERconstants have been removed, which shouldn’t break any code since they were never used in key events, but it’s still a good idea to look for and remove any references to this in your code.
- Content processes should get different widgets than the main process. This breaks binary XPCOM compatibility for add-ons that try to be compatible with multiple versions of Firefox.
- Preferences should not be allowed to be accessed off of the main thread.
- Drop support for Blob.mozSlice.
- Implement plugin whitelist. This shouldn’t have an effect for extensions in general, but it’s worth pointing out. As it was announced a while ago, most plugins will require action from the user’s side in order to be activated, and developers have the option to request being added to the plugin whitelist. Major plugins like Adobe Flash are already whitelisted. If you use plugins as part of your add-on, we strongly recommend that you move to other alternatives as soon as possible.
- Australis UI features. Some of the new Australis features missed the Firefox 29 train, but they are now available on 30.
- Blinking caret in panel text. We hear about this bug all the time, so I’m very glad to see it fixed.
- Changes to unsafeWindow for the Add-on SDK. If you use
unsafeWindowin your content script, you should read this article.
These aren’t really new developer features, but they’re a couple of bug fixed that don’t break compatibility and you might find useful.
- -moz-os-version media query is not working on Windows 8.1. Note that this bug was fixed on 29.0.1, but I wanted to highlight it in case anyone missed it.
- No getPrefsByName replacement in nsIContentPrefService2.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 30, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen soon, so keep an eye on your email if you have an add-on listed on our site with its compatibility set to Firefox 29.