Design notes
Why our streak is a moon and not a flame
Streak mechanics borrowed from fitness apps punish the night you most need slack. Here is how we built sleep streak tracking that forgives.
Every habit app ships a streak, and almost all of them ship the same one: a number next to a flame, reset to zero the moment you miss. That mechanic works well enough for press ups. Applied to sleep streak tracking it does something quietly perverse, because it takes the night you slept worst and adds a penalty on top.
What sleep streak tracking usually gets wrong
Think about what a broken streak actually represents. You had a bad week at work and got four hours. Your kid was ill. You flew somewhere. A neighbour had a party. In every one of those cases the honest reading is that last night was hard, and today you should be gentle with yourself and get back to a normal bedtime.
What a flame does instead is put a zero on the screen the next morning. It converts a rough night into a visible failure, and it does it at the exact moment your tolerance for visible failure is lowest, because short sleep makes everything feel worse than it is.
We watched what people do with that, and it is not “try harder”. A broken streak makes people delete the app. Not always immediately, but the thread runs the same way each time: the number resets, the app stops feeling like something that is on your side, checking it becomes mildly unpleasant, and a fortnight later it is gone. The person is not sleeping better. They are just no longer being told about it.
That is a bad trade for a sleep app specifically, because sleep is not a performance you can will into existence. You can decide to do press ups. You cannot decide to fall asleep. A streak that assumes total control over the outcome is lying about the activity it is tracking.
What ours counts, and what it forgives
So the mechanic had to be built differently from the ground up.
A night counts at ninety percent of your goal, not at one hundred. If your goal is eight hours, seven hours and twelve minutes keeps the streak. This is not generosity for its own sake. A goal is a target you aim at, and a system that only rewards a bullseye teaches you to stop aiming. Ninety percent is close enough that hitting it repeatedly is the actual behaviour you wanted, and far enough from perfect that a normal life clears it.
One missed night a week is bridged automatically. You do not spend anything, you do not tap anything, and there is no shop selling you a freeze. The bridge is just there, because one bad night in seven is what a real week looks like and a design that treats it as a rupture is a design that has never met a Tuesday.
A night broken in two is still one night. If you were awake for an hour at three and the tracking split, the streak sees the night, not the fragments. Punishing someone for a nocturnal awakening they did not choose is the same category of mistake as punishing them for the short night in the first place.
Milestones land at 3, 7, 14, 30, 60, 100, 180 and 365. The early ones are close together on purpose, because the first week is where a habit either takes or does not, and a milestone at 30 does nothing for someone standing on day two. After 100 they stretch out, because by then the streak has stopped being the reason you are doing it and has become a record of the fact.
Why it is drawn as a moon
The flame is not just a shape, it is an argument, and the argument is that this thing is burning down and only you can keep it lit. That is a threat. It works on some people, briefly, and it is precisely the wrong emotional register to attach to going to bed. Anxiety about sleep is one of the more reliable ways to sleep badly, and an interface that adds a small nightly dread to bedtime is working against the thing it claims to be measuring.
A moon does not burn out. It goes through phases, it comes back, and it is already the thing on the other side of the window when you are doing this. It fills as your streak grows. When you miss enough to break it, it does not gutter and die, it wanes, and waning is a state a moon is supposed to be in.
The tone matters more than it sounds like it should. The same number under a different symbol produces a different feeling at eleven at night, and the feeling is the part that decides whether you open the app again tomorrow.
What a streak is actually good for
A streak is a bad measure of sleep quality and a decent measure of one specific thing: whether your timing is holding. That is worth watching, because regularity is one of the stronger levers most people have, more so than squeezing out an extra half hour. The sleep regularity index is the rigorous version of the same idea, and it sits in your insights next to the streak for exactly that reason.
What the streak will not do is tell you whether you are carrying sleep debt. Fourteen consecutive nights at ninety percent of a goal that was set too low is a long streak and a slowly deepening hole. Nor will it fix the weekend problem, where two late lie ins produce social jetlag that a streak counter cheerfully rewards as long as the totals hold up. Those live in the metrics, not in the number.
So we treat the streak as what it is: a small piece of encouragement for showing up at roughly the same time, deliberately hard to lose, deliberately not the centre of the app. If it makes you go to bed twenty minutes earlier on a night you would have drifted, it has done its whole job.
If you want the substance underneath it, how to fix your sleep schedule is the part that actually moves your nights, and how to wake up easier is what to do with the mornings once the timing settles. The moon is just there to notice that you did.