Plan and audit mobile app battery usage. Covers energy profiling, background task management, network request coalescing, location services tuning, and...
Last updated 2026-03-05
Battery Optimization Template for PMs
Free Battery Optimization Template for PMs — open and start using immediately
or use email
Instant access. No spam.
⚡
Get Template Pro — all templates, no gates, premium files
888+ templates without email gates, plus 30 premium Excel spreadsheets with formulas and professional slide decks. One payment, lifetime access.
Battery drain is the number one reason users uninstall mobile apps they otherwise like. Apple's App Store review guidelines flag excessive battery usage, and Android's Adaptive Battery system throttles misbehaving apps automatically. Yet most product teams never measure their app's energy impact until users start complaining in reviews.
This template provides a structured approach to profiling, auditing, and optimizing your app's battery consumption. It covers the five main energy consumers (CPU, network, GPS, display, and background tasks), platform-specific profiling tools, optimization strategies, and ongoing monitoring. Use it during development to set battery budgets and during production to investigate complaints.
For the full mobile performance picture, the Mobile Performance Template covers frame rates, startup time, and memory alongside energy. If you need to design background data refresh, the Background Sync Template covers sync strategies that respect battery constraints. The Mobile App PRD Template is the right starting point if you are defining the overall mobile product.
How to Use This Template
Profile your app's current battery consumption using platform tools. Get a baseline before making changes.
Identify the top energy consumers. Usually it is network requests, location services, or CPU-intensive operations.
Set battery budgets per feature area. Define acceptable energy consumption for each major subsystem.
Implement optimizations starting with the highest-impact, lowest-effort items.
Add energy monitoring to your CI and release process so regressions are caught early.
Monitor App Store / Play Store reviews and battery usage reports for user-reported issues.
The Template
Product Context
Field
Details
Product
[Product name]
Platforms
[iOS, Android]
App category
[e.g., Social, Productivity, Fitness, Navigation]
Typical session length
[X] minutes
Sessions per day
[X]
Background activity
[Yes / No. If yes, what runs in background?]
Location services
[Always / While Using / Never]
Push notifications
[Yes / No. Silent pushes?]
Current battery complaints
[X] App Store reviews mention battery in last 90 days
Energy Profiling Baseline
Run profiling on a representative device for each platform. Use the following tools.
Profiling Tools
Platform
Tool
What It Measures
iOS
Xcode Instruments > Energy Log
CPU, Network, Location, Display, Overhead per process
iOS
Xcode Organizer > Energy Reports
Field data from real user devices
iOS
MetricKit (MXDiagnosticPayload)
Aggregated energy data from production users
Android
Android Studio Profiler > Energy
CPU, Network, Location, Wake Locks per process
Android
Battery Historian
System-wide energy breakdown from bug report
Android
Perfetto
Detailed trace-level energy analysis
Baseline Measurements
Metric
iOS Value
Android Value
Target
Notes
Battery drain per hour (foreground)
[X]%/hr
[X]%/hr
< [X]%/hr
[Measure during typical usage scenario]
Battery drain per hour (background)
[X]%/hr
[X]%/hr
< [X]%/hr
[With all background features enabled]
CPU time per minute (foreground)
[X] ms
[X] ms
< [X] ms
Network transfers per hour
[X] requests, [X] MB
[X] requests, [X] MB
Location updates per hour
[X]
[X]
Wake locks per hour
N/A
[X]
< [X]
[Android only]
Background launches per day
[X]
[X]
< [X]
Energy Consumer Audit
CPU
Area
Current Behavior
Energy Impact
Optimization
App startup
[e.g., Heavy initialization on main thread]
[High / Medium / Low]
[Defer non-critical init, lazy load]
Scrolling / List rendering
[e.g., Complex cell layouts, image decoding on scroll]
[e.g., Replace 30s polling with push notifications]
[X]%/hr
[3 days]
[Name]
☐
P0
[e.g., Stop continuous location when map is closed]
[X]%/hr
[1 day]
[Name]
☐
P1
[e.g., Coalesce analytics network requests]
[X]%/hr
[2 days]
[Name]
☐
P1
[e.g., Add timer tolerance for background tasks]
[X]%/hr
[0.5 days]
[Name]
☐
P2
[e.g., Implement dark mode]
Display savings only
[1 week]
[Name]
☐
P2
[e.g., Reduce animation frame rate]
[X]%/hr
[1 day]
[Name]
☐
Monitoring and Alerting
Signal
Source
Threshold
Alert
Battery drain reports
iOS MetricKit / Android Vitals
> [X]%/hr for >5% of users
Slack alert to mobile team
App Store reviews mentioning battery
AppFollow / Appbot
> [X] reviews/week
Weekly digest
Background energy quota exceeded
iOS Organizer / Android Vitals
Any quota violation
Immediate investigation
CI energy regression
Automated profiling in CI
> [X]% increase vs baseline
Block release
Filled Example: Fitness Tracking App
Energy Consumer Audit (Example)
Consumer
Current Impact
Optimization
Savings
GPS tracking during workout
18%/hr (continuous best accuracy)
Switch to 10m accuracy for running, best only for hiking/cycling. Pause when stationary > 30s.
6%/hr saved
Heart rate polling via BLE
4%/hr (1s intervals)
Change to 5s intervals during warm-up/cool-down. 1s only during active intervals.
2%/hr saved
API sync every 30s during workout
3%/hr (uploads GPS + HR data)
Buffer locally, upload in 5-minute batches. Full sync on workout end.
2%/hr saved
Map rendering
5%/hr (continuous map updates)
Update map every 5s instead of every 1s. Pause rendering when screen off (audio cue instead).
3%/hr saved
Total active workout drain
30%/hr
Optimized
17%/hr (43% reduction)
Low Battery Behavior (Example)
Feature
Normal
Below 20%
GPS tracking
Best accuracy, 1s intervals
10m accuracy, 5s intervals
Map display
Live updating with route trace
Static route overview, update every 30s
Heart rate
1s during intervals, 5s otherwise
10s constant
Audio coaching
Full voice + music
Voice cues only, pause music
Post-workout sync
Immediate upload with map generation
Defer to WiFi + charging
Frequently Asked Questions
How much battery drain per hour is acceptable?+
For a typical consumer app, aim for less than 5% per hour during active foreground use and less than 0.5% per hour when backgrounded. Navigation and fitness apps that use continuous GPS will naturally consume more (10-15%/hr is reasonable during active tracking). Compare against competitors in your category. Check your app's ranking in Settings > Battery on both platforms, and investigate if your app appears in the top 3 battery consumers for more than 5% of users.
Should I disable features in Low Power Mode or just optimize them?+
Optimize first, disable only as a last resort. Users turned on Low Power Mode to extend battery life, but they still want your app to work. Reducing sync frequency, lowering location accuracy, and simplifying animations are good optimizations that preserve functionality. Disabling background sync entirely or removing location features creates a degraded experience. Only disable features that are genuinely optional (video autoplay, analytics, background content preloading). For tracking which features users rely on most, the [mobile analytics plan](/templates/mobile-analytics-plan-template) covers feature usage instrumentation.
How do I measure battery impact in CI?+
Xcode's `xctrace` command-line tool can capture energy traces during automated tests. For Android, use `dumpsys batterystats` before and after a test scenario, then analyze with Battery Historian. Neither gives you exact mAh measurements in CI, but both provide relative comparisons against a baseline. Set a threshold like "energy usage during test scenario must not increase by more than 10% vs baseline" and fail the build on regression. For deeper investigation, [usability testing](/glossary/usability-testing) with real devices in realistic conditions provides ground truth.
What is the single biggest battery drain in most apps?+
Network activity, specifically frequent small requests that prevent the radio from entering sleep mode. Every network request wakes the cellular radio, which stays powered for 10-30 seconds after the request completes. Making 20 small requests over 5 minutes keeps the radio continuously active. Batching those into 2-3 larger requests lets the radio sleep between bursts, reducing energy consumption by 40-60%. This is why request coalescing and push-over-polling are the highest-impact optimizations for most apps.
Explore More Templates
Browse our full library of PM templates, or generate a custom version with AI.