Changes in Manifest Version 3

Thunderbird 128 is the first Thunderbird release to officially support Manifest Version 3.

A general introduction to Manifest V3 and the required changes is provided by extensionworkshop.com. Thunderbird’s add-on team made additional changes to its WebExtension APIs, to remove inconsistencies. This page documents these backward incompatible changes from Manifest V2 to Manifest V3.

Additionally, the examples in our sample repository have been converted to Manifest V3, and might give helpful insights.

accounts API

contacts API

  • Replaced by addressBooks.contacts API.

  • The ContactNode type no longer has a ContactProperties property, but a vCard property. It is no longer possible to specify individual contact properties.

  • The onUpdated event provides the entire old vCard in its second parameter, instead of individual changed properties.

  • The parentId is no longer a dedicated parameter for query(queryInfo), but an optional property for its queryInfo parameter.

  • The function create(parentId, vCard) expects a vCard for its second parameter, instead of individual properties. It also no longer has a dedicated parameter to specify an id, which is now provided via the vCard.

  • The function update(id, vCard) expects a vCard for its second parameter, instead of individual properties.

mailingLists API

browserAction API

commands API

  • The built-in _execute_browser_action command shortcut for the commands manifest entry has been renamed to _execute_action.

compose API

  • The id property of the ComposeRecipient type has been renamed to nodeId.

  • The additionalFccFolder property of the ComposeDetails type has been replaced by the additionalFccFolderId property (expecting a MailFolderId).

  • The overrideDefaultFccFolder property of the ComposeDetails type has been replaced by the overrideDefaultFccFolderId property (expecting a MailFolderId).

  • The overrideDefaultFcc property of the ComposeDetails has been removed. An override can now be cleared by setting overrideDefaultFccFolderId to null.

composeScripts API

folders API

mailTabs API

  • The mailTabs.getCurrent() function has been removed, use messenger.mailTabs.query({active:true, currentWindow: true}) instead.

  • The id property of MailTab has been replaced by the tabId property.

  • The viewType property of MailTab and MailTabProperties has been replaced by the groupType property.

  • The displayedFolder property of MailTabProperties has been replaced by the displayedFolderId property, and no longer accepts a MailFolder, but a MailFolderId.

messageDisplay API

messageDisplayScripts API

messages API

spaces API

  • The id property of the queryInfo parameter of query([queryInfo]) has been renamed to spaceId.

spacesToolbar API

  • The spacesToolbar API has been removed, use spaces API instead.

tabs API