Apple's guideline 1.1.7 and Google Play Developer Policy both explicitly prohibit incentivized reviews and review gating. Offering in-app currency for a review (if (userLeftReview) grantCoins(50)) is a direct policy violation detectable in source code. Review gating — asking "Do you like our app?" and only showing the store prompt if the answer is "Yes" — is equally prohibited because it systematically filters out negative reviewers. Both practices result in App Store rating manipulation, which Apple takes seriously. Reviewers actively look for both patterns, and discovery results in immediate rejection plus potential listing removal.
High because both incentivized reviews and review gating are explicitly prohibited by Apple guideline 1.1.7 and can result in rejection plus listing consequences.
Remove any coin/reward grant tied to review submission and any satisfaction pre-filter before the rating prompt.
// Correct: trigger rating prompt after a meaningful task, no pre-screening
import * as StoreReview from 'expo-store-review';
async function onOrderCompleted() {
const completedCount = await AsyncStorage.getItem('order_count');
const hasPrompted = await AsyncStorage.getItem('has_rated');
if (parseInt(completedCount ?? '0') >= 3 && !hasPrompted) {
if (await StoreReview.hasAction()) {
await StoreReview.requestReview();
await AsyncStorage.setItem('has_rated', 'true');
}
}
}
Delete any if (userSaidTheyLikeApp) showRatingPrompt() branching logic. Never grant rewards contingent on a review submission. Apple's system caps the native dialog to 3 prompts per year — your code should also track and respect this limit.
app-store-review-blockers.policy-compliance.no-incentivized-reviewshighif (userLeftReview) grantCoins()); copy that says "Rate us and get 100 coins"; gating of features behind a review submission. Also look for review gating: showing a rating prompt only after a user indicates they are satisfied ("Do you like our app?" → Yes → show rating prompt; No → send to support). Review gating is explicitly prohibited by both Apple and Google. Search for StoreReview or InAppReview combined with a prior satisfaction check that branches based on the user's response."src/screens/HomeScreen.tsx shows 'Rate us for 50 coins!' dialog — incentivized reviews are prohibited" or "Rating prompt is shown only after user answers 'Yes' to 'Are you enjoying the app?' — this is review gating"import * as StoreReview from 'expo-store-review';
// After user completes a task:
if (await StoreReview.hasAction()) {
await StoreReview.requestReview();
}