Facebook's newest iOS update, out today, fixes a major battery draining bug that some Facebook users have been experiencing in recent weeks. Affected users were seeing large amounts of battery drain on their iPhones due to Facebook running in the background, something that happened even when background app refresh was toggled off in the Settings app.
While the latest Facebook app release notes don't include a reference to the issue, Facebook engineering manager Ari Grant wrote a post (via TechCrunch) explaining the issues behind the battery drain and what Facebook has done to fix it. According to Grant, there were several factors that contributed to the problem, including a "CPU spin" in the network code and silent background audio sessions that kept the app awake even when it wasn't open.
The first issue we found was a "CPU spin" in our network code. A CPU spin is like a child in a car asking, "Are we there yet? Are we there yet? Are we there yet?"with the question not resulting in any progress to reaching the destination. This repeated processing causes our app to use more battery than intended. The version released today has some improvements that should start making this better.
The second issue is with how we manage audio sessions. If you leave the Facebook app after watching a video, the audio session sometimes stays open as if the app was playing audio silently. This is similar to when you close a music app and want to keep listening to the music while you do other things, except in this case it was unintentional and nothing kept playing. The app isn't actually doing anything while awake in the background, but it does use more battery simply by being awake. Our fixes will solve this audio issue and remove background audio completely.
When the Facebook battery draining issue first began circulating, MacStories' Federico Vittici hypothesized it was caused by silent audio running in the background, which turned out to be correct. Vittici believed Facebook used silent audio intentionally as a way to keep the app active in the background for tasks like pre-loading content, which he said showed "a deep lack of respect for iOS users."
Regarding today's comment from Facebook engineer Ari Grant, TechCrunch's Matthew Panzarino also suspects there's a possibility Facebook's use of background audio might have been done on purpose, despite Facebook's claim that it was an unintentional bug.
So if you believe Grant, this is a simple bug. It could happen to anyone etc etc. If you don't believe him, it was a thing Facebook was doing to make their app work a way they wanted it to but Apple didn't and they got caught. I'm not gonna pass any judgments here -- bugs happen all of the time and it's not fun to get pilloried over a simple mistake. Either way, attention was brought to it and it's fixed now.
Grant says fixes have been implemented for both of the issues causing battery drain and Facebook users "should see improvements in the version released today." Facebook will also continue to improve the battery usage of its iOS app.