
Streaks punish. Decay forgives. Why the productivity app I'm building won't have a streak counter.
Loss aversion works in a psychology lab. It works for about three weeks of your actual life. Then it destroys everything.
I've been wrestling with this while building Cairn - a tiny Mac menu-bar app that asks one question a day - and the obvious play was a streak counter. Every habit app ships one. They demo beautifully. They take five minutes to build. I almost fell for it.
Here's the brutal truth: streaks only work for the small slice of users wired for that mechanic. Everyone else churns silently and blames themselves. Those 5-star reviews ("I haven't missed a day in 312 days!") are pure survivorship bias - you never hear from the 95% who tried for three weeks, missed a Tuesday, watched their counter hit zero at their lowest moment, and uninstalled with quiet shame.
A counter is the wrong shape for human commitment.
So I'm building a decay curve instead. Miss a day, momentum drops to ~70%, never to zero. Two good days back and you're at 90%. The shape weather has. The shape mood has. Hard to quit on something that never free things I've discovered designing this, before a single user has touched it:
A decay curve is brutally harder to design than a streak. A streak is if (didIt) count++ else count = 0. Five minutes. A decay is a model of you - how much does a single miss matter, how fast does it recover, what counts as a partial day. No clean academic answer exists. I'm on my fourth version and still hunting edge cases.
The shareable demo gets worse. "312-day streak" is a flex. "My momentum is 84%" is not a screenshot anyone says. I've made peace with this. The TikTok-able number and the metric that drives retention are different problems, and you can only optimize one.
The honest unit of a productivity app is retention, not engagement. A user who quits in week three has been failed by the product, no matter how many weeks felt. Longevity is the entire shape of the business, and a mechanic that punishes a single miss is borrowing engagement from your future retention curve.
Cairn's still in build - waitlist's at cairnday.com if you want to see where the curve lands once it's real.
Im also building in public on x handle is madebypetr
https://reddit.com/link/1tkeq8d/video/cqig640jzn2h1/player
https://reddit.com/link/1tkeq8d/video/9vx458ylzn2h1/player
Real question: has anyone else killed a "best practice" mechanic in pre-launch because the evidence turned out thinner than the conventional wisdom? Or shipped one and regretted it? What else falls apart under a hard look?