Firefox 16 will be released next week. Here’s the list of changes that went into Firefox 16 that can affect add-on compatibility. There is more information available in Firefox 16 for Developers, so you should read that too.
- Mass CSS unprefixing. A very large number of CSS properties are no longer prefixed, so some of your CSS may break. When using prefixed CSS, make sure you also use the unprefixed form for forward compatibility. There’s more information in the MDN article and this post.
- Remove support for “java” DOM object. If you use Java in your extension, you’ll probably need to change the approach you use to get to the global java object. You should also consider moving away from Java if possible, given that Java is not well supported for add-ons, and your extension can suffer because of Java plugin blocklisting. The linked bug has information about workarounds.
- Unprefix IndexedDB. Another unprefixing that can affect some add-ons.
- Certificate of a signed extension is validated on each startup. The certificate in signed add-ons is now only checked on install time. We don’t expect it to have any negative effects, but you should tests carefully anyway if your add-on is signed.
- Refactor init/shutdown functions in browser.js. This affects add-ons that patch functions like BrowserStartup or delayedStartup in browser.js.
- nsClipboardPrivacyHandler uses global Private Browsing. This bug changes the way nsITransferable is used. This interface is commonly used for drag and drop and clipboard operations, and now it requires an init function call before it can be used. There are usage samples in this article.
- Bug 767134 breaks some nsIContentPolicy consumers. Comment #1 explains the change in detail, but the short version is that if you implement nsIContentPolicy and a URL is entered in the location bar, you will no longer get a chrome:// URL as the request origin argument.
- Remove cycle collection static initializers. This can affect binary add-ons that implement cycle collection for their own XPCOM classes.
- Firefox Command Line. While this is more useful for web developers, I’m sure there are creative ways to use this tool for add-on development, specially considering it was designed to be extensible. There’s no documentation for this yet, but you can start here. Also, theme developers should be aware of this new UI. You can find the styles in gcli.css.
- OS.File. This library makes file system access much easier, and it is exposed to chrome workers, which was a major limitation about worker usage in general. There’s more information about the motivation behind this library in this blog post.
- Create a shared Identity.jsm module. Persona (formerly known as BrowserID) had its Beta launch recently, and now Firefox includes a module that exposes this functionality. Give it a look and create awesome things
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 16, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen very soon, so check your email.