If your goal is reliable, clean code, I think bevy is the way to go.
But whether you really need a rust wasm depends on many more factors.
The first consideration is performance.
Making it all wasm can have a bad performance impact.
In particular, calling js types in rust involves a huge overhead.
This is why rendering engines built on javascript (babylon.js, three.js, Aframe, PlayCanvas) perform better in browsers than those built with native engines wasm (Unity, bevy).
The second is the size of the builds.
Unlike javascript, wasm does not allow you to split a build into multiple files, like javascript’s async imports.
This creates a bad user experience on initial page load, for example in games that use Unity WebGL builds.
Among javascript-based 3D rendering engines, babylon.js is almost the only one based on typescript, with many bugs being caught at compile time.
And bugs reported in the forums are fixed quickly, within a week at the earliest.
For these reasons, I recommend using babylon.js for projects that use typescript to create reliable 3D web applications with a typed system.
On the other hand, WASM can solve a number of performance issues when used locally
If a task is very CPU intensive and the required input is not complex in shape, accelerating with wasm can provide an improvement of several orders of magnitude.
This project is using the rust wasm to multithread certain logic. If performance considerations are part of your reason, you may want to consider developing something similar to this repository.