[DATA]

Fix Missing Sleep, Heart or Energy Data

[Published 2026-08-27 · 734 words]

[THE SHORT ANSWER]

Start with the diagnostics on the Health Sources screen. Every data type Base reads is listed with a sample count and any error returned. A zero sample count on a type you know has data is a permission, not a gap — and a permission declined once is not asked for again, which is why the problem is silent.

The diagnostic

Health Sources carries per-type diagnostics with sample counts and errors, which is the only way to tell a denied permission from a genuinely empty day. Both look identical everywhere else.

Three outcomes per type, and they mean different things:

DiagnosticMeaningFix
A non-zero sample countWorkingNothing
Zero samples, no errorBase asked, the store had nothingPermission, or genuinely no data
An error stringThe read itself failedRead the message

The middle row is ambiguous by nature, and resolving it is easy: did your watch record that thing on that day? If yes, it is a permission. If it was charging, it is a real gap.

Why permissions fail silently

iOS asks for health access per data type, and it does not re-ask for a type you declined.

So a partial grant during setup — tapping through the sheet quickly, or declining one type — produces an app that works for everything except that one metric, forever, with no prompt and no error. It simply reads zero samples.

This is the cause of the large majority of "missing data" reports, and it is why the recommended approach at setup is to approve everything and ignore what you do not use. Base only reads.

Re-granting

Base cannot re-prompt for a declined type. Fix it in the platform's own Health app:

  1. Open Health
  2. Find Base under sources or apps
  3. Enable the data types
  4. Return to Base's diagnostics and confirm the count has moved

Base has a re-request action that works where the system allows it, but a hard decline has to be undone in Health.

Data that is genuinely missing

Some gaps are real, and Base renders them honestly rather than filling them.

A night the watch was charging. No sleep data, so no sleep score, and no recovery score — because it needs all three inputs and will not fabricate one.

A workout the watch did not record. Add it manually from the activity screen or the dashboard's energy bar, where calories are estimated from distance, duration and bodyweight.

A day the phone was left at home. Fewer steps, less active energy. The target for that day will be lower, correctly.

In every case Base states there is no data rather than rendering a zero. That rule is load-bearing rather than cosmetic: a zero would be averaged into your thirty-day baselines and would deflate every score computed against them for a month afterwards.

Workouts specifically

The most common workout problem is not Base at all. Check the chain in order:

  1. Did the watch record it? Look in the platform Health app.
  2. Did it reach the store? Some apps need an explicit sync.
  3. Can Base read workouts? Check the diagnostics for the workout type.

If it is absent from Health, the problem is between your watch and the store and there is nothing Base can do about it.

Data older than a month

Reading health history beyond about thirty days requires a specific entitlement, which Base declares — it is what makes the three-year threshold scan possible at all.

If historical reads return nothing while today works, that is worth reporting, because it is a different failure from a per-type permission.

Common mistakes

Assuming a missing metric is a bug. Check the sample count first; it answers the question in one look.

Trying to re-grant from inside Base. iOS does not allow it for a declined type.

Granting some types at setup. Much harder to undo than to avoid.

Treating a missing recovery score as broken. It means an input was missing, which is the honest rendering.

Expecting Base to fix a watch-to-Health sync. It reads the store; it cannot reach past it.

Reading zero as data. Zero and absent are different claims, and Base never confuses them.

What to do next

Open Health Sources and read the per-type sample counts. Anything reading zero that you expect data for is a permission — fix it in the Health app now, because a metric that has never arrived is invisible on every screen that depends on it.

Questions

Why does Base show no data for a metric my watch recorded?

Almost always a permission that was never granted. iOS asks per data type and does not re-ask for one you decline, so a type refused once stays refused silently. The per-type diagnostics on the Health Sources screen show a sample count for each type, which distinguishes a denied permission from a genuinely empty day.

How do I tell a permission problem from missing data?

The sample count. Zero samples on a day you know your watch recorded means the read was refused or never authorised. A non-zero count with no value shown means something else. An error string means the read itself failed, and the message is shown rather than swallowed.

How do I re-grant a permission I declined?

Not from inside Base — iOS will not re-prompt. Open your platform's own Health app, find Base under the apps or sources list, and enable the data types there. Base has a re-request action that helps where the system allows it, but a declined type generally has to be fixed in the Health app itself.

Why does my recovery score disappear on some days?

Because one of its three inputs is missing, usually a night the watch was charging. Base shows no score rather than computing one from partial data, since a score with a silently defaulted input would look identical to a real one and would appear on exactly the days you most want to trust it.

My workout did not appear in Base. What now?

Check that it reached your health store first — open your platform's Health app and look for the workout there. If it is absent, the problem is between your watch and the store rather than anything Base can fix. If it is present, check Base's diagnostics for the workout data type.

[KEEP READING]