← Lab

Fitnit · discovery

Nobody knows
it’s there

As of v1.149.0 you can say “Hey Siri, log a workout in Fitnit” and it works — no setup, app closed, answer in about a second. Nothing inside Fitnit says so. This board is about the general problem that sits under that: an app with thirty features and one person who came to do one thing. Three places a tip could go, the mechanism that stops the next ten features fighting over the same moment — and the arithmetic that says none of it is the first thing to do.

The mockups are drawn, not built. Nothing on this page ships today except the Siri intents themselves. The numbers are real: Fitnit’s own logging tables as of 8 September 2026, and App Store figures from 17–26 August 2026.

The scarce resource is not screen space

The instinct with an undiscovered feature is to find somewhere to put it — a banner, a tour, a “what’s new” sheet. That treats attention as if the constraint were room on the screen. It isn’t. The constraint is how many times you can interrupt someone before dismissing becomes a reflex, and that budget is spent across the whole app, not per feature.

Once the reflex forms it is permanent, and it takes every future message down with it — including the ones that would have mattered, like the paywall, the rating ask, and the push permission. So the question is never “where can this go?” It is “is this worth one of the few interruptions we get?” — and something has to be able to answer no.

Teach it where the friction was

A tour shown to someone who opened the app to log a banana is noise. The same sentence shown immediately after they typed that banana in by hand is an offer, because they have just done the slow version of the exact thing. That is the whole rule: teach a feature at the moment it would have saved work, to the person who just did the work.

Which means the trigger is never “on launch” or “on the third session”. It is evidence-based — this person has now logged food by hand three times — and it retires the moment it is acted on or dismissed.

A · recommended — after the save

9:41●●●
Lunch···
Chicken salad sandwich
Logged · 1 serving
486 cal
Protein27gCarbs31gFat25g
You could have just said that.
Try “Hey Siri, log a meal in Fitnit” — it works with the app closed.
Try itNot now
×
HomeHistorySocialProfile

Fires on the third hand-typed meal, not the first — someone still learning the app has no friction to relieve yet. Dies permanently on dismiss, or the first time they use Siri.

B · Apple’s own tip view

9:41●●●
Lunch···
Chicken salad sandwich
Logged · 1 serving
486 cal
Protein27gCarbs31gFat25g
Try saying
“Log a meal in Fitnit”
HomeHistorySocialProfile

SiriTipView(intent:) — roughly one line of SwiftUI, and Apple keeps the phrasing correct as the OS changes. Fixed height and full width, so it is the documented Host exception. You do not control the copy, and it cannot say why you are seeing it.

C · a place to look it up

9:41●●●
Settings
Voice & Siri5 things you can say
AppearanceSystem
Achievements14 of 42
Notifications
HomeHistorySocialProfile

Costs zero interruptions and teaches nobody on its own — but it is where someone goes when they half-remember the feature exists, and it is the page a support reply can link to. Cheap. Build it whatever else happens.

One budget, not one banner per feature

If each feature decides for itself whether it deserves a tip, every feature says yes — that is what it is like to be the person who built it. The fix is structural: a single registry where a tip is data, and a scheduler that is allowed to refuse.

Registered siri-voice-loggingcopy-a-meal body-maprest-timer crew-challenges
Trigger met siri-voice-loggingcopy-a-meal — the other three have no evidence this person needs them
Budget siri-voice-logging copy-a-meal — one per session
Shown siri-voice-logging · 1 of 2 lifetime

The rules that matter are the refusals: one tip per session, one per three days, twice in a lifetime, and never again once dismissed or once the feature has been used. A tip nobody acted on twice is a tip that is wrong, and a third showing does not fix wrong — it just spends the budget.

The rating prompt already owns this moment. The house rule is that the rating ask fires after a nutrition log and never after a workout — which is precisely the calm post-success beat a tip wants. They cannot both have it. Either the scheduler knows about the rating ask, or the two will race and the rating is the one you lose, because it is the one with revenue attached.

Now the arithmetic, which spoils the plan

Everything above is right and almost none of it matters yet. Here is the last 90 days of real logging, straight out of history_entries.

74people logged
anything · 90d
36people logged
anything · 30d
19people logged
any food · 90d
40people logged
a workout · 90d
1.9food entries
per day, total

So the tip in mockup A — the best-designed, best-timed message on this page — would be seen by about nineteen people a quarter, and only the fraction of those who reach a third hand-typed meal. Meanwhile:

152 / day See Fitnit in App Store search — where a subtitle and one screenshot do the talking
18 / day Open the App Store page
5.1 / day Download
1.9 / day Log any food at all — the entire audience for an in-app tip

In-app discovery is eighty times smaller than store discovery right now. That is not an argument against building the tips system — it is an argument about order, and about what you should expect it to do this quarter, which is nothing measurable.

Two more things the data says

What was measuredResultWhat it means for this feature
Food entries by source, 90d 98 manual
64 camera
8 voice
Typing is still the most common way a meal gets logged, so the trigger moment in mockup A is real — it just does not happen often.
Meals logged more than once by the same person 3 titles
1 person
The “log my usual breakfast” path — instant, offline, no AI credit — has almost nothing to match against yet. Today the feature leans on the USDA lookup and the AI estimate, which are the slower and costlier halves.
Workout entries, 90d 310 rows
40 people
Twice the reach of food. If only one tip gets built, the moment after a hand-entered workout is the bigger audience — which is the opposite of what seemed obvious before the query.

What I’d do, in order

1

Put it on the App Store page

Subtitle, one screenshot, and the what’s-new text. “Log meals and workouts by voice” is a real differentiator against Hevy and Cal AI, and it is the only surface with an audience big enough to notice. Existing users read what’s-new; new ones read the subtitle.

152 / dayhalf a day no code
2

Instrument it before arguing about it

One PostHog event at the drain, tagged by kind, and one when a tip is shown or dismissed. Adoption is currently unmeasurable, which means every future conversation about this is a conversation about opinions.

an hourunblocks everything else
3

The tips system, plus the Settings row

Build the registry and the refusals now, while there is one tip in it. Retrofitting a budget after ten features have each shipped their own banner is a much worse job, and by then the dismiss reflex has already formed. Ship it with the Siri tip and the Voice & Siri settings row as its first two consumers.

a daycheap now, expensive later expect no measurable lift yet
The uncomfortable read. Fitnit does not have a discovery problem so much as it has 36 active people. Every in-app mechanism on this page is multiplied by that number, and no amount of tip design changes the multiplier. Build the cheap, durable version of the mechanism — then spend the real effort upstream, where the 152 are.
v1.149.0 · Siri intents shipped, tips system not built
Logging figures: history_entries, 90 days to 8 September 2026, deleted rows excluded
App Store figures: 17–26 August 2026, via Six store pages
Mockups are CSS, drawn at the phone’s aspect ratio — not screenshots