- 1 User completes the daily action
- 2 Streak count goes up
- 3 Losing it starts to feel costly
- 4 Reminder before the day ends
- 5 Freeze covers a missed day
Repeats: each turn feeds the next
A streak counts how many days or weeks in a row a user has done the core action in your product. It turns a vague intention (“I should practise more”) into a visible number that grows. It fits consumer apps where value comes from repetition: learning, fitness, meditation, journaling, saving money. It works poorly for tools people only need occasionally.
Why it works
Two forces drive a streak. Early on, the growing number gives a small sense of progress each day. Later, loss aversion takes over: a user with a 60-day streak will open the app on a tired evening because losing 60 days feels worse than skipping one lesson feels good. The streak becomes a reason to return that does not depend on fresh content.
Forgiveness keeps that second force from turning against you. Without it, one missed day resets the count to zero, and many people who lose a long streak never start again. A freeze or repair lets them keep their progress and their habit.
How to do it
- Define the qualifying action. Choose one action that represents real value, such as finishing a lesson, logging a workout or writing an entry. Make it achievable in a few minutes.
- Pick the period. Use days for habits people do daily and weeks for those they do a few times a week. Calculate the day boundary in the user’s local time zone.
- Show the streak where people look. Put the count on the home screen, on the completion screen after each action, and in the app icon badge or widget if your platform supports it.
- Add forgiveness from day one. Offer a freeze that protects one missed day, earned through use or bought with an in-app currency. Consider a repair option for the day after a break.
- Send one reminder before the day ends. If the user has not done the action by their usual time, send a single push that names the streak length. Let them pick the reminder time.
- Celebrate milestones. Mark 7, 30, 100 and 365 days with a short animation or a badge. Extra freezes are a useful milestone reward.
- Make restarting feel good. When a streak does break, show the user their longest streak and frame the new one as a fresh start.
Example
Duolingo is the best-known case. According to its help centre, the flame icon shows how many days in a row a learner has completed a lesson, and the company describes the streak as a way to motivate daily practice. Learners can buy a streak freeze in the shop in advance, which protects the streak if they miss a day. If they lose a streak without one, they can buy a streak repair with gems, the in-app currency earned by completing lessons. The help page also points learners to practice reminders, where they set the time that suits them.
A hypothetical budgeting app uses a weekly version. Users keep the streak by reviewing their transactions at least once a week. A missed week can be covered by one free “rest week” per quarter. The weekly rhythm matches how people actually manage money and avoids nagging them every day.
Metrics to track
- Share of active users with a streak of 7 days or more. This should grow as the feature matures.
- Retention of streak holders versus non-holders. Compare day-30 retention, controlling for how active users were before the streak launched. Engaged users keep streaks anyway, so this check isolates the feature’s own effect.
- Streak break recovery rate. The share of users who start a new streak within a week of losing one. Forgiveness changes should raise it.
- Freeze usage. How many freezes are earned, bought and used. Unused freezes suggest they are hard to find. Constant use may mean the daily bar is too high.
When it backfires
- Anxiety in place of value. If users open the app only to protect the number and do the bare minimum, the streak inflates activity without improving outcomes. Watch whether real progress follows.
- Harsh resets. Wiping a long streak with no way back can drive long-time users to quit for good.
- The wrong period. A daily streak for a weekly habit punishes healthy behaviour and creates guilt.
- Pay-to-forgive only. Locking all forgiveness behind payment feels exploitative and draws public complaints.
- Reminder overload. Several “Your streak is at risk” pushes a day erode goodwill. One well-timed message is enough.
Growth Marketing Academy
Learn the framework behind this tactic
These lessons explain the math and the mental model, so you can adapt the tactic instead of copying it.
- Track 1 · Foundations North Star Metric: Pick One Number and Build Its Input Tree Choose a North Star Metric that captures the value customers get, then break it into 3 to 5 input metrics that teams can actually move every week.
- Track 3 · Activation Habit Loops: Designing Products People Come Back To Use the trigger, action, reward and investment loop to build repeat behaviour, match it to your product's natural usage frequency, and set ethical limits before you ship.
Questions people ask
Should a streak be daily or weekly?
Match the natural rhythm of the habit. Language practice or journaling suits a daily streak. Workouts, budgeting or team reviews often suit a weekly one, because a daily count would punish people for normal rest days.
Should users pay for streak freezes?
You can tie freezes to a virtual currency or a paid tier, but give everyone a small free allowance. If forgiveness is only available for money, users who slip once feel tricked and may stop altogether.
What counts as a day of activity?
Pick the smallest action that still delivers real value, such as one lesson or one logged meal. If the bar is too high, people break streaks on busy days. If it is too low, the streak stops meaning anything.