Doing things on the client means user's CPU is doing some work which else would need to be done on the server, for maybe thousands of clients at the same time.
So I understand some people don't like JavaScript, but then I think the solution would be WebAssembly. I mean the point of distributed computting is that the computational load can be distributed. Perhaps counter-intuitively that often also means less need fo communications and latencies.