Flash and Java, honestly, albeit in different ways. Both saw the web as a platform above all platforms.
Flash was the only way for browsers to do anything high-performance or good-looking from like 1997 to 2010. Any idiot could slap together a cool spinning animation with gradient-colored vector graphics. There were countless genuinely-free games, apparently made for the fun of making them, and even more interactive animations, apparently made to be as offensive as humanly possible.
Java was the big-grey-rectangle alternative, where you knew your browser was about to spend five entire minutes loading something, just to demonstrate a bouncing ball experiment or whatever. But: it was a real general-purpose executable format, with no installation or setup. You stuck a program on a page and it worked right there on the page. Eventually. And once it loaded it'd hitch and jerk constantly, because garbage-collection was always a terrible idea. But sometimes you'd find a page that'd hitch and jerk through playing Quake 2 in your goddamn web browser.
What ultimately killed them was that Adobe is among the worst software companies in the world and Oracle is number one. Flash was a security nightmare. It was hacked together for impressive functionality, and then repackaged for ease of use, so it was about as exploit-hardened as a wet paper towel. The fact it ran poorly on phones (and Steve Jobs was a dick) was just the excuse to stop tolerating its endless vulnerabilities. Java meanwhile was an okay format owned by the devil. It served kinda the same role as WebAssembly does now, except absolutely no-one wanted to put up with licensing it, because Oracle likes to sue its competitors and fuckin' loves to sue its customers. The company name is an acronym for One Rich Asshole Called Larry Ellison. And if two devices running Java connect via wifi, he expects the air in-between them to be properly licensed. If the free software movement had not been founded to say "fuck printers," it would have sprung into being in order to say "fuck Oracle."
Anyway.
Google Chrome, intolerable leash that it now is, made Javascript usefully fast in 2008. Prior to that it was interpreted. Javascript calculators in the AOL days could lag. Mozilla responded with asm.js, inviting the language itself to be performant. Nowadays just about anything could be WASM + WebGPU, and quite frankly most things should be. But for some stupid reason even the chat programs written in Javascript bundle their own browser.
IMO there's still nothing that's quite as good as Flash. Efficient vector animations that perform consistently across all major browsers are still unusually hard for non-developers. There are some solutions, but they usually aren't as designer or animator-friendly and require a huge JavaScript library to be loaded. The barrier to entry for non-developers (or inexperienced developers) creating games that run well cross-browser is still quite high too.
I remember creating a Flash-based chat system back in the day. Before WebSockets and Server Sent Events, Flash was the only way to get bidirectional sockets in a web browser, other than Java applets of course (which were pretty locked down by that point).
Ruffle is obviously as good as Flash, by emulating Flash - but yeah, the creative environment is missing. We need some .io page that clones the old way of churning out 2D games and animations.
We're in a stupid period of computing where a legitimate way to get games on smartphones and computers is to publish software for DOS because everything has some kind of emulator for that archaic platform.