App does not request all permissions immediately on first launch
Why it matters
Requesting camera, location, and notification permissions simultaneously on first launch is one of Apple's most-cited rejection reasons under guideline 5.1.1 (data collection and storage). Users who see a permission flood immediately deny everything, and reviewers interpret it as a sign the developer hasn't thought about why each permission is actually needed. More practically: a user who denies all permissions on first launch may never see the feature that needs them, making the permission useless. Contextual permission requests — asked at the moment the feature is first triggered — produce dramatically higher grant rates and clearer justification.
Severity rationale
Medium because permission floods are a documented rejection trigger under Apple guideline 5.1.1, though the app may still function if users deny.
Remediation
Move each permission request to the exact moment the user first triggers the feature that needs it — not in App.tsx on mount.
// src/screens/CameraScreen.tsx
async function handleTakePhoto() {
const { status } = await Camera.requestCameraPermissionsAsync();
if (status !== 'granted') {
Alert.alert('Camera access needed', 'Please enable camera access in Settings to take photos.');
return;
}
// proceed with camera
}
For notifications, add a pre-permission screen explaining the value ("Get alerts when your order ships") before calling requestPermissionsAsync(). Never fire multiple permission requests in parallel with Promise.all().
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the App Store Review Blockers Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · apple-guideline-5.1.1-data-collection — Apple App Store Review Guideline 5.1.1 — Data Collection and Storage (permission context)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated