> Apps that browse the web must use the appropriate WebKit framework and WebKit Javascript
Original comment:
AIUI the only real restriction here is against executing downloaded code, but you should be able to still write your own competing engine as long as you use JavaScriptCore to execute JS. That said, you can't do out-of-process execution or JIT compilation, so your engine won't be as fast as WKWebView, which means it won't be competitive and so there's not much reason to go through all the effort of making a new iOS browsing engine if users aren't going to want to use it.
That's not a valid reason. With per-app sandboxing. At worst a non-Apple native browser that escape the confines of the web page and be subject to app security.
That amounts to using "security" as an argument for not being allowed to do something with the reason as, "Because we're smart and you're not".
Safari has a special permission (entitlement) that allows it to compile JavaScript to native code. This is what their JIT does.
This is something that no third-party app has ever gotten. No JIT means slow JavaScript. No ASM.js, no WebAssembly.
I have mixed feelings about giving third-party applications (browsers) this permission. Bugs can lead to remote code execution, can lead to sandbox escapes, can lead to compromised devices.
This is a really tough one. Specially for apps that load random content from the web.
The whole point of having different browsers is to have competition (which means better performance/new features), but currently in the iOS world there is Safari and multiple reskinned Safaris.