{"id":8330,"date":"2017-11-20T16:26:51","date_gmt":"2017-11-21T00:26:51","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=8330"},"modified":"2019-11-18T07:10:02","modified_gmt":"2019-11-18T15:10:02","slug":"extensions-in-firefox-58","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/","title":{"rendered":"Extensions in Firefox 58"},"content":{"rendered":"<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft wp-image-8296\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small-160x160.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a>With the release of <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/new\/\">Firefox Quantum<\/a> on November 14, 2017, we officially entered a WebExtensions-only world for add-on development. While that event was certainly the <a href=\"https:\/\/www.cnet.com\/news\/firefox-quantum-update-mozilla-brings-speed-and-a-new-look\/\">news<\/a> <a href=\"http:\/\/www.newsweek.com\/mozilla-firefox-quantum-download-windows-browser-chrome-711765\">of<\/a> <a href=\"https:\/\/www.express.co.uk\/life-style\/science-technology\/879822\/Google-Chrome-vs-Firefox-Quantum-Web-Browser-Speed\">the<\/a> <a href=\"http:\/\/www.ibtimes.co.in\/forget-uc-browser-mozilla-launches-faster-new-firefox-quantum-browser-android-ios-desktop-749496\">day<\/a>, <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/channel\/desktop\/\">Firefox 58<\/a> quietly entered Beta and a host of new APIs and improvements landed. As always, documentation for the APIs discussed here can be found on <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\">MDN Web Docs<\/a>.<\/p>\n<h2>Additional Theme API<\/h2>\n<p>The API around themes continues to grow, allowing you customize even more of the browser appearance. In Firefox 58, you can now:<\/p>\n<ul>\n<li>Change the color of the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1347190\">top, bottom and vertical separator<\/a> for the toolbar.<\/li>\n<li>Use <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1412595\">colors.bookmark_text<\/a> as an alias for colors.toolbar_text to better support porting themes from Chrome to Firefox.<\/li>\n<li>Use <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/theme\/getCurrent\">theme.getCurrent()<\/a> to get the ID of the current theme (on a per window basis, if desired).<\/li>\n<li>Listen for<a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/theme\/onUpdated\"> theme.onUpdated()<\/a> to know when a static theme is installed or uninstalled, or a dynamic theme is updated.<\/li>\n<\/ul>\n<h2>Reader Mode API Added to Tabs<\/h2>\n<p>The API available for interacting with tabs continues to grow. Firefox <a href=\"https:\/\/support.mozilla.org\/en-US\/kb\/firefox-reader-view-clutter-free-web-pages\">reader view<\/a> (or reader mode) strips away clutter like buttons, ads and background images, and changes the page&#8217;s text size, contrast, and layout for better readability. It can even read the page out loud to you, if you want.<\/p>\n<p>The image below shows a page that can be viewed in reader mode, indicated by the page icon in the URL bar (circled in red).<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-8340 size-large\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3-600x451.png\" alt=\"MDN article in Normal Mode.\" width=\"600\" height=\"451\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3-600x451.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3-252x189.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3-768x577.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image3.png 808w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a>Clicking on the icon puts the page in reader mode, removing most of the page elements except the text and adding buttons to the left-hand side that modify the reading experience.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-8341 size-large\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4-600x426.png\" alt=\"MDN article in Reader Mode.\" width=\"600\" height=\"426\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4-600x426.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4-252x179.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4-768x545.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image4.png 815w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a>This powerful browser feature is now available via the WebExtensions API.<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/Tab\">tabs.Tab.isArticle<\/a> &#8211; boolean value shows if a tab is an article and thus supports reader mode<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/Tab\">tabs.Tab.isInReaderMode<\/a> &#8211; boolean value reports if a tab is currently in reader mode or not<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/toggleReaderMode\">tabs.toggleReaderMode()<\/a> &#8211; toggle a tab in or out of reader mode (isArticle must be TRUE to have any effect)<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/create\">tabs.create(&#8230;, openInReaderMode)<\/a> &#8211; new parameter that determines if a new tab should be created and initially displayed in reader mode<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/tabs\/onUpdated\">tabs.onUpdated.addListener()<\/a> &#8211; a tab will notify you when it goes into and out of reader mode<\/li>\n<\/ul>\n<h2>Improved webRequest API<\/h2>\n<p>Extensions can now easily get the entire URL ancestor chain, even in an HTTP environment. webRequest.onBeforeRequest() now includes another parameter in its callback object called <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/webRequest\/onBeforeRequest#details\">frameAncestors<\/a>. This is an array that contains information for each document in the frame hierarchy up to the top-level document.<\/p>\n<p>Additionally, to enable proxy authorization to work smoothly, \u00a0webRequest.onAuthRequired() <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/webRequest\/onAuthRequired#Proxy_authorization\">now fires for system events<\/a>. If an extension has the correct permissions, it will be able to use onAuthRequired to supply credentials for proxy authorization.<\/p>\n<h2>Flexible XHR and Fetch Headers<\/h2>\n<p>When a content script makes requests using the standard <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/XMLHttpRequest\">window.XMLHttpRequest<\/a> or<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\"> window.fetch()<\/a> API, the<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Origin\"> Origin<\/a> and<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Referer\"> Referer<\/a> headers are not set like they would be when requests come from the web page itself. This is often desirable in a cross-domain situation so that the content script does not appear to come from a different domain.<\/p>\n<p>However, some sites only allow XHR and fetch to retrieve content if the correct Referer and Origin headers are set. Starting in Firefox 58, the WebExtensions API permits the use of <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/Content_scripts#XHR_and_Fetch\">content.XMLHttpRequest() and content.fetch()<\/a> to perform requests that look as if they were sent by the web page content itself.<\/p>\n<h2>Improved Content Security Policy (CSP) Handling<\/h2>\n<p>Work also continues in the <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/Content_Security_Policy\">WebExtensions CSP<\/a> area. Starting with Firefox 58, the CSP of a web page <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1267027\">does not apply<\/a> to content inserted by an extension. This allows, for example, the extension to load its own resources into a page.<\/p>\n<p>This is a fairly large effort requiring some substantial architectural work. In Firefox 58, the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1406278\">first part<\/a> of this work has landed, permitting basic injection of content generated by DOM APIs. There will be follow-ups for parser-generated content and inline stylesheets and scripts.<\/p>\n<h2>Setting the Default Search Engine<\/h2>\n<p>Using <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/manifest.json\/chrome_settings_overrides\">chrome_settings_override<\/a>, an extension can now install a new default search engine by <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/manifest.json\/chrome_settings_overrides#Syntax\">setting the is_default key to TRUE<\/a>. \u00a0To protect the user, this cannot be done silently and the user will see an additional dialog that prompts them to confirm the change.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-8339\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image2.png\" alt=\"Search Engine Confirmation\" width=\"519\" height=\"441\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image2.png 519w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image2-252x214.png 252w\" sizes=\"(max-width: 519px) 100vw, 519px\" \/><\/a>The user will also see if their default search engine has been overridden in the Options (about:preferences) page, which is explained in more detail below.<\/p>\n<h2>User Notification of Extensions Overrides<\/h2>\n<p>As the scope and power of the WebExtensions API increases, it is important to maintain the user\u2019s security and privacy. In addition to the permission dialog that a user sees upon installation, Firefox tries to make sure that users are aware of which parts of the browser are under the control of an extension, and provide a way for them to revert back to default behavior, if desired.<\/p>\n<p>Firefox 58 landed a couple of features in this area. First, when an extension has taken <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1373853\">control of the New Tab Page<\/a>, a notice is shown in Options (about:preferences) along with a button to disable the extension. \u00a0This is shown in the screenshot below.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-large wp-image-8343\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6-600x348.png\" alt=\"Extension Overrides\" width=\"600\" height=\"348\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6-600x348.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6-252x146.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6-768x445.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image6.png 846w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a>Along similar lines, if an extension has set a user\u2019s <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1386018\">default search engine<\/a>, this will be shown on the Options (about:preferences) page.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-large wp-image-8338\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1-600x208.png\" alt=\"Extension Overrides\" width=\"600\" height=\"208\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1-600x208.png 600w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1-252x87.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1-768x267.png 768w, https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image1.png 850w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a>Over the next few releases expect to see Firefox show even more areas where an extension is in control of a browser behavior along with options to revert back to a default state.<\/p>\n<h2>Additional Privacy Controls<\/h2>\n<p>In keeping with Mozilla\u2019s mission to protect an individual\u2019s online security and privacy, two new <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/types\/BrowserSetting\">browser settings<\/a> related to user privacy are now exposed via the WebExtensions API. \u00a0Within <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/privacy\/websites\">privacy.websites<\/a>, we\u2019ve added:<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/privacy\/websites#Properties\">firstPartyIsolate<\/a> &#8211; This preference makes the browser associate all data (including cookies, HSTS data, cached images, and more) for any third party domains with the domain in the address bar.<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/privacy\/websites#Properties\">resistFingerprinting<\/a> &#8211; Browser fingerprinting is the practice by which websites collect data associated with the browser or the device it&#8217;s running on to personally identify you. This preference makes the browser report spoofed information for data that&#8217;s commonly used for fingerprinting.<\/li>\n<\/ul>\n<h2>Browser Action Fixes<\/h2>\n<p>A number of changes landed in Firefox 58 that fix issues with Browser Action buttons:<\/p>\n<ul>\n<li>The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1395074\">icon badge clears<\/a> as requested when you browse away from a page.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1314674\">Badge style, including text color, is maintained<\/a> when opening a new window or entering customize mode.<\/li>\n<li>The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1404568\">correct icon is now used for dark themes<\/a> as well as when the icon is part of the overflow panel.<\/li>\n<\/ul>\n<h2>Support for PKCS #11 Security Devices<\/h2>\n<p>Firefox supports manual installation of external security devices via a dialog under the Options (about:preferences) screen. Now, WebExtensions includes API support for<a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/pkcs11\"> PKCS #11 security devices<\/a>. Similar to <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/Native_messaging\">native messaging<\/a> and <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/storage\/managed\">managed storage<\/a>, a native manifest must be installed outside of an extension before the API become useful.<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Add-ons\/WebExtensions\/API\/pkcs11\/getModuleSlots\">pkcs11.getModuleSlots()<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Add-ons\/WebExtensions\/API\/pkcs11\/installModule\">pkcs11.installModule()<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Add-ons\/WebExtensions\/API\/pkcs11\/isModuleInstalled\">pkcs11.isModuleInstalled()<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Add-ons\/WebExtensions\/API\/pkcs11\/uninstallModule\">pkcs11.uninstallModule()<\/a><\/li>\n<\/ul>\n<h2>Android<\/h2>\n<p>On Android, users get install-time prompts for WebExtension permissions, but under Firefox 58 they now also get prompts when an extension adds additional permissions at runtime.<\/p>\n<h2><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image5.gif\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-8342\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/11\/image5.gif\" alt=\"\" width=\"444\" height=\"885\" \/><\/a>Miscellaneous Changes<\/h2>\n<ul>\n<li>The browsingData API now supports <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1333050\">clearing the indexedDB<\/a> storage area<\/li>\n<li>The browsingData API supports <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1388428\">clearing localStorage by hostname<\/a>, similar to cookies<\/li>\n<li>Extensions can now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1364942\">disable web API notifications<\/a><\/li>\n<li>The download API will respect the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1394851\">user\u2019s \u201cSave As\u201d preference<\/a><\/li>\n<li>The \u201cUnresponsive Script\u201d dialog now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1402503\">shows the extension\u2019s name<\/a><\/li>\n<\/ul>\n<h2>More to Come<\/h2>\n<p>The items above represent some of the bigger changes, but Firefox 58 landed a total of 79 items in the WebExtensions area. Thank you to everyone who had a part in getting Firefox 58 to Beta, especially volunteer contributors <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=apoorvasingh2811%40gmail.com\">apoorvasingh2811<\/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=evilpies%40gmail.com\">Tom Schuster<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=kevinhowjones%40gmail.com\">Kevin Jones<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=moz-ian%40perix.co.uk\">Ian Moody<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=ntim.bugs%40gmail.com\">Tim Nguyen<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=tomica%40gmail.com\">Tomislav Jovanovic<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=VYV03354%40nifty.ne.jp\">Masatoshi Kimura<\/a>, <a href=\"https:\/\/bugzilla.mozilla.org\/user_profile?login=w%40uter.be\">Wouter Verhelst<\/a>.<\/p>\n<p>We continue to receive a lot of feedback from developers and, based on that feedback, work is progressing on new features for Firefox 59 and beyond. Expect to see the WebExtensions API improve and grow, particularly in regards to the organization and management of tabs, as well as the theming API. As always, thank you for using Firefox and helping ensure that individuals have the ability to shape the Internet and their own experiences on it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With the release of Firefox Quantum on November 14, 2017, we officially entered a WebExtensions-only world for add-on development. While that event was certainly the news of the day, Firefox &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/\">Read more<\/a><\/p>\n","protected":false},"author":1526,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,227,278886],"tags":[5868,278873,72,288933,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 58 - 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\/11\/20\/extensions-in-firefox-58\/\" \/>\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=\"7 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\/11\/20\/extensions-in-firefox-58\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/\",\"name\":\"Extensions in Firefox 58 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small-160x160.png\",\"datePublished\":\"2017-11-21T00:26:51+00:00\",\"dateModified\":\"2019-11-18T15:10:02+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small.png\",\"width\":536,\"height\":553,\"caption\":\"Firefox logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extensions in Firefox 58\"}]},{\"@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 58 - 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\/11\/20\/extensions-in-firefox-58\/","twitter_misc":{"Written by":"Mike Conca","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/","url":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/","name":"Extensions in Firefox 58 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small-160x160.png","datePublished":"2017-11-21T00:26:51+00:00","dateModified":"2019-11-18T15:10:02+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#primaryimage","url":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small.png","contentUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2017\/10\/firefox-logo-small.png","width":536,"height":553,"caption":"Firefox logo"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2017\/11\/20\/extensions-in-firefox-58\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Extensions in Firefox 58"}]},{"@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\/8330"}],"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=8330"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8330\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=8330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=8330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=8330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}