Everest
All articles

How we sync your steps in the background without draining your battery

Published on

How we sync your steps in the background without draining your battery

Everest never counts steps itself: your phone already does that on a dedicated low-power motion chip. The app only reads daily totals from Apple Health or Health Connect during short background wake-ups scheduled by the operating system, uses no GPS, and uploads a few bytes of anonymous totals. The battery cost is negligible.

The promise on our homepage sounds slightly suspicious: badges unlock while your phone stays in your pocket, and your battery does not notice. Skepticism is healthy, because plenty of fitness apps really do murder batteries. So here is exactly how Everest works, with the trade-offs spelled out.

Your phone counts steps whether we exist or not

The single most important fact: Everest does not count steps. Your phone does, permanently, on hardware built for the job.

Since the iPhone 5s in 2013, every iPhone has shipped with a motion coprocessor, a tiny chip that watches the accelerometer around the clock while consuming a small fraction of what the main processor would. Android phones do the equivalent with a sensor hub. Counting your steps is not an app feature; it is a phone feature, already paid for in your battery budget whether or not you install anything.

Those counts land in the system's health store: Apple Health (HealthKit) on iPhone, Health Connect on Android. With your permission, Everest reads step totals from that store. Steps only: the permission is scoped to a single data type, and the app never asks for location, heart rate or anything else.

What "background sync" actually does

When a sync runs, Everest performs three cheap operations:

That is milliseconds of CPU time and, for the anonymous daily totals sent to our server, a payload of a few dozen bytes. No GPS radio, no continuous sensor session, no wake locks held open.

The interesting engineering question is not what the sync does but when it runs, and the honest answer is: when the operating system decides.

On iPhone, Everest registers for HealthKit background delivery: the system wakes the app briefly when new step data is available, at most about once an hour for step data. On Android, a periodic job scheduled through WorkManager does the same, and the system aligns those jobs with moments when the device is already awake. On both platforms, opening the app triggers an immediate catch-up sync as a third path.

The trade-off we accepted: batching over real-time

Both operating systems deliberately batch background work. If ten apps each demanded a wake-up the second new data appeared, batteries would be back to 2010. So iOS and Android group background jobs and run them opportunistically, when the radio is already on or the phone is charging.

The consequence, which we would rather explain than hide: a badge notification can arrive minutes or occasionally hours after the actual moment you crossed the line. The badge itself is always dated at the true crossing, because the step data carries its own timestamps; only the celebration can be late.

We could have fought this with tricks that keep the app alive artificially. Some apps do: silent audio sessions, permanent location monitoring, aggressive foreground services. Every one of those tricks shows up on your battery screen with your name on it, and most get apps rejected from the stores eventually. We took the batching instead. Slightly late confetti, decades of battery life.

Why there is a server at all

One design question deserves an answer: if the phone counts everything, why does Everest have a server? So a fresh install can restore your badge history without an account, using an anonymous device identifier.

What the server stores is deliberately minimal: anonymous daily totals, your unlocked badges, your timezone and your platform. Your minute-by-minute step history never leaves the device; the detailed data stays in Apple Health or Health Connect, under the system's protection, where it belongs. The privacy policy spells this out, and it is short precisely because there is so little to disclose.

The result, measured on our own daily-driver phones during development: Everest does not appear among the top entries of the battery screen at all. The mountain gets climbed either way; the phone barely notices the difference.

FAQ

Does Everest use GPS to track my walks?

No, never. Steps are counted by your phone's built-in motion coprocessor. Everest reads totals from Apple Health or Health Connect; it has no location permission at all.

Why did my badge notification arrive an hour after my walk?

iPhone and Android batch background work to save battery, so the sync that detects a badge can run minutes or hours after you actually crossed the threshold. The badge itself is always dated at the real moment of crossing.

Do I need to keep the app open for steps to count?

No. Your phone counts steps all the time on its own hardware. Everest catches up whenever it syncs, whether the app is open or has been closed for days: no step is ever lost.

Keep reading