From my experience WebSockets are harder at scale. For load balancing you either need sticky sessions or an L7 proxy that can route consistently, and reconnect storms amplify this. Long-lived upgraded connections mean more complexity with rolling deploys, drains, autoscaling, and regional failover. Many managed LBs/proxies have tighter limits/timeouts for WS, so you must tune idle timeouts and ping/pong.
import-maps (supported via "imports" in package.json) improve developer ergonomics, not performance. Node still resolves the mapped path normally; there’s no measurable “boost.”
They’re helpful to replace ugly relative imports, but they don’t change Node’s lookup speed.
Aliases in vite.config.js tell Vite (and its dev server/bundler) how to resolve imports during build and dev time. They don’t make runtime faster because your bundled output already contains resolved paths.
Snyk and socket.dev take money for the pain and suffering...