Add-ons/developer/communication: Difference between revisions

m (edits)
(→‎Get in Touch: updated IRC links to matrix)
 
(55 intermediate revisions by 8 users not shown)
Line 1: Line 1:
=Evolution in Add-on Development=
=A Web-based API for Developing Extensions in Firefox=
[https://wiki.mozilla.org/WebExtensions WebExtensions] are becoming the standard for add-on development in Firefox. At the same time, [https://developer.mozilla.org/Add-ons/Working_with_multiprocess_Firefox multiprocess Firefox] (aka Electrolysis, or e10s) is also rolling out. These changes impact developers of XUL/XPCOM and SDK add-ons (some more than others), so we've created resources here to help ease the transitions.


This page contains timelines, migration paths, tutorials, and more. If you're a new developer and would like create an add-on, please head over to [https://developer.mozilla.org/Add-ons/WebExtensions MDN].
The [https://developer.mozilla.org/en-US/Add-ons/WebExtensions WebExtensions API] was introduced in 2016 as a stable, cross-browser platform that allows extension and theme authors to enhance the default Firefox browser. In November of 2017 it became the only officially supported extension API with the release of Firefox Quantum. The secure, sandboxed nature of the WebExtensions API means that not every legacy API can or will be available. Nevertheless, since its introduction, the WebExtensions API has grown with new features such as tab hiding and additional theme elements, all while maintaining near-complete compatibility with the Chrome extension API. Going forward, you can expect to see improvements in performance as well as additional features for user scripting, context menus, keyboard shortcuts and private browsing.


=====Find out if you are affected=====
Keep an eye on the [https://blog.mozilla.org/addons/ Add-ons Blog] for more information on enhancements to the WebExtensions API in upcoming releases of Firefox or, if you want real-time detailed information on upcoming changes, follow the [https://mzl.la/2MttuGN WebExtensions product in Bugzilla].
*Look up your add-on with the [https://compatibility-lookup.services.mozilla.com/ compatibility checker] to see if it's impacted.
*Use this [https://docs.google.com/drawings/d/1WVUSlU6UDJhr0xsgONS2kM1PohlHIJcrn_6qEE-_dTU/edit diagram] to see which migration group applies to you.
*Read through the [https://wiki.mozilla.org/Add-ons/developer/communication#Developers_who_are_affected_by_the_changes migration descriptions] below.


=====What's New=====
This page contains resources to help you port your legacy extension to use WebExtensions APIs. If you're looking for resources on creating a new extension, please head over to [https://developer.mozilla.org/en-US/Add-ons/WebExtensions MDN].
*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments]: prototype WebExtension APIs without having to build Firefox
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions]: we're making it easier to port to WebExtensions in Firefox 51
*Help plan and prioritize WebExtensions APIs by joining the bi-weekly [https://wiki.mozilla.org/Add-ons/Contribute/Triage public triage]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on Porting guides that map SDK and XUL APIs to available WebExtensions APIs]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions How-to guides] covering common add-on developer cases, like [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests intercepting web requests] and [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar adding a button to the toolbar]


=Timelines & Roadmap=
=About the WebExtensions API=
*See a [https://docs.google.com/spreadsheets/d/1OFYrrvAFg8y1mZOEbuIR1axxtV8eul_be6ad9fe8JB0/edit#gid=1952061950 graph of upcoming multiprocess Firefox (e10s) changes], organized by Firefox release dates.
*Public Trello boards:
**[https://trello.com/b/ZpIDuMAW/addon-planning Add-on planning]: see what the add-ons team is working on
**[https://trello.com/b/MwClom9J/addon-impacting-changes Impacting changes]: see what changes are coming up that impact compatibility
**[https://trello.com/b/PC9kB14s/webextensions-roadmap WebExtensions Roadmap]: see which APIs are coming up


=Migration paths for developers affected by the changes=
* [[WebExtensions/Vision|WebExtensions Vision]]: see the high-level vision for the WebExtensions API.  
==1) Has SDK add-on using low level APIs==
* [[WebExtensions/policy|WebExtensions Policy]]: guidelines for what should be included in the WebExtensions API
Developers who created an SDK add-on using [https://developer.mozilla.org/Add-ons/SDK/Low-Level_APIs low-level APIs], which break with multiprocess Firefox (aka Electrolysis or e10s).  
* [[WebExtensions/FAQ|WebExtensions APIs FAQs]]: Have questions about the WebExtensions API? Check out these frequently asked questions.
=====Migration Path=====
If your add-on code accesses web content using a [https://developer.mozilla.org/Add-ons/SDK/Low-Level_APIs low-level SDK APIs] like window/utils or tabs/utils, then you will likely be affected.<br />
'''''Multiprocess Firefox is currently going through a phased roll-out through early 2017, so we urge you to [https://developer.mozilla.org/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK test your add-ons] for compatibility.'''''<br />


*'''If it breaks''' in multiprocess Firefox, your users will be impacted, and you will need to update your add-on. You can find documentation on how to make them compatible [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox here].<br />
=Migration paths for developers of legacy add-ons=
*'''If it does not break''' in multiprocess Firefox, you should add the [https://developer.mozilla.org/Add-ons/SDK/Tools/package_json#Key_reference <code>multiprocess</code> permission] in package.json.
=====1) SDK add-on=====
Here is the comparison chart showing [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK SDK APIs and their WebExtensions counterparts]. If you don't see the APIs you need to port to WebExtensions, please take a look at [https://wiki.mozilla.org/Add-ons/developer/communication#Don.27t_See_the_WebExtensions_APIs_You_Need.3F some more] options below.


For assistance, please join the [https://mail.mozilla.org/listinfo/dev-addons dev-addons@mozilla.org] mailing list and ask for help!
=====2) XUL or XPCOM add-on=====
Here is the comparison chart showing [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions XUL/XPCOM APIs and their WebExtensions counterparts]. If you don't see the APIs you need to port to WebExtensions, please take a look at some [https://wiki.mozilla.org/Add-ons/developer/communication#Don.27t_See_the_WebExtensions_APIs_You_Need.3F more options] below.


==2) Has SDK add-on using legacy APIs==
=Don't See the WebExtensions APIs You Need?=
Developers who created an SDK add-on, but uses either XPCOM or other legacy APIs.


=====Migration Path=====
*If you're experienced with Mozilla infrastructure and would like to develop WebExtensions APIs directly for Firefox, here is a list of [https://mzl.la/2dVs5Ys approved APIs] that you can start contributing to.
Developers in this group potentially have to update their add-on twice--once for e10s compatibility (if using [https://developer.mozilla.org/Add-ons/SDK/Low-Level_APIs low-level APIs]), and again for WebExtensions compatibility (because it uses legacy APIs).


#'''Use only [https://developer.mozilla.org/Add-ons/SDK/High-Level_APIs high-level APIs]''' - High-level APIs are [https://wiki.mozilla.org/Add-ons/developer/communication#1.29_Has_SDK_add-on_using_low_level_APIs e10s compatible] and are more likely to have an equivalent WebExtensions API. You will have to migrate again once WebExtensions are fully ready, but it should be pretty easy to do in this case.
*If you want to prototype and tinker with WebExtensions APIs without having to build Firefox, [http://webextensions-experiments.readthedocs.io/en/latest/index.html WebExtensions Experiments] is for you!
#'''Move to [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions WebExtensions]''' - Check the [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK SDK/WebExtensions comparison chart] to see if the APIs you need are available, and see what else we're doing to [[Add-ons/developer/communication#Managing_the_Impact|mitigate the impact]] of this transition.


==3) Has SDK add-on using only high level APIs==
*If you want to request a new WebExtensions API, please read [https://wiki.mozilla.org/WebExtensions/NewAPIs this page].
Developers who used the SDK for their add-ons using only [https://developer.mozilla.org/Add-ons/SDK/High-Level_APIs high-level APIs]. Might have played around with the Chrome extension API in the past.
=====Migration Path=====
We recommend you start looking into [https://developer.mozilla.org/Add-ons/WebExtensions WebExtensions], which by the end of 2017 will be the only type of add-on supported. Check the [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK SDK/WebExtensions comparison chart] to see if the APIs you need are available, and see what else we're doing to [[Add-ons/developer/communication#Managing_the_Impact|mitigate the impact]] of this transition.  


==4) Has XUL or XPCOM add-on==
Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to [[Add-ons/developer/communication#Get_in_Touch|working with you]].
Developers who created add-ons that don't rely on the SDK or WebExtensions.
=====Migration Path=====
The transition to WebExtensions impacts add-ons built on APIs like XUL and XPCOM most of all. We expect to remove support for these technologies in Firefox add-ons by the end of 2017. We hope this will give us enough time to help you migrate and provide WebExtension APIs that are suitable for replacing the features you might lose once we stop supporting these APIs.  


If you’ve already updated your add-on for multiprocess Firefox (e10s) compatibility, thank you for clearing this hurdle. If not, [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox find out how].
=Tools=
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext web-ext] is a command line tool designed to speed up various parts of the WebExtension development process, making development faster and easier.
* [https://www.extensiontest.com/ The Extension Compatibility Test] is a utility that can test your Chrome extension's compatibility with Firefox. All you need to do is upload your .crx file.
*[https://github.com/mi-g/weh WebExtensions Helper] speeds up browser add-ons development by providing  facilities for WebExtensions-based (Firefox, Chrome, Opera and Edge) extensions
* [https://webextensions.tech/ webextensions.tech] is a scaffolding UI tool for browser extensions. It lets you to input and select few parameters and outputs a complete boilerplate browser extension project.
*[https://github.com/yeoman/generator-chrome-extension Chrome Extension generator] creates everything you need to get started with extension development. You can choose Browser UI(Browser,Page Action, Omnibox) type and select permissions you need.
*[http://extensionizr.com/ Extensionizr] is a wizard that helps you create a basic extension
*[https://github.com/mahemoff/chrome-boilerplate Chrome Boilerplate]
*[https://github.com/sitepoint/ChromeSkel_a Skeleton Chrome Extension] is an extension bootstrap and template


To get started migrating to WebExtensions, check the [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions XUL/XPCOM-WebExtensions comparison chart] to see if the APIs you need are available. Additional resources can be found [[Add-ons/developer/communication#Managing_the_Impact|below]].
=Documentation & Tutorials=
 
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on Porting guides that map SDK and XUL APIs to available WebExtensions APIs]
For assistance, please join the [https://mail.mozilla.org/listinfo/dev-addons dev-addons@mozilla.org] mailing list and ask for help!
* [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension How to port a Chrome extension to Firefox]
 
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions How-to guides] covering common add-on developer cases, like [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests intercepting web requests] and [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar adding a button to the toolbar]
=Managing the Impact=
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK Comparison with the Add-on SDK]
 
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions Comparison with XUL/XPCOM extensions]
*Embedded WebExtensions - In Firefox 51, you can [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on. This is especially useful to developers of SDK or bootstrapped add-ons who want to start migrating to WebExtensions and take advantage of new APIs like Native Messaging, but can’t fully migrate yet. It’s also useful for developers who want to complete data migration towards WebExtensions, and who want to take parts of their add-on that are not compatible with multiprocess Firefox and make them compatible.
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs Browser compatibility table] for all WebExtensions APIs
 
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples Examples of WebExtensions on MDN Web Docs]
*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments] - now it's easier to prototype WebExtension APIs, and you can do it without having to build Firefox.
 
*We're always adding new [https://developer.mozilla.org/en-US/Add-ons/WebExtensions WebExtensions documentation], so please check them out!
 
*Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to [https://wiki.mozilla.org/Add-ons/developer/communication#Get_in_Touch working with you].
 
=Add-on Developer Communication Calendar=
This calendar includes public meetings, scheduled blog posts, office hours, release milestones that affect add-on developers, and more. Links to add it to your own calendar: [https://calendar.google.com/calendar/ical/mozilla.com_ofjlct07k1784v1u51bqk476bk%40group.calendar.google.com/public/basic.ics iCal] | [https://calendar.google.com/calendar/embed?src=mozilla.com_ofjlct07k1784v1u51bqk476bk%40group.calendar.google.com&ctz=America/Los_Angeles HTML]


{{#widget:Widget:Google Calendar
=Blog Posts=
|id=bW96aWxsYS5jb21fb2ZqbGN0MDdrMTc4NHYxdTUxYnFrNDc2YmtAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ
All WebExtensions blog posts are [https://blog.mozilla.org/addons/category/web-extensions/ here].
}}
* December 20, 2018: [https://blog.mozilla.org/addons/2018/12/20/extensions-in-firefox-65/ Extensions in Firefox 65]
 
* November 8, 2018: [https://blog.mozilla.org/addons/2018/11/08/extensions-in-firefox-64/ Extensions in Firefox 64]
=Blog Posts and Other Resources=
* August 31, 2018: [https://blog.mozilla.org/addons/2018/08/31/extensions-in-firefox-63/ Extensions in Firefox 63]
 
* July 5, 2018: [https://blog.mozilla.org/addons/2018/07/05/extensions-in-firefox-62/ Extensions in Firefox 62]
==WebExtensions==
* May 17, 2018: [https://blog.mozilla.org/addons/2018/05/17/extensions-in-firefox-61/ Extensions in Firefox 61]
=====Blog Posts=====
* April 2, 2018: [https://blog.mozilla.org/addons/2018/04/02/extensions-firefox-60/ Extensions in Firefox 60]
* January 26, 2018: [https://blog.mozilla.org/addons/2018/01/26/extensions-firefox-59/ Extensions in Firefox 59]
* November 20, 2017: [https://blog.mozilla.org/addons/2017/11/20/extensions-in-firefox-58/ Extensions in Firefox 58]
* November 3, 2017: [https://blog.mozilla.org/addons/2017/11/03/keeping-tabs-tab-api/ Keeping Tabs on the Tab API]
* October 3, 2017: [https://blog.mozilla.org/addons/ Legacy Support on Firefox ESR]
* September 28, 2017: [https://blog.mozilla.org/addons/2017/09/28/webextensions-in-firefox-57/ WebExtensions in Firefox 57]
* September 8, 2017: [https://blog.mozilla.org/addons/2017/09/08/last-chance-migrate-user-data/ Last Chance to Migrate Your Legacy Data]
* September 7, 2017: [https://blog.mozilla.org/addons/2017/09/07/tell-users-expect-webextensions-version/ Tell Your Users What To Expect in Your WebExtensions Version]
* August 11, 2017: [https://blog.mozilla.org/addons/2017/08/10/webextensions-firefox-56/ WebExtensions in Firefox 56]
* August 3, 2017: [https://blog.mozilla.org/addons/2017/08/03/extension-examples-see-apis-action/ Extension Examples: See the APIs in Action]
*June 14, 2017: [https://blog.mozilla.org/addons/2017/06/14/webextensions-firefox-55/ WebExtensions in Firefox 55]
*May 16, 2017: [https://blog.mozilla.org/addons/2017/05/16/compatibility-firefox-55/ Add-on Compatibility for Firefox 55]
*May 10, 2017: [https://blog.mozilla.org/addons/2017/05/10/incompatible-change-sessions-restore-api-firefox-54/ Incompatible change to sessions.restore API in Firefox 54]
*Apr 3, 2017: [https://blog.mozilla.org/addons/2017/04/03/migrating-colorzilla-webextensions/ Migrating ColorZilla to WebExtensions]
*Mar 27, 2017: [https://blog.mozilla.org/addons/2017/03/27/update-compatibility-milestones/ Update on Compatibility Milestones]
*Mar 24, 2017: [https://blog.mozilla.org/addons/2017/03/24/migrating-adblock-firefox-webextensions/ Migrating AdBlock for Firefox to WebExtensons]
*Mar 17, 2017: [https://blog.mozilla.org/addons/2017/03/17/migrating-webextensions-dont-forget-users/ Migrating to WebExtensions? Don't Forget Your Users]
*Mar 13, 2017: [https://blog.mozilla.org/addons/2017/03/13/webextensions-firefox-54/ WebExtensions in Firefox 54]
*Mar 9, 2017: [https://blog.mozilla.org/addons/2017/03/09/office-hours-support-transitioning-porting-webextensions/ Office Hours Support for Transitioning and Porting to WebExtensions]
*Feb 16, 2017: [https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/ The Road to Firefox 57 – Compatibility Milestones]
*Jan 25, 2017: [https://blog.mozilla.org/addons/2017/01/25/webextensions-in-firefox-53/ WebExtensions in Firefox 53]
*Jan 20, 2017: [https://blog.mozilla.org/addons/2017/01/20/migrating-to-webextensions-port-your-stored-data/ Migrating to WebExtensions: port your stored data]
*Dec 16, 2016: [https://blog.mozilla.org/addons/2016/12/16/meet-some-nifty-new-webextensions/ Meet Some Nifty New WebExtensions]
*Nov 23, 2016: [https://blog.mozilla.org/addons/2016/11/23/add-ons-in-2017/ Add-ons in 2017]
*Nov 22, 2016: [https://blog.mozilla.org/addons/2016/11/22/webextensions-examples-and-hacktoberfest/ webextensions-examples and Hacktoberfest]
*Nov 18, 2016: [https://blog.mozilla.org/addons/2016/11/18/webextensions-in-firefox-52/ WebExtensions in Firefox 52]
*Nov 3, 2016: [https://blog.mozilla.org/addons/2016/11/03/more-ways-to-contribute-to-webextensions/ More ways to contribute to WebExtensions]
*Sep 29, 2016: [https://blog.mozilla.org/addons/2016/09/29/webextensions-in-firefox-51/ WebExtensions in Firefox 51]
*Sep 29, 2016: [https://blog.mozilla.org/addons/2016/09/29/webextensions-in-firefox-51/ WebExtensions in Firefox 51]
*Sep 28, 2016: [https://blog.mozilla.org/addons/2016/09/28/migrating-an-sdk-add-on-to-multiprocess-firefox/ How Video DownloadHelper Became Compatible with Multiprocess Firefox]
*Sep 13, 2016: [https://blog.mozilla.org/addons/2016/09/13/webextensions-and-parity-with-chrome/ WebExtensions and parity with Chrome]
*Sep 13, 2016: [https://blog.mozilla.org/addons/2016/09/13/webextensions-and-parity-with-chrome/ WebExtensions and parity with Chrome]
*Aug 25, 2016: [https://blog.mozilla.org/addons/2016/08/25/webextensions-in-firefox-50/ WebExtensions in Firefox 50]
*Aug 25, 2016: [https://blog.mozilla.org/addons/2016/08/25/webextensions-in-firefox-50/ WebExtensions in Firefox 50]
Line 91: Line 94:
*May 9, 2016: [https://blog.mozilla.org/addons/2016/05/09/results-of-the-webextensions-api-survey/ Results of the WebExtensions API Survey]
*May 9, 2016: [https://blog.mozilla.org/addons/2016/05/09/results-of-the-webextensions-api-survey/ Results of the WebExtensions API Survey]
*Apr 29, 2016: [https://blog.mozilla.org/addons/2016/04/29/webextensions-in-firefox-48/ WebExtensions in Firefox 48]
*Apr 29, 2016: [https://blog.mozilla.org/addons/2016/04/29/webextensions-in-firefox-48/ WebExtensions in Firefox 48]
*Apr 26, 2016: [https://blog.mozilla.org/addons/2016/04/26/migrating-popup-alt-attribute-from-xulxpcom-to-webextensions/ Migrating Popup ALT Attribute from XUL/XPCOM to WebExtensions]
*Apr 14, 2016: [https://blog.mozilla.org/addons/2016/04/14/developing-extensions-with-web-ext-1-0/ Developing Extensions With Web-ext 1.0]
*Apr 14, 2016: [https://blog.mozilla.org/addons/2016/04/14/developing-extensions-with-web-ext-1-0/ Developing Extensions With Web-ext 1.0]
*Mar 30, 2016: [https://blog.mozilla.org/addons/2016/03/30/tinkering-with-webextensions/ Tinkering with WebExtensions]
*Mar 30, 2016: [https://blog.mozilla.org/addons/2016/03/30/tinkering-with-webextensions/ Tinkering with WebExtensions]
Line 100: Line 104:
*Aug 21, 2015: [https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/ The Future of Developing Firefox Add-ons]
*Aug 21, 2015: [https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/ The Future of Developing Firefox Add-ons]


=====Other Resources=====
=Add-on Developer Communication Calendar=
*[https://compatibility-lookup.services.mozilla.com/ Compatibility Lookup Tool]
This calendar includes public meetings, scheduled blog posts, office hours, release milestones that affect add-on developers, and more. Links to add it to your own calendar: [https://calendar.google.com/calendar/ical/mozilla.com_ofjlct07k1784v1u51bqk476bk%40group.calendar.google.com/public/basic.ics iCal] | [https://calendar.google.com/calendar/embed?src=mozilla.com_ofjlct07k1784v1u51bqk476bk%40group.calendar.google.com&ctz=America/Los_Angeles HTML]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions] let you [https://blog.mozilla.org/addons/2016/09/29/webextensions-in-firefox-51/ embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on
 
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK Comparison with the Add-on SDK]
{{#widget:Widget:Google Calendar
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions Comparison with XUL/XPCOM extensions]
|id=bW96aWxsYS5jb21fb2ZqbGN0MDdrMTc4NHYxdTUxYnFrNDc2YmtAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions How-to guides] covering common add-on developer cases, like [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests intercepting web requests] and [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar adding a button to the toolbar]
}}
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs Browser compatibility table] for all WebExtensions APIs
 
*[https://github.com/mdn/webextensions-examples Example add-ons] created with WebExtensions APIs
=Get in Touch=
* [[Matrix]]:  
** Add-ons:  support for extensions, themes, and API development
** Add-on Reviewers: add-on reviews and policy
** AMO: addons.mozilla.org bugs and development


==Multiprocess (e10s) Firefox==
* Mailing List:  
=====Blog Posts=====
**[https://mail.mozilla.org/listinfo/dev-addons dev-addons] for general discussion
*Sep 7, 2016: [https://blog.mozilla.org/addons/2016/09/07/help-make-add-ons-multiprocess-compatible-with-add-on-compatibility-reporter/ Help make add-ons multiprocess compatible with Add-on Compatibility Reporter]
*Aug 2, 2016: [https://blog.mozilla.org/addons/2016/08/02/multi-process-firefox-and-add-ons-a-call-to-action/ Multi-process Firefox and Add-ons: A Call to Action for Extension Developers]
*June 17, 2016: [https://blog.mozilla.org/addons/2016/06/17/multi-process-firefox-and-amo/ Multi-process Firefox and AMO]
*Apr 11, 2016: [https://blog.mozilla.org/addons/2016/04/11/the-why-of-electrolysis/ The “Why” of Electrolysis]
*Nov 23, 2015: [https://blog.mozilla.org/addons/2015/11/23/test-your-add-ons-for-multi-process-firefox-compatibility/ Test your add-ons for Multi-process Firefox compatibility]
=====Other Resources=====
*[https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox Working with multiprocess Firefox]


==Migrating from XUL/XPCOM==
* More ways to get in touch:
=====Blog Posts=====
** Blog: https://blog.mozilla.org/addons/
*Sep 28, 2016: [https://blog.mozilla.org/addons/2016/09/28/migrating-an-sdk-add-on-to-multiprocess-firefox/ How Video DownloadHelper Became Compatible with Multiprocess Firefox]
** Forum: https://discourse.mozilla-community.org/c/add-ons
*Apr 26, 2016: [https://blog.mozilla.org/addons/2016/04/26/migrating-popup-alt-attribute-from-xulxpcom-to-webextensions/ Migrating Popup ALT Attribute from XUL/XPCOM to WebExtensions]
=====Other Resources=====
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions Comparison with XUL/XPCOM extensions]


=Get in Touch=
== Meetings ==
* [[IRC|IRC]]:
** #teamaddons: team chat
** #addons:  support for extensions, themes, plugins and addons.mozilla.org
** #amo: addons.mozilla.org bugs and development
** #amo-editors: add-on reviews and policy
** #extdev: extension development
** #themedev: theme development
** #webextensions: web extensions


* Mailing List: [https://mail.mozilla.org/listinfo/dev-addons dev-addons]
Please see the add-ons main page [https://wiki.mozilla.org/Add-ons#Meetings Meetings section]
* Blog: https://blog.mozilla.org/addons/
* Forum: https://discourse.mozilla-community.org/c/add-ons

Latest revision as of 20:42, 20 February 2020

A Web-based API for Developing Extensions in Firefox

The WebExtensions API was introduced in 2016 as a stable, cross-browser platform that allows extension and theme authors to enhance the default Firefox browser. In November of 2017 it became the only officially supported extension API with the release of Firefox Quantum. The secure, sandboxed nature of the WebExtensions API means that not every legacy API can or will be available. Nevertheless, since its introduction, the WebExtensions API has grown with new features such as tab hiding and additional theme elements, all while maintaining near-complete compatibility with the Chrome extension API. Going forward, you can expect to see improvements in performance as well as additional features for user scripting, context menus, keyboard shortcuts and private browsing.

Keep an eye on the Add-ons Blog for more information on enhancements to the WebExtensions API in upcoming releases of Firefox or, if you want real-time detailed information on upcoming changes, follow the WebExtensions product in Bugzilla.

This page contains resources to help you port your legacy extension to use WebExtensions APIs. If you're looking for resources on creating a new extension, please head over to MDN.

About the WebExtensions API

Migration paths for developers of legacy add-ons

1) SDK add-on

Here is the comparison chart showing SDK APIs and their WebExtensions counterparts. If you don't see the APIs you need to port to WebExtensions, please take a look at some more options below.

2) XUL or XPCOM add-on

Here is the comparison chart showing XUL/XPCOM APIs and their WebExtensions counterparts. If you don't see the APIs you need to port to WebExtensions, please take a look at some more options below.

Don't See the WebExtensions APIs You Need?

  • If you're experienced with Mozilla infrastructure and would like to develop WebExtensions APIs directly for Firefox, here is a list of approved APIs that you can start contributing to.
  • If you want to prototype and tinker with WebExtensions APIs without having to build Firefox, WebExtensions Experiments is for you!
  • If you want to request a new WebExtensions API, please read this page.

Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to working with you.

Tools

  • web-ext is a command line tool designed to speed up various parts of the WebExtension development process, making development faster and easier.
  • The Extension Compatibility Test is a utility that can test your Chrome extension's compatibility with Firefox. All you need to do is upload your .crx file.
  • WebExtensions Helper speeds up browser add-ons development by providing facilities for WebExtensions-based (Firefox, Chrome, Opera and Edge) extensions
  • webextensions.tech is a scaffolding UI tool for browser extensions. It lets you to input and select few parameters and outputs a complete boilerplate browser extension project.
  • Chrome Extension generator creates everything you need to get started with extension development. You can choose Browser UI(Browser,Page Action, Omnibox) type and select permissions you need.
  • Extensionizr is a wizard that helps you create a basic extension
  • Chrome Boilerplate
  • Skeleton Chrome Extension is an extension bootstrap and template

Documentation & Tutorials

Blog Posts

All WebExtensions blog posts are here.

Add-on Developer Communication Calendar

This calendar includes public meetings, scheduled blog posts, office hours, release milestones that affect add-on developers, and more. Links to add it to your own calendar: iCal | HTML

Error in widget Widget:Google Calendar: Unable to load template 'wiki:Widget:Google Calendar'

Get in Touch

  • Matrix:
    • Add-ons: support for extensions, themes, and API development
    • Add-on Reviewers: add-on reviews and policy
    • AMO: addons.mozilla.org bugs and development

Meetings

Please see the add-ons main page Meetings section