

JS is fine, it’s more that people overdo it and bundle their heavy, deeply layered frameworks with thousands of npm dependencies for the web. Often times analytics/tracking/ad libraries are a major contributor of bloat, I once shrunk down a package-lock from thousands of lines to a few hundred just by stripping the telemetry libraries from an open-source app.
Use the right tool for the job. Sometimes it’s a static page, sometimes a server-rendered dynamic page and sometimes a single-page application, all of those can be made performant.
Also the iOS SDK isn’t freely available, so you’d have to copy that out of an Xcode installation… but given enough time and effort, you could almost certainly hack together a cross-compilation config for Clang that compiles an unsigned iOS app on Linux. Signing it might in fact be the bigger issue, since I’m not aware of any tools that sign Mach-O binaries on Linux.