Intermittent fasting has one simple rule: eat inside a window, don't eat outside it. The rule is easy, keeping it is not. Some days the window holds effortlessly, other days you break by lunch and have no idea why. I wanted an app that doesn't just tick a timer but shows me, from my own data, which days are easier and which are harder.
That's how Lunar Fasting came about. It went live on the App Store on October 2, 2026: 157 days from the first commit, 28 builds, 656 automated tests and one App Review rejection. Below: how to pick a fasting interval, what the app does, and the two features it was really built for.
Fasting intervals: which one to pick
"16:8" means 16 hours without food and an 8-hour eating window. The longer the fast, the stricter the regime. The app supports six protocols:
| Protocol | Fast | Eating window | In real life | Good for |
|---|---|---|---|---|
| 12:12 | 12 h | 12 h | Dinner at 8 pm, breakfast at 8 am — just no night snacks | Beginners |
| 14:10 | 14 h | 10 h | Dinner at 7 pm, breakfast at 9 am | A gentle next step |
| 16:8 | 16 h | 8 h | Eat from noon to 8 pm | The most popular one, the default |
| 18:6 | 18 h | 6 h | Eat from 1 pm to 7 pm, two meals | When 16:8 feels easy |
| 20:4 | 20 h | 4 h | Late lunch and early dinner in one short window | Experienced, for a while |
| OMAD | 23 h | 1 h | One meal a day | The strictest, only deliberately |
The app is not a doctor: with diabetes, pregnancy, eating disorders or any chronic condition, talk to a doctor before you start.
My advice: start with 12:12 or 14:10 and move up when the current step stops taking effort. You can switch protocols any time, and past days won't be recolored — each day is judged against the goal that was active when it ended.
Fasting without a "start" button
Most fasting trackers have a timer you start and stop by hand. Forget to tap it and the day is lost. Lunar Fasting doesn't store fasting windows at all: they are derived from logged meals. Log breakfast and dinner, and the app knows how long you went without food.
A few rules came out of this, each pinned by tests. A 2 am snack honestly breaks the fast instead of stretching it. If you forgot to log yesterday's dinner, you don't get a 40-hour "record" — you get "no data". Log a meal retroactively and the whole chain recalculates.
Why lunar days, not calendar dates
A lunar day runs from one moonrise to the next, about 24 h 50 min. There are roughly thirty of them in a lunar month. Most lunar calendars compute them with a mean formula and are off by up to half a day. Lunar Fasting computes moonrise astronomically for your location and uses true new moon instants (Meeus), not averages.
To be clear: I don't claim the Moon affects appetite or how much you move. Science hasn't shown that. The app doesn't promise — it checks, on your own data.
Calories from a photo
Snap your plate and a vision model splits it into items — side dish, cutlet, salad — each with its weight in grams. Add a text hint for ambiguous dishes ("buckwheat with mushrooms, no oil") and accuracy goes up noticeably.
One deliberate decision: the model never computes the total. It only returns item names, grams and kcal per 100 g; the app does the arithmetic. Small models are surprisingly bad at mental math, and this way every number is visible and editable.
Recognition runs either on-device via Apple Intelligence (no network, no key, the photo never leaves the phone) or through your own key for OpenAI, Gemini, Qwen or DeepSeek, stored in the Keychain and sent straight to the provider. "Auto" mode tries on-device first. Meals are written to Apple Health too.
The main feature: your activity on the lunar calendar
On first launch the app pulls a year of activity from Apple Health — steps, active energy, workouts and stand hours — and keeps it updated, re-syncing the last week each time because watch data arrives late.
Four numbers become one activity index from 0 to 100. Each metric is normalized to a daily target and capped, so overachieving doesn't inflate it:
| Component | Daily target | Weight |
|---|---|---|
| Steps | 10,000 | 35% |
| Active energy | 500 kcal | 30% |
| Workouts | 1 | 20% |
| Stand hours | 12 | 15% |
Without an Apple Watch, workouts and stand hours are almost always zero and the index would cap at about 65. So in statistics the app drops components you have no data for and renormalizes the weights.
Calendar days and lunar days don't line up, so each lunar day gets a weighted value from the two calendar days it overlaps, proportional to time. The charts show your average index for each of the thirty lunar days and each moon phase — your own year of movement, not someone's theory.
A forecast for the lunar month
The forecast is an additive model, and the app shows each day's breakdown:
- Baseline — your mean index with a 45-day half-life, so recent weeks weigh more.
- Weekday effect — 7 and 29.5 are incommensurable; without this axis, the weekly rhythm would leak into a fake lunar signal.
- Recent trend — the last two weeks vs. baseline, decaying over the horizon.
- Moon phase and lunar day number — hierarchical, and only if your history actually shows it.
The last part matters most: lunar effects go through empirical-Bayes shrinkage. With few observations they shrink to zero, so with no lunar pattern in your data the forecast honestly falls back to baseline, weekday and trend. There's an uncertainty band that widens with the horizon and a confidence level: the forecast appears after 21 days of history, medium confidence from 60 days, high from 180. With 60+ days the app also backtests itself: it hides the last two weeks, predicts them and compares the error with a naive "same as average" forecast.
Coming in 1.1: Google Health
If you wear a Google or Fitbit band with an iPhone, its data reaches Apple Health poorly: workouts go missing, calories and heart rate disagree, steps double. Lunar Fasting 1.1 adds a direct bridge: sign in with Google, and the app pulls workouts, steps, distance, active energy and heart rate from the Google Health API and writes them to Apple Health — deduplicated via HKMetadataKeySyncIdentifier, with Google's echo of Apple Health data filtered out. Band activity then feeds the index and forecast just like Apple Watch data.
One caveat: Google requires OAuth verification and a security audit for health scopes. Until then the feature runs in testing mode, capped at 100 users, so 1.1 ships it to a limited group first.
Free vs. Pro
- Free: six fasting protocols, meals and manual calories, water, weight, daily ratings, lunar calendar, stats for steps, water, weight and calories, CSV export. No account, no server.
- Pro: activity index, monthly forecast, calories from a photo. Weekly or yearly subscription with a 3-day free trial.
iPhone and iPad, iOS 17+, English and Russian. Get it on the App Store.
Would you trust a forecast that openly tells you when it has nothing to say?
Originally published at klukyanov.ru.
Shorter weekly write-ups (in Russian) — on Telegram.
Top comments (0)