I recently developed Massive Match, the Massively Multiplayer Match 3. I chose to use HTML5 technologies to build it and find out how far the development tooling has come.
Maybe you are an indie developer looking for a quicker easier way to develop games, or you've read of googles latest moves to get rid of flash and are looking for an alternative, if so, read on and enjoy.
In my last game, everything was coded in C# (using monogame), including all of the user interface. When building the menus, overlays and other parts of the UI I spent a lot of time tweaking layout numbers, rebuilding and restarting the game to test them.
In comparison, when building UI using HTML and CSS there are a lot of good features built in. Boxes and gradients can be added without needing art. There is a layout engine built in. Advanced text styling doesn't have to be coded from scratch. Custom fonts. Even animations are included.
When working on UI, small tweaks can take up a lot of the iteration process. All modern browsers include built in dev tools that allow you to edit the layout and style parameters live within your game while watching the resulting changes applied in real time.
You generally shouldn't use HTML for the in game UI as updating it has a performance cost, but for menus and other seldom changing UI it is perfect and can save a lot of development time.
There are plenty of other languages you can use, check out this list on the webpack site for other alternatives.
Websites and games require a lot of iteration. The shorter the time between making a change and seeing it in action the better. As such, a lot of tools have been created to fill this need.
One of these is webpack-dev-server, it watches your files and when any of them changes (Code, Data or Assets) it will recompile anything that needs it and refresh your browser window, immediately showing you the changes in action.
This is an area that still isn't perfect, but it has come a long way.
If you want client<->client UDP, that is even possible now (in Chrome/Firefox, and coming one day to Edge) using WebRTC data channels.
This is pretty new, but if you really want it you can have your code reload without losing state. React (a user interface library) ships with support for this. You can edit your code to change functionality and UI components around and they will be live reloaded without losing the state of the application. When you are 4 screens deep, you'll stay there, you don't need to traverse back in again.
Implementing this in your own game will take a bit of work and probably won't be worth it. But if you want it then webpack ships with the building blocks that will allow you to make it possible.
Gamepads are well supported everywhere except mac.
WebGL is supported on mobile (iOS / Android).
Audio and Video are well supported, including run time generation of audio via the WebAudio API.
HTML5 game development is more than viable. There is great tooling, lots of features built in to reduce development friction and great libraries to use. If you haven't tried it, check it out for your next project.