Skip to content
The Product Guys
All patterns
Retention6 min read

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

Day 146%Days 2 to 627%Days 7 to 2917%Days 30 to 997%100+3%
Illustrative shape rather than measured data. Most people who start a streak lose it inside the first week, and a thin tail carries the very long runs, so the design that matters most is what happens on day two.

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.

  1. 1Define the action narrow enough that a two-minute version exists.
  2. 2Choose the window from the real rhythm of the behaviour, not from what maximises daily actives.
  3. 3Show the count somewhere the user passes anyway, not in a modal.
  4. 4Build the repair before you ship the counter.
  5. 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.