The technology in use is called XPFE. For a full (graphical) overview, see http://mb.eschew.org/1
It is different sorts of XML (XBL, XUL, RDF, DTD) controlled via Javascript and styled by CSS running on top of a C++ runtime. The components, the runtime exposes, can be accessed directly from within Javascript. Most of the application specific stuff is written in the XML+JS+CSS domain. There may be the one or other app-specific support library, but in the end, they all run on top of the same xulrunner binary.
Which is to say, exactly like Electron. The only relevant difference that I can see between XUL and Electron is that the former had its own non-HTML-based markup language for UI.
$ cloc build/ ldap/ editor/ mailnews/ mail/
3938 text files.
3848 unique files.
949 files ignored.
github.com/AlDanial/cloc v 1.80 T=6.01 s (497.6 files/s, 127309.9 lines/s)
---------------------------------------------------------------------------------------
Language files blank comment code
---------------------------------------------------------------------------------------
C++ 360 36718 26562 207587
JavaScript 1098 39149 63692 195828
CSS 278 7371 2664 30455
C 83 5339 8278 29463
C/C++ Header 413 7091 8979 24034
IDL 238 3205 0 18852
XML 40 1365 690 16902
JSON 24 7 0 5367
DTD 180 772 1360 5344
Python 24 893 2422 3740
NAnt script 118 489 0 2512
Objective C++ 5 461 163 2231
HTML 62 178 22 1666
XHTML 14 186 98 1096
INI 28 46 12 687
Windows Module Definition 7 24 156 354
LESS 1 33 52 183
make 4 36 22 133
TOML 1 17 7 110
Freemarker Template 6 24 0 98
WiX source 1 11 25 71
Ant 1 6 5 49
Markdown 1 10 0 49
Bourne Shell 3 8 11 23
Windows Resource File 2 6 11 15
---------------------------------------------------------------------------------------
SUM: 2992 103445 115231 546849
---------------------------------------------------------------------------------------Lightning is strictly speaking an independent project from Thunderbird, but it is far and away the most-used extension in Thunderbird and parts of it (particularly the backend) have essentially moved into the TB distribution for various policy reasons. There's some other stuff that's basically build system, release engineering, or testing gunk, but that stuff is mostly Python anyways and won't impact the SLOC metrics too badly.
Too simplistic :-)
The largest pieces of the backend that are in JS are the RSS functionality and gloda (one of the search backends), as well as half of the MIME parser.