Hacker News new | ask | show | jobs
by lucideer 1911 days ago
Definitely fine for Android (there's plenty of them), but I would've thought the same for iOS.

Now that I think of it though, I think the Apple ToS that prohibit browsers are about function (app used to browse the web) rather than internals (language support in the engine).

2 comments

I think the issue is if you interpret dynamically fetched code. So you couldn't use this for out-of-band updates to internals (unless you're important enough).
I'm not sure that's true. When you use react native you can update your javascript bundle and push it to an application already deployed to the App Store and that doesn't seem to be an issue. The application can check at startup if a new bundle is available, otherwise defaults to the local bundle.

See the expo documentation for details: https://docs.expo.io/bare/updating-your-app/.

Apparently Apple is ok with out-of-band updates as long as they don't add or change features. If it's used to fix a bug then it's ok (at least they haven't cracked down on React-native apps using codepush/expo's auto update feature, yet.). There have been reports of Apple's reviewers asking for clarification on why apps have the ability to update, and as long as the answer is "bug fixes" then they approve the app.
Apple's ToS prevent any kind of interpreted language in iOS apps.

> 2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps. Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.

Basically embedding any interpreted language inside the app is frowned upon by apple. But historically they have allowed JavaScript and Lua scripts to be embedded in apps.

"Such apps must make the source code provided by the Application completely viewable and editable by the user."

arguably the ability to view source was what created the possibilities of the Web, and as such I don't read this term to be restrictive but instead merely trying to get the best outcome for everyone.

disclaimer being that I have spent a large part of the past year evaluating a ios app for commercial release that both relies on decades of proprietary design and which probably doesn't have a significant future unless it is opened extensively or completely.

That does not ban the interpreters. It prevents interpretation of downloaded code. But as long the sources to be interpreted are bundled with app, it is OK at least from that section.
I mean, it depends on what they mean by "execute", right? As far as iOS knows your app is just looping through some binary data.