Guideline 2.4.2
Guideline 2.4.2 - Hardware Compatibility: Excessive Battery Drain or Crypto Mining
Our Take
Apple is rejecting your app because it causes excessive battery drain, generates excessive heat, or places unnecessary strain on device resources. Guideline 2.4.2 specifically prohibits apps designed to drain the battery, and it was notably updated to explicitly ban cryptocurrency mining on iOS devices. The crypto mining ban covers all forms: mining in the foreground, mining in the background, mining using the device's GPU/CPU, and even coordinated mining where your app contributes to a mining pool. There is no compliant way to mine cryptocurrency on an iOS device through an App Store app. For non-mining apps, this rejection targets inefficient code that causes the device to overheat or drain battery abnormally fast. Common causes include: (1) continuous GPS polling at maximum accuracy when approximate location would suffice, (2) keeping the screen awake unnecessarily, (3) excessive background processing, (4) unoptimized rendering loops that pin the CPU at 100%, and (5) memory leaks that cause the OS to work harder over time.
Resolution Guide
If crypto mining: remove it entirely
There is no workaround. Remove all mining code, mining SDKs, and any blockchain computation from the binary. Cloud-based mining displayed in the app is acceptable, but on-device mining is not.
Profile with Instruments
Use Xcode's Energy Log instrument and CPU Profiler to identify what's consuming excessive resources. Focus on: CPU usage, GPU usage, location services, network activity, and background tasks.
Optimize location services
If using GPS, switch to kCLLocationAccuracyHundredMeters or significantLocationChange instead of kCLLocationAccuracyBest unless precise location is critical for the current feature.
Fix background processing
Ensure background tasks complete within the allotted time and don't run continuously. Use beginBackgroundTask properly and call endBackgroundTask when done.
Optimize rendering
For apps with animations or real-time rendering, ensure you're not running at max frame rate when the screen is static. Use CADisplayLink and pause it when not needed.
Fix memory leaks
Run the Leaks instrument in Xcode. Memory leaks cause the system to work harder and drain battery faster.
Prevention
Example Rejection Email
Consider Appealing
If your app legitimately requires intensive processing (e.g., video editing, 3D rendering, AR), explain the use case in the Resolution Center and provide evidence that the processing is necessary for the app's core functionality. If the rejection is about crypto mining, there is no viable appeal.
Before & After
App continuously polls GPS at kCLLocationAccuracyBest every second in the background, even when the map screen is not visible
App uses significantLocationChange for background location, switches to kCLLocationAccuracyNearestTenMeters when the map is visible, and stops location updates entirely when not needed
What changed: Use the lowest-precision location API that satisfies the feature's actual requirements. High-precision GPS is the single biggest battery drain for most apps.
Community Solutions · 0
Sign in to share your solution.
More Guideline 2 (Performance) rejections
- Guideline 2.1 - App Completeness: App Crashes During Review
- Guideline 2.1 - App Completeness: App Requires External Hardware Not Provided for Review
- Guideline 2.1 - App Completeness: Crashes on Launch
- Guideline 2.1 - App Completeness: Demo Account Not Working
- Guideline 2.1 - App Completeness: IAP Products Not Found in Binary
- Guideline 2.1 - App Completeness: Missing App Icon