AMO does not require a manual review nor the extension to be uploaded publicly. You can sign it through their site and then distribute it elsewhere.
Also, I don't see how you can compare browser extensions to vscode extensions. One product is aimed at your grandma, the other at software developers and doesn't have access to your email, banking and credit cards.
A streamer has to compete with every other streamer for viewers/income. They're basically trying to sell their personality / themselves to the audience. As other comments mention, the vast majority of streamers cannot do that as they have literally no viewers.
The take that it's an easy job seems very weird to me. If it's so easy, why don't you quit your job and start streaming instead?
Usage times, usage intensity, list of all extensions, country of origin. I don't understand why they'd need those to improve Firefox.
Next thing you know they might try to increase engagement time like they're some sort of social network. "Unlock the new exclusive colorway by logging in 30 days in a row." seems like something that could be implemented, seeing how they're time limited already.
Couldn't crash reports be separated from other telemetry data, possibly with a dialog letting the user whether to send a crash report or not? IIRC, the dialog used to actually exist in older Firefox versions. I find the amount of data they collect[1] to be borderline creepy.
Does the canvas need to be created and removed as it comes in and out of view? Using requestAnimationFrame() might also further improve responsiveness.
I believe Firefox and Chrome do not allow you to set a local html file as a new tab page. You can set it as a home page but then you need to manually navigate to it after creating a new tab.
I personally aim for a startpage that loads instantly and since browsers no longer let you use a local html file as one, I've made an extension that registers a custom new tab page.
I don't use any frameworks since it's a pretty simple page, essentially just groups of links. If you need to, you can always use something like fetch to load external resources.