Background modes and services are justified and not battery-draining
Why it matters
Apple's guideline 2.5.4 requires that background modes declared in UIBackgroundModes actually be used by the app. An app that declares location and fetch background modes but contains no corresponding background location or fetch code raises an immediate red flag — reviewers check Info.plist against the source code. Beyond rejection risk, unused background modes claim battery budget Apple allocates to those modes, harming device performance. Overly frequent background tasks (running every 15 minutes for work that could run daily) trigger Apple's background task termination policies and degrade the user's battery life.
Severity rationale
Medium because declaring unused background modes triggers rejection under guideline 2.5.4 and Apple's reviewers specifically cross-reference UIBackgroundModes against app functionality.
Remediation
Remove every UIBackgroundModes entry that has no corresponding runtime usage from app.json.
// app.json — only include modes actually used
"ios": {
"infoPlist": {
"UIBackgroundModes": ["audio"]
}
}
For background fetch on Expo, use TaskManager and BackgroundFetch with the minimum feasible interval — BackgroundFetch.setMinimumIntervalAsync(3600) for hourly is more defensible than 15 minutes for most use cases. For location: request WhenInUse authorization unless continuous background tracking is the app's core purpose. Include a note in your App Store review notes explaining each declared background mode.
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-2.5.4-background-modes — Apple App Store Review Guideline 2.5.4 — Background Modes Must Be Justified
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated