# Guideline 2.4.2 - Hardware Compatibility: Excessive Battery Drain or Crypto Mining

**Guideline:** 2.4.2 · **Store:** Apple App Store · **Severity:** high · **Fix difficulty:** hard · **Typical turnaround:** 1-3 days

Canonical URL: https://appstorereject.com/rejections/apple/2/guideline-242-hardware-compatibility-excessive-battery-drain-or-crypto-mining

## Description

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.

## Common variations

- App causes excessive battery drain during normal use
- App generates significant heat during use
- App performs intensive processing not necessary for its functionality
- App engages in cryptocurrency mining on device
- App puts unnecessary strain on device resources

## Example rejection email

```
Guideline 2.4.2 - Performance - Hardware Compatibility

Your app causes excessive battery drain and generates significant heat during normal use. Specifically, the app appears to perform intensive processing operations that are not necessary for the app's stated functionality.

Apps should be designed to minimize battery drain and should not be designed to rapidly drain the battery, generate excessive heat, or put unnecessary strain on device resources.

Next Steps:
Please review your app's resource usage and optimize processing to minimize battery drain and heat generation. If the app performs background processing, ensure it is necessary for the app's core functionality and uses efficient APIs.
```

## Resolution steps

## Quick Assessment
- **Risk level:** High (crypto mining) or Medium (general battery drain)
- **Resolution path:** Fix & Resubmit
- **Typical turnaround:** 1-3 days

## The Fix

1. **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.

2. **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.

3. **Optimize location services** -- If using GPS, switch to `kCLLocationAccuracyHundredMeters` or `significantLocationChange` instead of `kCLLocationAccuracyBest` unless precise location is critical for the current feature.

4. **Fix background processing** -- Ensure background tasks complete within the allotted time and don't run continuously. Use `beginBackgroundTask` properly and call `endBackgroundTask` when done.

5. **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.

6. **Fix memory leaks** -- Run the Leaks instrument in Xcode. Memory leaks cause the system to work harder and drain battery faster.

## Prevention
- Profile battery impact before every submission using Xcode's Energy Diagnostics
- Test on older devices where resource constraints are tighter
- Never include cryptocurrency mining functionality in any form
- Use the lowest-precision APIs that satisfy your requirements

## Appeal guidance

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 examples

**Before:** App continuously polls GPS at `kCLLocationAccuracyBest` every second in the background, even when the map screen is not visible
**After:** App uses `significantLocationChange` for background location, switches to `kCLLocationAccuracyNearestTenMeters` when the map is visible, and stops location updates entirely when not needed
**Why it works:** 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.

## Common questions

**Can you appeal a 2.4.2 rejection?**

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.

**How long does this typically take to fix?**

Typical turnaround is 1-3 days (difficulty: hard). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-242-hardware-compatibility-excessive-battery-drain-or-crypto-mining*