Table of contents About Thunderbird Contributing to Thunderbird Getting Started Building Thunderbird Windows Build Prerequisites Linux Build Prerequisites macOS Build Prerequisites Artifact Builds Codebase Overview Account Configuration Address Book Chat Core Notifications Message Styles Keyboard shortcuts Chat Core Protocols Contacts Mail Front-End Tutorials and Examples Hello World Example Thunderbird Live Development Videos Fixing a Bug Bug Triaging 101 Bug Status Classicification Bug Types Garbage Collection Narrow the Scope Using Mercurial Bookmarks Using Mercurial Queues Lint and Format Code Using ESLint to Format Javascript Code Try Server Landing a Patch Care and Feeding of the Tree Testing Running Tests Adding Tests Writing Mochitest Tests Planning Roadmap Android Roadmap Supported Standards Add-on Development Introduction What's new? Manifest Version 3 A "Hello World" Extension Tutorial Using WebExtension APIs Using a Background Page Using Content Scripts A Guide to Extensions Supported Manifest Keys Supported UI Elements Supported WebExtension APIs Thunderbird's WebExtension API Documentation Thunderbird WebExtension Examples Introducing Experiments A Guide to Themes Developer Community Documentation & Resources Tips and Tricks Add-on Update Guides Update for Thunderbird 128 Update for Thunderbird 115 Adapt to Changes in Thunderbird 103-115 Update for Thunderbird 102 Adapt to Changes in Thunderbird 92-102 Update for Thunderbird 91 Adapt to Changes in Thunderbird 79-91 Update for Thunderbird 78 Adapt to Changes in Thunderbird 69-78 Update for Thunderbird 68 Adapt to Changes in Thunderbird 61-68 How to convert legacy extensions? Convert wrapped WebExtensions to modern WebExtensions Convert legacy WebExtensions to modern WebExtensions Convert legacy overlay extension to legacy WebExtension Convert legacy bootstrapped extension to legacy WebExtension