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
Default value for the
includeSubFolders
parameter of list([includeSubFolders]) has been changed fromtrue
tofalse
.Default value for the
includeSubFolders
parameter of get(accountId, [includeSubFolders]) has been changed fromtrue
tofalse
.Default value for the
includeSubFolders
parameter of getDefault([includeSubFolders]) has been changed fromtrue
tofalse
.The function
accounts.setDefaultIdentity
has been removed, use getDefault(accountId) instead.The
folders
property of the MailAccount type has been replaced by therootFolder
property.The
type
property of the MailAccount type useslocal
instead ofnone
for local accounts.
contacts API
Replaced by addressBooks.contacts API.
The ContactNode type no longer has a
ContactProperties
property, but avCard
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 itsqueryInfo
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
Replaced by addressBooks.mailingLists API.
browserAction API
Replaced by action API
commands API
The built-in
_execute_browser_action
command shortcut for thecommands
manifest entry has been renamed to_execute_action
.
compose API
The
id
property of the ComposeRecipient type has been renamed tonodeId
.The
additionalFccFolder
property of the ComposeDetails type has been replaced by theadditionalFccFolderId
property (expecting a MailFolderId).The
overrideDefaultFccFolder
property of the ComposeDetails type has been replaced by theoverrideDefaultFccFolderId
property (expecting a MailFolderId).The
overrideDefaultFcc
property of the ComposeDetails has been removed. An override can now be cleared by settingoverrideDefaultFccFolderId
tonull
.
composeScripts API
Replaced by scripting.compose API.
folders API
The
type
property of MailFolder has been removed. Use thespecialUse
property instead.The
favorite
property of MailFolderInfo has been removed. It is now available as a property of MailFolder.The
type
property of thequeryInfo
parameter of query([queryInfo]) has been removed. Use thespecialUse
property instead.Default value for the
includeSubFolders
parameter of get(folderId, [includeSubFolders]) has been changed fromtrue
tofalse
.create(folderId, childName) no longer accepts a MailFolder or MailAccount for its first parameter, but a MailFolderId. Use
MailAccount.rootFolder
to specify the root of an account.rename(folderId, newName) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
move(sourceFolderId, destinationFolderId) no longer accepts a MailFolder or MailAccount for its parameters, but a MailFolderId. Use
MailAccount.rootFolder
to specify the root of an account.copy(sourceFolderId, destinationFolderId) no longer accepts a MailFolder or MailAccount for its parameters, but a MailFolderId. Use
MailAccount.rootFolder
to specify the root of an account.delete(folderId) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
update(folderId, updateProperties) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
getFolderInfo(folderId) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
getFolderCapabilities(folderId) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
getParentFolders(folderId, [includeSubFolders]) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
getSubFolders(folderId, [includeSubFolders]) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
Default value for the
includeSubFolders
parameter of getSubFolders(folderId, [includeSubFolders]) has been changed fromtrue
tofalse
.markAsRead(folderId) no longer accepts a MailFolder for its first parameter, but a MailFolderId.
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 thetabId
property.The
viewType
property of MailTab and MailTabProperties has been replaced by thegroupType
property.The
displayedFolder
property of MailTabProperties has been replaced by thedisplayedFolderId
property, and no longer accepts a MailFolder, but a MailFolderId.
messageDisplay API
The
messageDisplay.onMessageDisplayed
event has been removed, use onMessagesDisplayed instead.The onMessagesDisplayed event returns a MessageList instead of an array of MessageHeader.
The
messageDisplay.getDisplayedMessage()
function has been removed, use getDisplayedMessages([tabId]) instead.The getDisplayedMessages([tabId]) function returns a MessageList instead of an array of MessageHeader.
messageDisplayScripts API
Replaced by scripting.messageDisplay API.
messages API
The list(folderId) function no longer accepts a MailFolder, but a MailFolderId.
The default value for the
data_format
parameter of getRaw(messageId, [options]) has been changed fromBinaryString
toFile
.The
queryInfo
parameter of query([queryInfo]) no longer supports thefolder
property, use thefolderId
property instead.The
queryInfo
parameter of query([queryInfo]) no longer supports theunread
property, use theread
property instead.The move(messageIds, folderId) function no longer accepts a MailFolder, but a MailFolderId for its first parameter.
The copy(messageIds, folderId) function no longer accepts a MailFolder, but a MailFolderId for its first parameter.
The import(file, folderId, [properties]) function no longer accepts a MailFolder, but a MailFolderId for its second parameter.
The
messages.listTags()
,messages.createTag()
andmessages.updateTag()
functions have been replaced by list(), create(key, tag, color) and update(key, updateProperties).
spaces API
The
id
property of thequeryInfo
parameter of query([queryInfo]) has been renamed tospaceId
.
spacesToolbar API
The
spacesToolbar API
has been removed, use spaces API instead.
tabs API
The
mailTab
property of thequeryInfo
parameter of query([queryInfo]) has been removed. Use thetype
property instead.The
mailTab
property of MailTab has been removed. Use thetype
property instead.The
tabs.executeScript
andtabs.insertCSS
functions have been removed. Use scripting API, scripting.compose API or scripting.messageDisplay API instead. Note: It is no longer possible to execute a JavaScript string in Manifest V3.