Yes for the past few decades we've been dealing with HTML5 and related technologies. And while great for laying out simple websites, it pales in comparison to things like Flash in terms of building interactive games and animations. It's just not made to do that stuff and attempts to make it do stuff like that anyway tend to involve a lot of hackery, and workarounds for it's many limitations. Sometimes somebody manages something really nice with it but it seems to be non trivial to deliver good results consistently with it.
People frequently call out how wonderful "native" applications are compared to web applications are fundamentally talking about these limitations. Most web applications that also have mobile applications deliver a second rate and more mediocre experience on the web. With Canvas, WebGL, WASM, etc. a lot of that can now be addressed. Hence ruffle being able to deliver the experience we had decades ago when people routinely knocked out all sorts of things in Flash that are near impossible to do with HTML 5/JS without a lot of work.
All IOS and Android do is provide programmers a robust component library and a modern development experience around it; which is something web developers simply don't have and never have had. The built in browser components are pretty poor in comparison and the stuff people hack around that isn't a whole lot better typically. That's why people prefer native: richer components that work smoother and better. It's just nicer. And less work.
After two decades, I don't believe HTML5 + JS/CSS is actually fixable. There's a technical gap with "native" applications in terms of what it can be made to do. Luckily, with WASM, we don't have to. Ruffle is a nice example of that. Applications like Figma show that UIs in a browser can be fast, responsive, and slick. I see it as an early example of a new style application that mostly just opts out of the traditional web stack and its limitations.
WASM is only going to get better. Jetbrains actually silently released a WASM compiler for Kotlin recently that currently requires several experimental flags on Chrome to enable all the new features it needs for e.g. garbage collection and a few other things. Once that stuff stabilizes in browsers, there's going to be an influx of languages that don't do manual memory management and those languages will bring new tools and component frameworks. It will become basically a general purpose architecture you can target with pretty much anything that has a compiler. Doing DOM/CSS based work with that is going to be possible of course. But driving a "native" framework that bypasses that, probably makes more sense for a lot of things.
People frequently call out how wonderful "native" applications are compared to web applications are fundamentally talking about these limitations. Most web applications that also have mobile applications deliver a second rate and more mediocre experience on the web. With Canvas, WebGL, WASM, etc. a lot of that can now be addressed. Hence ruffle being able to deliver the experience we had decades ago when people routinely knocked out all sorts of things in Flash that are near impossible to do with HTML 5/JS without a lot of work.
All IOS and Android do is provide programmers a robust component library and a modern development experience around it; which is something web developers simply don't have and never have had. The built in browser components are pretty poor in comparison and the stuff people hack around that isn't a whole lot better typically. That's why people prefer native: richer components that work smoother and better. It's just nicer. And less work.
After two decades, I don't believe HTML5 + JS/CSS is actually fixable. There's a technical gap with "native" applications in terms of what it can be made to do. Luckily, with WASM, we don't have to. Ruffle is a nice example of that. Applications like Figma show that UIs in a browser can be fast, responsive, and slick. I see it as an early example of a new style application that mostly just opts out of the traditional web stack and its limitations.
WASM is only going to get better. Jetbrains actually silently released a WASM compiler for Kotlin recently that currently requires several experimental flags on Chrome to enable all the new features it needs for e.g. garbage collection and a few other things. Once that stuff stabilizes in browsers, there's going to be an influx of languages that don't do manual memory management and those languages will bring new tools and component frameworks. It will become basically a general purpose architecture you can target with pretty much anything that has a compiler. Doing DOM/CSS based work with that is going to be possible of course. But driving a "native" framework that bypasses that, probably makes more sense for a lot of things.