I used to design and code Flash and Director web apps, then I start learning Unity3D for the same purpose. Back then, NPAPI browser games were very popular due to their simplicity and low-cost production. Just install the plugin (Flash/Shockwave/Java/Unity/Silverlight) and play, nothing more. This was the future of the gaming industry until Steve Jobs published the open letter "Thoughts on Flash" that criticized Flash Player and detailed Apple's reasoning for not supporting Flash on its iOS device family. Followed by Adobe's decision to discontinuing Flash & Shockwave players. Oracle, Microsoft & Unity took the same step for their NPAPI plugins.
Unfortunately for me (and for a lot of developers), the alternative technologies were not satisfying. The HTML5 and WebGL were not good as Flash. PPAPI, which introduced by Google as "a derivative of NPAPI aimed to make plugins more portable and more secure", did not survive.
Then I heard about WebAssembly (Wasm), I read that "it was an experimental efficient low-level programming language for in-browser client-side scripting". It superseded technologies such as Mozilla asm.js and Google Native Client. It is supported by all major browsers, on various platforms.
Some game engine codebases, like UE4 and Unity, can be converted into WebAssembly by using the Emscripten compiler, and I hope the same thing can be done with the new Genesis3D.
(If you don't know much about Wasm, check out this demo of the BananaBread engine)
Core C++ Engine level discussion