Mainstream browsers have supported WebGL since 2011/2012 (and WebAssembly since 2017).

Why has this not triggered a revolution in browser games? It feels like the best browser games are still the ones from the Flash era.

You can see a cross-Browser WebGL Game Engine here:

https://github.com/BabylonJS/Babylon.js

In general, the tradeoffs are:

* WebGL is not always available and enabled in all browsers

* Spacial Audio effects and formats are inconsistent across platforms

* mouse/keyboard/game-pad support is tricky (browser security is messy)

* Rigging a mesh for animation gets computationally expensive

* Basic collision detection and snapping to surfaces is always computationally expensive, so to make it performant people use 90's style sphere/cube assumptions

* mutable textures are supported, but basic animated effects still bloat into video memory

* all game assets and runtime code are exposed to end users

Thus, most conclude JS+WebGL are incompatible with most commercial settings, and basic anti-cheat enforcement. Note, WebAssembly+webGL is marginally improved, but again further reduces the number of supported platforms.

People tend to prefer native App binaries, as unity3D/OpenGL can allow better content experiences without the added resource overhead. One could try to fight this trend, but Apple/Google/Microsoft want their cut... and will continually do things that enforce their bottom line.

Have a wonderful day... =)