My app got rejected on iOS because of Hot Code Push (initially)

This is a post to warn future aspiring hybrid app developers about Apple.

I don’t really like Apple, but they do make cool phones that a lot of people buy. Therefore, an app cannot not have an iOS version.

Meteor is awesome, I built a reactive app that works everywhere. I even published it on the google Play Store. But there are still some issues with Hot Code Push on Cordova apps. NO PROBLEM!! I installed the arsnebula:appupdate package to let the user know there’s an update and that he could download it if he wanted.

After waiting a long time for Apple to review my app this is what they wrote me:

Upon further review, we found your app includes an update button or
alerts the user to update the app. To avoid user confusion, app version
updates must utilize the iOS built-in update mechanism.

So I ask, how are you supposed to handle Hot Code Pushes in your iOS apps ? Do you just remove it ?

For no I replied to the review message quoting this meteor blog post, but I doubt it will be useful.

I would simply remove the button and use reload-on-resume: https://atmospherejs.com/mdg/reload-on-resume

Maybe you should have waited the end of the validation before updating your server and they would not have know…
I submitted an app last year and it had auto reload / hot code push without user asking or whatever and it was validated.

I thought now you should use autoupdate and reload packages https://atmospherejs.com/meteor/autoupdate and https://atmospherejs.com/meteor/reload

These packages are included by default in the meteor WebApp bundle. The reload-on-resume is to avoid a hot code push anytime there is an update, it pushes the update to the next time the app starts.

I tried the reload-on-resume package but I was experiencing issues like crashes and others like on this issue and this one.

So the only solution I see now is to submit a new version of the app and just not update it until I get a validation. But this is not the way it should be. App updates via Hot Code Push should not be a reason for Apple to reject an app. And putting a notification to let the user know that the app can be updated is the opposite of confusing the user! It prevents the crashes reported in the issues linked above and makes a great UX IMO.

Unfortunately, Apple can be kind of unpredictable when it comes to the app review process. There are plenty of apps out there that use Hot Code Push, and as long as code updates do not change the primary purpose of the app this is explicitly allowed according to Apple’s own rules. What the reviewer seems to object to is alerting the user when an update is available. You can question the reasoning behind it, but I’m not sure that will make much of a difference. So you may want to remove arsnebula:appupdate and submit again.

1 Like

I guess I don’t have any choice but to do as you said. Thanks for the attention.

My Meteor iOS App was approved one week before, I didn’t use appupdate or anything similar to it. Also I didn’t use Meteor Cordova framework, instead I wrote own client iOS App. Just to share my experience, the review process took long time, and during that period, there was no hot code upgrades.
So my recommendation will be remove the appupdate and submit again with explicit explaination.
Wish you best luck…

Yeah, I think the crux of the issue isn’t Hot Code Push, but rather that you’re alerting users to the update, which in Apple’s eyes takes away from the UX of iOS since they already have a separate feature that does that. It might seem silly but it’s what contributes to the cohesive iOS experience.

1 Like

They just accepted my app!!

After replying to the review, the reviewer took into account my explainations about Hot Code Push and reviewed the app again. And it got accepted !!

Apple is less evil than I thought !

If the forums would be a bar, next round would be on me :smile:

4 Likes

Apple is a pain in the a** when it comes to app reviewing…

Kind of silly, since I play Clash of Clans and I often see a message in-game that there is an update available (again, from the game, not from Apple!).

It could also be an issue now because Apple is more diligent about checking for things like virus and trojan horses due to recent issues in China.

In my experience, The thing Apple is against is not that you “notify” the users that an app update is available, its that you actually press a button to update the app (which bypasses the app store). So I don’t think they really care about hot code push, I just don’t think they like the fact that it looks like your “updating” the app, which could be confusing to some users. (Why isnt this update coming through the official app store, etc).

By the way, be wary of reload-on-resume. If the user never goes in the background, they’re going to have old code the entire time they use the app. Which could cause trouble if you have some backwards incompatibilities.

1 Like