{"id":8614,"date":"2019-02-15T14:04:43","date_gmt":"2019-02-15T22:04:43","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=8614"},"modified":"2019-02-15T14:05:34","modified_gmt":"2019-02-15T22:05:34","slug":"extensions-in-firefox-66","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/","title":{"rendered":"Extensions in Firefox 66"},"content":{"rendered":"<p>Firefox 66 is currently in beta and, for extension developers, the changes to the WebExtensions API center primarily around improving performance, stability, and the development experience. A total of <a href=\"https:\/\/mzl.la\/2BE6LkD\">30 issues<\/a> were resolved in Firefox 66, including contributions from several volunteer community members.<\/p>\n<h2>Major Performance Improvements for Storage<\/h2>\n<p>I want to start by highlighting an important change that has a major, positive impact for Firefox users. Starting in release 66, extensions use <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1406181\">IndexedDB as the backend<\/a> for local storage instead of a JSON file. This results in a significant performance improvement for many extensions, while simultaneously reducing the amount of memory that Firefox uses.<\/p>\n<p>This change is completely transparent to extension developers &#8211; you do not need to do anything to take advantage of this improvement. \u00a0When 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.<\/p>\n<p>The video below, using Adblock Plus as an example, shows the significant performance improvements that extension users could see.<\/p>\n<p><iframe loading=\"lazy\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/kblmHBmIcnY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<h2>Other Improvements<\/h2>\n<p>The remaining bug fixes and feature enhancements won\u2019t be as noticeable as the change to local storage, but they nevertheless raise the overall quality of the WebExtensions API and make the development experience better. \u00a0Some of the highlights include:<\/p>\n<ul>\n<li>Another improvement was landed in Firefox so that it uses less memory when <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1476032\">extensions load objects<\/a> from storage into memory.<\/li>\n<li>The \u201cManage Extension Shortcuts\u201d page now uses a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1520164\">default icon if no icon was included<\/a> in the manifest file.<\/li>\n<li>Fixed a case where the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1518598\">window.close() API was not properly closing browser extension popups<\/a>.<\/li>\n<li>Extension ports are <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1515077\">no longer disconnected when switching tabs<\/a> in Responsive Design Mode.<\/li>\n<li>By-passing tracking protection now works for domains listed as host permissions when those <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1509112\">domains are used as iframes<\/a> within an extension page.<\/li>\n<li>The permissions prompt no longer appears when <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1504018\">newly added host permissions are a subset<\/a> of host permissions that have already been granted.<\/li>\n<li>The webRequest API will now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1437258\">throw an error<\/a> if you try to use it in blocking mode without declaring the webRequestBlocking permission<\/li>\n<li>Bookmarks context menu items, added in Firefox 59, now also appear in the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1419195\">bookmarks sidebar and library<\/a> window.<\/li>\n<li>Manifest files with <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1419109\">no specified default icon<\/a> now throw an error.<\/li>\n<li>Firefox <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1370077\">no longer emits a warning<\/a> when the manifest property `background.persistent` is set to `true`.<\/li>\n<\/ul>\n<p>Thank you to everyone who contributed to the Firefox 66 release, but a special thank you to our volunteer community contributors, including: <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?user_id=600887\">tossj<\/a>, <a href=\"https:\/\/mozillians.org\/u\/varundey\/\">Varun Dey<\/a>, and <a href=\"https:\/\/mozillians.org\/u\/edward.i.wu\/\">Edward Wu<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox 66 is currently in beta and, for extension developers, the changes to the WebExtensions API center primarily around improving performance, stability, and the development experience. A total of 30 &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/\">Read more<\/a><\/p>\n","protected":false},"author":1526,"featured_media":8388,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,295,227,278886],"tags":[278873,278876,304460,278875,278871],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Extensions in Firefox 66 - Mozilla Add-ons Community Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Conca\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/\",\"name\":\"Extensions in Firefox 66 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png\",\"datePublished\":\"2019-02-15T22:04:43+00:00\",\"dateModified\":\"2019-02-15T22:05:34+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png\",\"width\":640,\"height\":640,\"caption\":\"Firefox Extensions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extensions in Firefox 66\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/\",\"name\":\"Mozilla Add-ons Community Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325\",\"name\":\"Mike Conca\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/04780e375a532aeb20ec1365ce163109?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/04780e375a532aeb20ec1365ce163109?s=96&d=mm&r=g\",\"caption\":\"Mike Conca\"},\"description\":\"Mike Conca is the Group Product Manager for the Firefox Web Platform, leading the product team responsible for the core web technologies in Firefox including JavaScript, DOM Web API, WebAssembly, storage, layout, media, and graphics.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/mconca\/\",\"https:\/\/x.com\/MikeConca\"],\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/mconcamozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Extensions in Firefox 66 - Mozilla Add-ons Community Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/","twitter_misc":{"Written by":"Mike Conca","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/","url":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/","name":"Extensions in Firefox 66 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png","datePublished":"2019-02-15T22:04:43+00:00","dateModified":"2019-02-15T22:05:34+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#primaryimage","url":"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png","contentUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png","width":640,"height":640,"caption":"Firefox Extensions"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2019\/02\/15\/extensions-in-firefox-66\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Extensions in Firefox 66"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/addons\/#website","url":"https:\/\/blog.mozilla.org\/addons\/","name":"Mozilla Add-ons Community Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325","name":"Mike Conca","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/04780e375a532aeb20ec1365ce163109?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/04780e375a532aeb20ec1365ce163109?s=96&d=mm&r=g","caption":"Mike Conca"},"description":"Mike Conca is the Group Product Manager for the Firefox Web Platform, leading the product team responsible for the core web technologies in Firefox including JavaScript, DOM Web API, WebAssembly, storage, layout, media, and graphics.","sameAs":["https:\/\/www.linkedin.com\/in\/mconca\/","https:\/\/x.com\/MikeConca"],"url":"https:\/\/blog.mozilla.org\/addons\/author\/mconcamozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8614"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/users\/1526"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=8614"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8614\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media\/8388"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=8614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=8614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=8614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}