1. Use of JS to reimplement standard HTML widgets. This has broken my screenreader more times than I care to remember. 2. All of this user-irrelevant garbage, like the dialogs, the social media buttons, and so forth.
I remember a few years back trying to pay my electric bill. Yes, I was using a JS-capable browser. I couldn't actually pay my bill, but there were plenty of "follow us on Facebook" and similar. Like seriously, folks, I just wanna send you money. Really, this should even be something I could do without JS.
Another example: we do online shopping at https://www.fredmeyer.com. Their website is absolutely terrible, with all of the busyness, some of it user hostile. Seriously folks, I just want to give you money for product, not follow you on facebook.
Some sites get it really, really right. I play chess on lichess.org. That site requires JavaScript. And I don't see any way that it could possibly be avoided. But it works beautifully with my screenreader. It's snappy too, even under Firefox on a Raspberry Pi. I used to be a hard core "screw JS" guy. I've softened my stance, because I know it can be used correctly and to great effect.
Just this little reminder: you do not need a privacy consent dialog, if you don't abuse private data.
No external trackers or 3rd party cookies? No data sales to third parties? No shady tactics of your own? You can skip the dialog.