Support

Most of what goes wrong with Lepo has a short answer, so the fixes are below. If none of them match, email me and I will look at it.

Contact

Email

support@lepohealth.app

Lepo is a small independent app and the replies come from one person, so a reply can take a few days. Every message is read.

For questions about what Lepo does with your data, the privacy policy is the canonical answer, and privacy questions can go to the same address.

Watch

The complication is showing an old number

watchOS decides when apps get to run in the background, and Lepo cannot override that. It throttles some requests, defers others, and merges the rest into a later one. So a complication can sit on the same number for hours even though everything is working.

Lepo's primary path is not a scheduled timer. Apple Health notifies the app when a new reading arrives, which is what refreshes the complication most of the time; a scheduled request every 30 minutes is only the fallback for when that notification never comes. Both routes still need watchOS to grant the run.

Open Lepo on the watch or on the phone. That refreshes the reading immediately, and the complication follows.

Reading the sync caption

Complications carry a caption such as Last night · Synced 12m ago. The two halves answer different questions:

Part What it tells you
Last night The period the reading covers
Synced 12m ago When the watch last picked up fresh data

A large sync age does not mean the number is wrong. It means the watch has not checked recently, and the number you are looking at is the last one it collected.

Phone

The widget on my phone has not changed today

Home-screen widgets work the same way: iOS schedules their updates on its own budget rather than on a timer Lepo controls. Opening the app forces a refresh and the widget picks it up from there.

If a widget stays blank rather than stale, remove it from the home screen and add it again, then open Lepo once so it has a reading to draw.

Watch and phone

The watch and the phone are showing different numbers

Both devices read the same Apple Health data, but each one refreshes on its own schedule, so the one that checked more recently is further ahead. Compare the sync ages rather than the scores. Opening Lepo on both devices brings them to the same reading.

Apple Health

Sleep or energy is blank for a night

Lepo does no measuring of its own. It reads what is already in Apple Health. If a night was not recorded, there is nothing for Lepo to read and the metric stays empty. The watch may have been charging, not worn, or out of battery before morning.

Check the night directly in the Health app under Browse > Sleep. If it is missing there, it is missing everywhere, and Lepo will fill in again from the next recorded night.

Lepo is not reading anything from Health

Health access is granted per data type, and iOS does not ask a second time after a category has been denied, so a partly granted set of permissions looks like an app that has stopped working. Granting the missing types is done in system settings, either path:

Turn on read access for the categories that are off, then open Lepo again. Lepo only ever reads; it writes nothing back to Health.

If your heart and sleep data comes from a Garmin, Oura, Whoop or Polar rather than an Apple Watch, there is a second switch: the brand's own app has to be allowed to write to Health, in its own settings, and it only writes when it syncs. Open the brand app, let it sync, then open Lepo. Which signals arrive depends on the brand. Some share resting heart rate and HRV, some do not. Lepo scores from whichever heart signals it finds. Support per brand is still being verified, so a report that names the device is the most useful kind.

Readiness

The readiness score is missing or does not look right

Readiness is scored against your own baseline rather than a population average, and that baseline comes from the last 30 days already recorded in Apple Health. A fresh install does not have to wait for it. If your watch has been recording, the score is real on day one.

So a missing or odd-looking score usually means the history behind it is thin rather than that Lepo is still warming up. That happens on a brand-new watch, after a stretch of nights without wearing it, or when sleep was recorded by something that does not write to Apple Health. Check the last few nights under Browse then Sleep in the Health app: whatever is there is what Lepo has to work with.

With a non-Apple wearable the history can also be thinner than it looks: a brand that does not share HRV or resting heart rate leaves Lepo fewer signals to score from, and the score says so in its breakdown. The readiness score on a bad night is still real; it is built from less.

Readiness

Lepo with a pacemaker, or on medication that sets your heart rate

Readiness scores your overnight HRV and your resting heart rate against your own recent history. If something other than recovery sets your heart rate, those two inputs stop carrying information. People with a pacemaker report an overnight HRV that reads about the same every night, because the device times the beats, and a resting heart rate that sits on the device's lower rate limit all night. A beta blocker or another medication that lowers your heart rate can produce the same two readings. Scored against themselves, both come out neutral every day, so the score they feed is mostly sleep and breathing rate while it presents as an ordinary Readiness.

Lepo cannot tell this from the readings, and does not try to. Instead there are two switches in Settings, under Readiness inputs: Use HRV and Use resting heart rate, free on every tier and on both devices. Switch off the input that does not move, and Readiness is built from the rest. The confidence line then says what the score stands on, for example "Built from breathing rate, sleep, and activity.", and the breakdown still shows the input you switched off, greyed, so you can see it without it counting. Set the switches on the iPhone and the watch follows.

This is a scoring choice, not medical advice. Lepo does not know why an input is flat and never records it; if you share analytics, it records only which inputs are off.

Lepo Pro

Part of the graph or the breakdown is missing

Some of what Lepo shows is behind Lepo Pro, so a missing lane or number is usually a tier boundary rather than a fault. Without Pro:

Pro costs $24.99 a year or $2.99 a month. In the euro area, it is €24.99 or €2.99, with Apple's local equivalent elsewhere. The yearly plan includes a 14-day free trial.

I bought Pro and it is not unlocked

Open Settings in Lepo and tap Restore Purchases. That re-reads the receipt from your Apple Account, which is where the purchase lives. Lepo has no account of its own to check.

A purchase is tied to the Apple Account that made it, so make sure the device is signed in to the same one. If it still does not unlock, email me and say which plan you bought and roughly when.

Bug reports

Something else is wrong

Open Settings in Lepo and tap Send Feedback + Report. That writes a diagnostics report and opens your mail app with it attached and already addressed to me. It is by far the most useful thing you can send, because it shows what the app actually saw. If your iPhone has no mail account set up, Lepo shows you the address and hands the file to the share sheet instead.

The report holds recent cache, widget, and HealthKit debug logs, and your baseline averages for resting heart rate, HRV, respiratory rate, and maximum heart rate. Those baseline numbers are in there because a bug report otherwise cannot tell a baseline that is still filling up from one where Lepo read nothing at all. Nothing leaves your iPhone until you choose to send or save the file. In Mail, you can read the attachment first, or delete it and just write.

If you would rather handle the file yourself, tap Export Report underneath. It writes the same report and opens the share sheet straight away, so you can AirDrop it, save it to Files, or attach it to a mail you write yourself.

Along with it, it helps to know:

Last updated 22 September 2026