The step count is a polite fiction. It disagrees across devices, double-counts when two of them are on the same body, arrives hours late from a sync that failed quietly, and every so often it is a phone strapped to a washing machine logging a few thousand phantom steps. Every fitness app eventually rests on this data, and the clean number on the dashboard hides how unreliable the thing underneath it is.
That matters because the data is the product. If your app turns steps into rewards, or calories into a deficit, or heart rate into a training zone, then the accuracy of the input is the accuracy of the promise you are making to the user. Get the substrate wrong and you are not shipping a rough feature, you are shipping a confident lie.
Heart rate is fine. Calories are fiction
The most useful study to internalize here, Stanford's 2017 comparison, tested seven wrist wearables against lab equipment. Six of the seven measured heart rate within about five percent, which is genuinely good. But not one of them got energy expenditure, the calories-burned number people reorganize their diets around, below twenty percent error, and the worst was off by more than ninety. So the headline metric most fitness apps put front and center is the least trustworthy thing on the watch.
There is a fairness dimension to this too. The optical sensors that read heart rate work by shining green light through the skin, and they are measurably less accurate on darker skin tones because melanin absorbs more of that light. If you build a feature that gates rewards or coaching on heart-rate accuracy, you are quietly building a feature that works worse for some of your users than others, and that is a design decision whether you made it on purpose or not.
The platforms are a moving target
The plumbing is hostile in its own way. On iOS, HealthKit hands you the same metric from multiple sources and leaves de-duplication to you, and by design it will not even tell you when a user denied a read, so your code has to treat absence and refusal as the same silent case. Apple also has opinions about how you even ask: put your own custom allow-or-skip screen in front of Apple's system permission sheet and your release gets rejected, because Apple owns that consent moment, not your app, and the only correct move is to open the system sheet and let the user choose there. On Android, Google is retiring the Google Fit APIs in favor of Health Connect, with the old APIs already closed to new sign-ups and shutting down by the end of 2026, so anything you build on Fit today is building on a sunset. Health Connect reads are foreground-only by default, and getting background data costs you an extra permission, a foreground service, and real battery.
Then there are the device APIs themselves, each with its own auth dance and its own rate limits, Fitbit and Garmin and Whoop and Oura all metering you differently. Here's what I mean: there is no single integration to do. There is a set of integrations that disagree with each other, and a layer you have to build to make them behave like one source of truth.
The reconciliation layer is the real work
When a user wears a ring to bed and a watch all day, you will get two different versions of the same night and the same steps. The naive move is to average them, and the naive move is wrong, because the devices are not equally good at the same things. A chest strap is better for active heart rate, a ring is better for overnight recovery, a phone pedometer is fine for casual steps and useless for a run with the phone on a desk.
So the work is a reconciliation engine that applies sensor-aware weighting: it knows which source to trust for which metric in which context, de-duplicates overlapping records, handles the late and out-of-order syncs, and produces a single physiological timeline the rest of the app can rely on. That layer is unglamorous, it never demos, and it is the difference between an app that feels accurate and one that argues with the user's own body.
What we have built
Stepler turns steps into points for more than ten million users, in real time, with the step tracking, the point calculation, and the redemption all running at once. Doing that at scale forces you to take the data layer seriously, because a step that double-counts is a reward you paid out twice, and a sync that lands late is a user who thinks they were cheated. I will be straight about the boundary: the deep specifics of any one wearable SDK are an integration you scope per project, not a universal solved problem, and anyone who tells you otherwise has not shipped one at scale.
What's still standing in 2028
As the device landscape consolidates and Google Fit dies into Health Connect, the apps that win are not the ones with the most integrations on a logo wall. They are the ones whose reconciliation layer is honest, whose accuracy claims match what the hardware can actually deliver, and whose data model was built to absorb the next platform change instead of being broken by it. The substrate is the moat precisely because it is the part nobody wants to build. There is also a compliance edge to all of this, because the moment you ingest this data you inherit a pile of rules, which is the compliance piece.
What 2muchcoffee covers
We build the health-data layer under fitness products, the ingestion, the de-duplication, the sensor-aware reconciliation, and the platform migrations that keep it alive as Apple and Google move the ground. If your app is about to rest its core promise on wearable data, the time to get the substrate right is before you build the features on top of it. The plain way in is the AI work we do, and the broader map is how to build a fitness app in 2026.
One concrete action
Take one real user wearing two devices for a day, pull both data sets, and line them up. The places they disagree, the duplicated steps, the night that shows two different sleep totals, the calorie numbers that are nowhere near each other, are the exact cases your reconciliation layer has to handle. If you have not looked at that comparison, you do not yet know what your app is actually telling people.