The Streak
A visible run of consecutive days the user would rather not break.
The problem it solves
Habits need a reason to show up on the days motivation is absent. A streak hands the user a number they own and could lose, which pulls them back when the activity itself is not pulling hard enough.
Where streaks end
A streak counts consecutive periods in which the user did a defined action. The count is the product's property until the user earns it, and then it flips: it becomes theirs. That flip is the whole mechanism. Nobody protects a number they never owned.
The three parts
Anatomy of a streak
- The action
- The smallest thing that counts. Pick something a busy person can finish in two minutes on a bad day. If the bar is a full workout, the streak breaks on the first hard week and never recovers.
- The window
- The period the action has to land in. Daily is the default and the most punishing. Weekly streaks survive travel and illness, and they still build a rhythm.
- The repair
- What happens on a miss. A freeze, a grace day, or a paid restore. Without repair, one missed day deletes months of investment and the user has no reason to come back tomorrow.
The repair is where most teams get it wrong. A streak with no repair has a cliff in it: the day after a break is the day the user churns, because the thing they were protecting is gone and starting at one feels like starting over. Give them a way back that costs something small.
- 1Define the action narrow enough that a two-minute version exists.
- 2Choose the window from the real rhythm of the behaviour, not from what maximises daily actives.
- 3Show the count somewhere the user passes anyway, not in a modal.
- 4Build the repair before you ship the counter.
- 5Decide in advance what number you will not push past, and write it down.
Streak that helps
- Counts an action the user already wanted to do
- Offers a freeze without a purchase
- Goes quiet when the user stops, then invites once
- Shows total days done alongside the current run
Streak that extracts
- Counts opening the app
- Sells the only repair for money at the moment of loss
- Escalates notifications as the deadline approaches
- Hides lifetime progress so the current run is all that exists
Note the last row of that table. A streak that also shows lifetime totals is honest, because a break costs the user their current run and nothing else. A streak that shows only the current run manufactures a loss that is not real. The user still did the work. The product chose to stop counting it.
Worked example
Where the line sits
Suppose a reading app finds that people at day 60 open it at 11pm looking anxious rather than interested. The honest response is to soften the deadline or move to a weekly window. The extractive response is to add a countdown timer, because the anxiety is what is driving the number. Both choices raise engagement in the short run. Only one of them is a product someone recommends to a friend.
When it fits
- The behaviour genuinely rewards repetition, like language practice, journalling, or medication adherence.
- A minimum useful session fits in under five minutes.
- The user set the goal themselves rather than inheriting it from the product.
- You can afford to let people leave, so the streak never becomes the only reason to stay.
When it backfires
- The counted action is opening the app rather than getting value from it. The streak then measures your notification pressure and nothing else.
- Repair is sold for money at the moment of loss. That is charging someone to undo an anxiety you built, and users describe it that way once they notice.
- The behaviour is not actually daily. Forcing a daily window onto weekly exercise or monthly budgeting teaches people to fake the action to keep the number.
- Long streaks become a trap. Someone at day 800 is no longer choosing the product each morning, and if quitting feels like destroying something, you have replaced motivation with dread.
Products using it
Duolingo
Counts consecutive days with a completed lesson, sells and grants streak freezes, and surfaces the count on the main screen and in notifications.
Snapchat
Snapstreaks count consecutive days two people exchange snaps, with an hourglass icon warning that the shared streak is about to end.
Apple Fitness
Tracks runs of days where all three activity rings close, and awards dated badges for milestone runs.
GitHub
Shows a year-long grid of daily contribution activity without a streak counter, so the record is visible but no single day breaks it.
The psychology under it
The takeaway
A streak works when it protects something the user already wanted; it turns predatory the moment the count, rather than the activity, is the reason they open the app.
Finished the teardown? Bank it and the day counts toward your run.
