{"id":8233,"date":"2017-08-10T13:23:47","date_gmt":"2017-08-10T20:23:47","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=8233"},"modified":"2017-08-21T09:05:03","modified_gmt":"2017-08-21T16:05:03","slug":"webextensions-firefox-56","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/","title":{"rendered":"WebExtensions in Firefox 56"},"content":{"rendered":"<p><a href=\"https:\/\/wiki.mozilla.org\/RapidRelease\/Calendar#Future_branch_dates\">Firefox 56<\/a> landed in Beta this week, so it\u2019s time for another update on the<a href=\"https:\/\/wiki.mozilla.org\/WebExtensions\"> WebExtensions<\/a> transition. Documentation for the APIs discussed here can be <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\">found on MDN Web Docs<\/a>.<\/p>\n<h2>API changes<\/h2>\n<p>The <code>browsingData<\/code> API can now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1376991\">remove cookies by host<\/a>. The initial implementation of <code>browsingData<\/code> has landed for Android with support for the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1362994\">settings<\/a> and <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1362998\"><code>removeCookies<\/code><\/a> APIs.<\/p>\n<p>The <code>contextMenus<\/code> API also has a few improvements. The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1343236\">text of the link<\/a> is now included in the <code>onClickData<\/code> event and text selection is no longer limited to <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1338898\">150 characters<\/a>. Optional <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1369577\">permission requests<\/a> can now also be triggered from context menus.<\/p>\n<p>An alternative, more general namespace was added, called <code>browser.menus<\/code>. It supports the same API and all existing menu contexts, plus a new one that allows you to add items to the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1268020\">Tools menu<\/a>. You can also provide <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1321544\">different icons<\/a> for your menu items. For example:<\/p>\n<pre>browser.menus.create({\r\n  id: \"sort-tabs\",\r\n  title: \"A-Z\",\r\n  contexts: [\"tools_menu\"],\r\n  icons: {\r\n   16: \"icon-16-context-menu.png\",\r\n  },\r\n});\r\n\r\n<a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-8240\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png\" alt=\"\" width=\"401\" height=\"237\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png 676w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07-252x149.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07-600x355.png 600w\" sizes=\"(max-width: 401px) 100vw, 401px\" \/><\/a>\r\n\r\n<\/pre>\n<p>The <code>windows<\/code> API now has the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1333376\">ability to read and preface the title<\/a> of the window object, by passing titlePreface to the window object. This allows extensions to label different windows so they\u2019re easier to distinguish.<\/p>\n<p>The <code>downloads.open<\/code> API now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1369782\">requires user interaction<\/a> to be called. This mirrors the Chrome API which also requires user interaction. You can now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1369146\">download a blob<\/a> created in a background page.<\/p>\n<p>The <code>tabs<\/code> API has <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1269300\">new printing APIs<\/a>. The <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/print\"><code>tabs.print<\/code><\/a>, <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/printPreview\"><code>tabs.printPreview<\/code><\/a> and <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/saveAsPDF\"><code>tabs.saveAsPDF<\/code><\/a> (not on <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1386805\">Mac OS X)<\/a> methods will bring up the respective print dialogs for the page. The <code>tabs.Tab<\/code> object now includes the time the tab was <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1348911\">lastAccessed<\/a>.<\/p>\n<p>The <code>webRequests<\/code> API can now monitor <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1382834\">web socket connections<\/a> (<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1373639#c6\">but not the messages<\/a>) \u00a0by specifying <code>ws:\/\/<\/code> or <code>wss:\/\/<\/code> in the match pattern. Similarly the match patterns now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1271354\">support moz-extension URLs<\/a>, however this only applies to the same extension. Importantly a HTTP 302 <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1380186\">redirection to a moz-extension page will now work<\/a>. For example, this was a common use case for extensions that integrated with OAuth.<\/p>\n<p>The <code>pageActions<\/code> API can now be shown on a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1300811\">per tab basis on Android<\/a>.<\/p>\n<p>The <code>privacy<\/code> API gained two new APIs. The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1361364\"><code>privacy.services.passwordSavingEnabled<\/code><\/a> API allows an extension to toggle the preferences that control password saving. The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1362787\"><code>privacy.websites.referrersEnabled<\/code><\/a> API allows an extension to toggle the preferences that control the sending of HTTP Referrer headers.<\/p>\n<p>A new API to control <code>browserSettings<\/code> has been added with an API to disable the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1364936\">browser\u2019s cache<\/a>. We\u2019ll use this API for similar settings in the future.<\/p>\n<p>In WebExtensions, we manage the changing of preferences and effects when extensions get uninstalled. This management was <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1330494\">applied to chrome_url_overrides<\/a>. The same management now prevents extensions overriding <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1368545\">user changed preferences<\/a>.<\/p>\n<p>The <code>theming<\/code> API gained a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1373850\">reset method<\/a> which can be called after an update to reset Firefox to the default theme.<\/p>\n<p>The <code>proxy<\/code> API now has the ability to clear out a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1371879\">previously registered proxy.<\/a><\/p>\n<p>If you\u2019d like store a large amount of data in indexedDB (something we recommend over <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Storage\"><code>storage.local<\/code><\/a>) then you can do so by requesting the unlimitedStorage permission. Requesting this will <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1331618\">stop indexedDB prompting<\/a> the user for permission to store a large amount of data.<\/p>\n<p>The <code>management<\/code> API has added <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1282981\"><code>get<\/code> and <code>getAll<\/code><\/a> commands. This allows extensions to query existing add-ons to spot any potential conflicts with other content.<\/p>\n<p>Finally, the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1341304\"><code>devtools.panels.elements.onSelectionChanged<\/code><\/a> API landed and extensions that use the developer tools will find that their <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1347108\">panels open faster<\/a>.<\/p>\n<h2>Out of process extensions<\/h2>\n<p>We first mentioned out of process extensions back in the <a href=\"https:\/\/blog.mozilla.org\/addons\/2016\/11\/18\/webextensions-in-firefox-52\/\">WebExtensions in Firefox 52<\/a> blog post. They\u2019ve been a project that started back in 2016, but they have <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1357486\">now been turned on for Windows users in Firefox 56<\/a>. This is a huge milestone and a lot of work from the team.<\/p>\n<p>This means that all the WebExtensions will run in their own process (that\u2019s one process for all extensions). This has many advantages, but chief among them are \u00a0performance, security, and crash handling. For example, a crash in a WebExtension will no longer bring down Firefox. Content scripts from WebExtensions are still handled by the content process.<\/p>\n<p>With the new WebExtensions architecture this change was completed with zero changes by extension developers, a significant improvement over the legacy extension environment.<\/p>\n<p>There are some remaining bugs on Linux and OS X that prevent us from enabling it there, but we hope to enable those in the coming releases.<\/p>\n<p>Along with measuring the performance of out of process, we\u2019ve added in <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1356323\">multiple telemetry signals<\/a> to measure the performance of WebExtensions. \u00a0For example, it was recently found that <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Storage\">storage.local.set<\/a> was slow. With some improvements, we\u2019ve seen a <a href=\"https:\/\/telemetry.mozilla.org\/new-pipeline\/evo.html#!cumulative=0&amp;end_date=2017-08-09&amp;keys=__none__!__none__!__none__&amp;max_channel_version=nightly%252F57&amp;measure=WEBEXT_STORAGE_LOCAL_SET_MS&amp;min_channel_version=null&amp;processType=*&amp;product=Firefox&amp;sanitize=1&amp;sort_keys=submissions&amp;start_date=2017-08-02&amp;table=0&amp;trim=1&amp;use_submission_date=0\">significant performance boost<\/a> from a median of over 200ms down to around 25ms:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-8236\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3-252x81.png\" alt=\"\" width=\"400\" height=\"128\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3-252x81.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3-768x245.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3-600x192.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image3.png 1999w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<p>These telemetry measures conform to the <a href=\"https:\/\/www.mozilla.org\/en-US\/privacy\/firefox\/#telemetry\">standard Mozilla telemetry guidelines<\/a>.<\/p>\n<h2>about:debugging<\/h2>\n<p>The about:debugging page got some more improvements:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-8234\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1-252x98.png\" alt=\"\" width=\"400\" height=\"155\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1-252x98.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1-768x298.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1-600x233.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image1.png 1999w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<p>The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1380818\">add-on ID<\/a> has been added to the page. If there\u2019s a warning about processing the add-on, that will now be <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1330732\">shown next to the extension<\/a>. Perhaps most useful to those working on their first add-on, if an add-on fails to load because of a problem, then no problem\u2014there\u2019s now an <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1376941\">easy \u201cretry\u201d button<\/a> for you to press:<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-8235\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2-252x18.png\" alt=\"\" width=\"400\" height=\"28\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2-252x18.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2-768x54.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2-600x42.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/image2.png 1999w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<h2>Contributors<\/h2>\n<p>Thank you once again to our many contributors for this release, especially our volunteers including: <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=spectre%40floodgap.com\">Cameron Kaiser<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=dw-dev%40gmx.com\">dw-dev<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=g.maone%40informaction.com\">Giorgio Maone<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=swapneshks%40gmail.com\">Swapnesh Kumar Sahoo<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=timothy%40idioticdev.com\">Timothy Johnson<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=tushar.saini1285%40gmail.com\">Tushar Saini<\/a> and <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=tomica%40gmail.com\">Tomislav Jovanovic<\/a>.<\/p>\n<p><strong>Update<\/strong>: improved the quality of the image for context menus and removed the line about &#8220;twice as long&#8230;&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox 56 landed in Beta this week, so it\u2019s time for another update on the WebExtensions transition. Documentation for the APIs discussed here can be found on MDN Web Docs. &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/\">Read more<\/a><\/p>\n","protected":false},"author":271,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[278886],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WebExtensions in Firefox 56 - 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\/2017\/08\/10\/webextensions-firefox-56\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andy McKay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/\",\"name\":\"WebExtensions in Firefox 56 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png\",\"datePublished\":\"2017-08-10T20:23:47+00:00\",\"dateModified\":\"2017-08-21T16:05:03+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png\",\"width\":676,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WebExtensions in Firefox 56\"}]},{\"@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\/7e1881db0e8a23a4a06695f8a0efd6b8\",\"name\":\"Andy McKay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"caption\":\"Andy McKay\"},\"description\":\"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.\",\"sameAs\":[\"http:\/\/mckay.pub\",\"https:\/\/x.com\/andymckay\"],\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WebExtensions in Firefox 56 - 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\/2017\/08\/10\/webextensions-firefox-56\/","twitter_misc":{"Written by":"Andy McKay","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/","url":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/","name":"WebExtensions in Firefox 56 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png","datePublished":"2017-08-10T20:23:47+00:00","dateModified":"2017-08-21T16:05:03+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#primaryimage","url":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png","contentUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/08\/Screenshot-2017-08-10-19.45.07.png","width":676,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/08\/10\/webextensions-firefox-56\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"WebExtensions in Firefox 56"}]},{"@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\/7e1881db0e8a23a4a06695f8a0efd6b8","name":"Andy McKay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","caption":"Andy McKay"},"description":"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.","sameAs":["http:\/\/mckay.pub","https:\/\/x.com\/andymckay"],"url":"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8233"}],"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\/271"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=8233"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8233\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=8233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=8233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=8233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}