Mozilla said it will introduce a series of extension-specific changes in Firefox 66 to reduce the memory footprint of the browser while improving the performance of the add-ons. Specifically, the new version of Firefox will require extension developers to abandon JSON and instead use IndexedDB as the backend for local storage. This work will be done automatically when migrating to Firefox 66 without the intervention of a developer or end user.
Mike Conca, Product Manager, Firefox WebExtensions, explains, “this change is completely transparent to extension developers – you do not need to do anything to take advantage of this improvement. When users upgrade to Firefox 66, the local storage JSON file is silently migrated to IndexedDB. All extensions using the storage.local() API immediately realize the benefits, especially if they store small changes to large structures, as is true for ad-blockers, the most common and popular type of extension used in Firefox.”
Some of the highlights include:
- Another improvement was landed in Firefox so that it uses less memory when extensions load objects from storage into memory.
- The “Manage Extension Shortcuts” page now uses a default icon if no icon was included in the manifest file.
- Fixed a case where the window.close() API was not properly closing browser extension popups.
- Extension ports are no longer disconnected when switching tabs in Responsive Design Mode.
- By-passing tracking protection now works for domains listed as host permissions when those domains are used as iframes within an extension page.
- The permissions prompt no longer appears when newly added host permissions are a subset of host permissions that have already been granted.
- The webRequest API will now throw an error if you try to use it in blocking mode without declaring the webRequestBlocking permission
- Bookmarks context menu items, added in Firefox 59, now also appear in the bookmarks sidebar and library window.
- Manifest files with no specified default icon now throw an error.
- Firefox no longer emits a warning when the manifest property `background.persistent` is set to `true`.