Fundamentally, if a language’s compilation target is designed with type safety in mind (see my .NET JIT example), then there is hopefully less chance for things to go wrong.
It could work offline if you were to distribute the backend with the frontend; this is essentially how NW.js (formerly Node-WebKit) works, just that I’m proposing to replace Node.js with something more appropriate **if** necessary.
How is it harder to debug? Please could you give me an example?
I agree with you regarding larger apps, but I have written plenty of these without needing a type system. I do believe that JavaScript apps should be as lean as possible — ideally doing quite little — but even in the case of larger, single-page applications, shouldn’t as much of the complexity as possible be delegated elsewhere?