{"id":8421,"date":"2018-04-02T07:59:16","date_gmt":"2018-04-02T14:59:16","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=8421"},"modified":"2018-04-02T13:46:41","modified_gmt":"2018-04-02T20:46:41","slug":"extensions-firefox-60","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/","title":{"rendered":"Extensions in Firefox 60"},"content":{"rendered":"<p>Many people read this blog because they\u2019ve written extensions for Firefox in the past. Others, though, know some HTML, CSS, and JavaScript and have been thinking about writing their first extension. Either way, now is the perfect time to jump into the WebExtensions ecosystem.<\/p>\n<p>That\u2019s because we\u2019re having a contest! Develop an extension for Firefox and enter it into the <a href=\"https:\/\/extensionschallenge.com\/\">Firefox Quantum Extensions Challenge<\/a> by April 15, 2018. Your extension could win you a brand-new Apple iPad Pro or a $250 gift card to Amazon.<\/p>\n<p>And if you want to make your extension even better, consider using some of the new WebExtensions API discussed below. These new and improved API are available in Firefox 60, recently released to the <a href=\"https:\/\/www.mozilla.org\/firefox\/channel\/desktop\/\">Beta Channel<\/a>.<\/p>\n<h2>A Profusion of Theme Properties<\/h2>\n<p>Since \u201cBest Dynamic Theme\u201d is one of the award categories for the Firefox Quantum Extension Challenge, let\u2019s start with improvements to <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/manifest.json\/theme\">Themes<\/a>. Release 60 adds a pile of new items to the list of elements that can be themed, doubling the number of individual components. \u00a0These include:<\/p>\n<ul>\n<li><b>tab_line <\/b>&#8211; Line color of the selected tab.<\/li>\n<li><b>tab_selected <\/b>&#8211; Background color of the selected tab.<\/li>\n<li><b>popup <\/b>&#8211; The background color of popups (such as the arrow panels).<\/li>\n<li><b>popup_border <\/b>&#8211; The border color of popups.<\/li>\n<li><b>popup_text <\/b>&#8211; The text color of popups.<\/li>\n<li><b>tab_loading <\/b>&#8211; The color of the tab loading indicator and the tab loading burst.<\/li>\n<li><b>icons <\/b>&#8211; The color of toolbar icons.<\/li>\n<li><b>icons_attention <\/b>&#8211; The color of toolbar icons in attention state such as the starred bookmark icon or finished download icon.<\/li>\n<li><b>frame_inactive <\/b>&#8211; The same as &#8220;accentcolor&#8221;, but only applied to inactive windows, provided for<a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/manifest.json\/theme#Chrome_compatibility\"> Chrome compatibility<\/a>.<\/li>\n<li><b>button_background_active <\/b>&#8211; The color of the background of pressed toolbar buttons.<\/li>\n<li><b>button_background_hover <\/b>&#8211; The color of the background of toolbar buttons on hover.<\/li>\n<li><b>toolbar_field_separator <\/b>&#8211; The color of separators inside the URL bar (also available in Firefox 59; note that in Firefox 58 it was implemented under toolbar_vertical_separator)<\/li>\n<li><b>toolbar_vertical_separator <\/b>&#8211; The color of the separator next to the application menu icon (also available in Firefox 59; note that in Firefox 58 it corresponds to the color of separators inside the URL bar).<\/li>\n<\/ul>\n<p>Also new for Firefox 60, the <strong>headerURL<\/strong> property is no longer mandatory, removing a somewhat arbitrary condition that made themes a bit clunky in the past.<\/p>\n<p>Remember, the contest awards a prize for the best Dynamic Theme, so use the <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/theme\">theme API<\/a> to control and change the various UI elements in creative ways. Want an awesome tutorial that talks about Dynamic Themes? Check out the video below.<\/p>\n<p><iframe loading=\"lazy\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ycckyrUN0AY?feature=oembed\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/p>\n<h2>More Tab Features<\/h2>\n<p>Consistent with each release since Quantum 57, tabs remain a focus of WebExtension growth and improvement. Several bigger features will land in release 61 (expert <a href=\"https:\/\/bugzilla.mozilla.org\/\">Bugzilla<\/a> miners are likely aware of them already), but Firefox 60 still offers a number of important items:<\/p>\n<ul>\n<li>The tabs API now supports a <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/tabs\/captureTab\">tabs.captureTab method<\/a> which can be passed a tabId to capture the visible area of the specified tab (as opposed to the <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/tabs\/captureVisibleTab\">tabs.captureVisibleTab<\/a> API, which only captured the active tab of a window).<\/li>\n<li>For those experimenting with hidden tabs, they are now<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1436720\"> restored when the extension that hid them is removed<\/a>. \u00a0Also, tab hiding shutdown now happens <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1438985\">even if the API is unused<\/a>, removing the possibility of hidden tabs staying erroneously hidden.<\/li>\n<li>The <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/tabs\/PageSettings\">tabs.saveAsPDF API was enhanced<\/a> with a print progress listener and the addition of four more edge properties to the pageSettings object.<\/li>\n<li>The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1420485\">memory consumption of extensions which use tabs.insertCSS<\/a> was significantly improved.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1438666\">tabs.query() returns highlighted tabs<\/a> when querying for highlighted tabs.<\/li>\n<\/ul>\n<h2>Improving Debugging and Development<\/h2>\n<p>Several new additions landed that make the debugging and development of extensions easier, including:<\/p>\n<ul>\n<li>Firefox 60 now supports the <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/devtools.network\/onRequestFinished\">devtools.network.onRequestFinished<\/a> API to better support extension developers who are interested in extending the built-in Firefox developer tools.<\/li>\n<li>The <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/devtools.network\">devtools.network<\/a> API also added the devtools.network.getHAR method which returns a HAR log for the devtools window. This is fully compatible with the Chrome version of this API.<\/li>\n<li>Dramatically <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1441333\">improved the information on where errors triggered by asynchronous APIs come from<\/a>. This makes debugging extensions much easier.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1403130\">DOMNodes and cyclic objects can now be rendered<\/a> with the sidebar.setExpression API method.<\/li>\n<li>Fixed a bug that prevented the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1417043\">developer tools panel drop down from expanding<\/a> as they should.<\/li>\n<\/ul>\n<h2>Proxy Improvements<\/h2>\n<p>The proxy API is quickly maturing, and Firefox 60 adds more functionality by adding the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1409878\">asynchronous proxy.onRequest API<\/a>. \u00a0This API is ideal for extensions looking to deal with proxy requests in a background script. \u00a0Details are still being documented on MDN at the time of this writing but should be available soon.<\/p>\n<h2>Network Extensions Get DNS<\/h2>\n<p>Extensions now have access to Firefox\u2019s DNS service to resolve hostnames. The new <a href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/WebExtensions\/API\/dns\/resolve\">browser.dns()<\/a> API takes a hostname string (with optional parameters) and resolves it to a DNS record for that hostname. To use this new API, your extension must declare the \u201cdns\u201d permission.<\/p>\n<h2>Dynamic Keyboard Shortcuts<\/h2>\n<p>Two new API were added to the Commands namespace that allow extensions to change their keyboard shortcuts at runtime. The first, <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/commands\/update\">commands.update<\/a>, allows an extension to change the shortcut key and\/or description associated with a command, while the second, <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/commands\/reset\">commands.reset<\/a>, reverts a command back to the keyboard shortcut and description originally specified in the manifest file.<\/p>\n<h2>Keeping Users Informed<\/h2>\n<p>In keeping with our mission to ensure that users are always informed and in control of what extensions are doing, a few new messages have been added to the browser interface:<\/p>\n<ul>\n<li>about:preferences now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1429593\">shows when an extension is controlling proxy preferences<\/a>.<\/li>\n<li><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1436165\">Clearer messages<\/a> were added to show when an extension is controlling the New Tab and Home pages.<\/li>\n<\/ul>\n<h2>Enhancing All the Action<\/h2>\n<p>The browserAction, pageAction, and sidebarAction are three of the most commonly used WebExtension features, and all three get some improvement in Firefox 60:<\/p>\n<ul>\n<li>The pageAction and sidebarAction APIs were <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1424538\">updated to be consistent with changes to the browserAction API<\/a>, allowing NULL to be passed to unset a property.<\/li>\n<li>The <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/browserAction\/isEnabled\">browserAction<\/a>, <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/pageAction\/isShown\">pageAction<\/a>, and <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/sidebarAction\/isOpen\">sidebarAction<\/a> APIs all now support querying whether they are currently enabled\/shown\/open, respectively.<\/li>\n<li>Disabled pageActions <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1435992\">no longer show a context menu item<\/a>.<\/li>\n<\/ul>\n<h2>Other Improvements<\/h2>\n<p>The items mentioned above highlight some of the bigger and\/or more visible changes that appear in Firefox 60. As always, though, many other minor or less visible improvements to WebExtensions also landed, including:<\/p>\n<ul>\n<li>The menus and contextMenus APIs have been enhanced to <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/WebExtensions\/API\/menus#Events\">support onShown and onHidden events<\/a>.<\/li>\n<li>Reduced the amount of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Flash_of_unstyled_content\">FOUC <\/a>by <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1437921\">running document_idle after DOMContentLoaded and after the layout has had a chance to start<\/a>.<\/li>\n<li>Opening a popup now <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1324255\">gets focus<\/a> (this author\u2019s personal note: \u00a0YES!)<\/li>\n<li>Fixed an issue where <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1443749\">extension sidebars reload unnecessarily<\/a>.<\/li>\n<li>Removed <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1431242\">some innerHTML<\/a> (and fixed some bolding broken by sanitization in <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1432966\">1432966<\/a>) and <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1434976\">some more<\/a> (in dynamic install prompt messages).<\/li>\n<li>The runAt option for the contentScripts.register API <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1429425\">now defaults to document_idle<\/a>.<\/li>\n<li>The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1344815\">key combination to open a WebExtension sidebar is now shown<\/a> in the switcher dropdown and the sidebar menu.<\/li>\n<\/ul>\n<h2>Thank You<\/h2>\n<p>A total of <a href=\"https:\/\/mzl.la\/2E7CKbA\">63 features or improvements<\/a> were landed for WebExtensions as part of Firefox 60 Beta. Thank you to our many contributors for this release, especially our community volunteers including: <a href=\"https:\/\/mozillians.org\/en-US\/u\/ntim\/\">Tim Nguyen<\/a>, <a href=\"https:\/\/mozillians.org\/en-US\/u\/Oriol\/\">Oriol Brufau<\/a>, <a href=\"https:\/\/mozillians.org\/en-US\/u\/Paenglab\/\">Richard Marti<\/a>, <a href=\"https:\/\/mozillians.org\/en-US\/u\/prathiksha\/\">Prathiksha Guruprasad<\/a>, <a href=\"https:\/\/mozillians.org\/en-US\/u\/viniciuscosta0197\/\">Vinicius Costa e Silva<\/a>, <a href=\"https:\/\/mozillians.org\/en-US\/u\/vivek3zero\/\">Vivek Dhingra<\/a>, Zhengyi Lian, Connor Masini, DW-dev, <a href=\"https:\/\/mozillians.org\/en-US\/u\/bogdanp\/\">Bogdan Podzerca<\/a>, and <a href=\"https:\/\/mozillians.org\/en-US\/u\/dyl\/\">Dylan Stokes<\/a>. As always, we sincerely appreciate you helping ensure that individuals have the ability to shape the Internet and their own experiences on it. If you are interested in contributing to the WebExtensions ecosystem, please take a look at our <a href=\"https:\/\/wiki.mozilla.org\/Add-ons\/Contribute\">wiki<\/a>.<\/p>\n<p>This post is going up a bit later than normal and there are already several additions and changes to the WebExtensions API in progress for Firefox 61, so continue watching this space for more information. In the meantime, please continue to send us your feedback.<\/p>\n<p><em>Correction<\/em><br \/>\n<em>An earlier version of this article incorrectly stated that the theme properties popup_highlight and popup_highlight_text were available in Firefox 60, and that popup and popup_text could be used to style the URL and search bar autocomplete panels. All four of those things will actually appear in Firefox 61 (which is available in the <a href=\"https:\/\/www.mozilla.org\/firefox\/channel\/desktop\/\">Firefox Nightly<\/a> channel right now).<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many people read this blog because they\u2019ve written extensions for Firefox in the past. Others, though, know some HTML, CSS, and JavaScript and have been thinking about writing their first &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/\">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":[6744,44,227,551,278886],"tags":[278873,72,304450,278875,6743,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 60 - 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\/2018\/04\/02\/extensions-firefox-60\/\" \/>\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\/2018\/04\/02\/extensions-firefox-60\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/\",\"name\":\"Extensions in Firefox 60 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png\",\"datePublished\":\"2018-04-02T14:59:16+00:00\",\"dateModified\":\"2018-04-02T20:46:41+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#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\/2018\/04\/02\/extensions-firefox-60\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extensions in Firefox 60\"}]},{\"@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 60 - 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\/2018\/04\/02\/extensions-firefox-60\/","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\/2018\/04\/02\/extensions-firefox-60\/","url":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/","name":"Extensions in Firefox 60 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2018\/01\/puzzle-1746563_640.png","datePublished":"2018-04-02T14:59:16+00:00","dateModified":"2018-04-02T20:46:41+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/e06b9ebc82832ecd9f04e7dd59c65325"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2018\/04\/02\/extensions-firefox-60\/#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\/2018\/04\/02\/extensions-firefox-60\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Extensions in Firefox 60"}]},{"@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\/8421"}],"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=8421"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/8421\/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=8421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=8421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=8421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}