My main gripe with TypeScript (and node/JS) on the backend, is that it's not trivial to scale horizontally. You start node and it's a single event loop.

Most people will tell you to use pm2 to start copies of the server. Well pm2 looks like a hack cobled together. And pm2 has conflict of interest with their paid pm2 server. There's incentive to keep pm2 free version limited.

Other's will tell you to use many docker containers. Seems a bit overkill for some applications.

Why can't it have a simple, mature, built-in multi-threaded server like .NET Kestrel or Go http?