Section 2.3.1 of the App Store Review Guidelines and Feature Flags

From the App Store Review Guidelines (https://developer.apple.com/app-store/review/guidelines/):


"2.3.1 Don’t include any hidden or undocumented features in your app; your app’s functionality should be clear to end-users and App Review. Egregious or repeated behavior is grounds for removal from the Developer Program. We work hard to make the App Store a trustworthy ecosystem and expect our app developers to follow suit; if you’re dishonest, we don’t want to do business with you."


The context of this is:

"2.3 Accurate Metadata

Customers should know what they’re getting when they download or buy your app, so make sure your app description, screenshots, and previews accurately reflect the app’s core experience and remember to keep them up-to-date with new versions."

How does Section 2.3.1 bear on the use of feature flags? (e.g., as described in http://swreflections.blogspot.com/2014/08/feature-toggles-are-one-of-worst-kinds.html with implementations such as https://github.com/mattt/GroundControl and https://launchdarkly.com/featureflags.html). Literally speaking, a feature flag hides a feature, which can be turned on at a later point.


As long as the app description, screenshots, and previews accurately reflect the app’s core experience, are the use of feature flags acceptable to the Apple App Store?


Chris.

Replies

If a feature is not available for review by App Review then it can't be turned on within the app at a later date. If a feature is central to the user's experience and not included in the app description then can't be turned on at some date. That's what 2.3 states.


On the other hand, if you make App Review aware of the hidden feature and provide a back-door method for them to review it then you can turn it on at some remote date. If the feature is not central to "your app’s functionality" then it does not need to be include in the description. If the feature is central to the user's experience then you can update the metadata describing the app (and issue an alert to current users) at the same time that you turn the feature on.


Or, just do it in an app update.

Sounds like the recent 'hot push' purge' might be related...


See Re: Message from Apple Review...

We know one developer who uses remote configuration (feature flags) to hide features during app review time. He has implemented features that would require the app to be age rating 17+ instead of 4+. Also he offers a free upgrade of the app in exchange for a positive review on the App Store (incentivized review), which is prohibited by the guidelines. After each app review round the developer remotely activates both features, so the the Apple review team never has a chance to detect this malicious behavior.


How can we report this to Apple?