We continue investing in things because of what we've already put in β not because of what we'll get out. The time, money, or effort already spent is gone regardless of what we do next. Rationally, it shouldn't affect our decision. Psychologically, it dominates it.
Imagine you've bought a non-refundable theatre ticket for β¬50. On the night, you feel ill. Rationally, the β¬50 is gone either way β staying home costs you the money whether or not you attend. But most people drag themselves to the theatre. The money already spent pulls them forward into an evening they'd rather skip. The sunk cost is driving the decision.
Economists have known this is irrational since at least the 1970s. The sunk cost fallacy β allowing past investment to influence future decisions β has been documented in contexts ranging from failed government projects to bad marriages to losing poker hands. In every case, the rational move is to evaluate only the future costs and benefits, ignoring what's already been spent. In every case, people struggle to do this.
For product designers, sunk cost is a double-edged tool. On one side, it's a legitimate reason users stay engaged with your product: the data they've imported, the workflows they've built, the history they've accumulated. These are genuine switching costs that appropriately make users hesitant to leave. On the other side, it's one of the most easily abused mechanisms in dark pattern design β engineering fake sunk costs to trap users who would rationally choose to leave.
βDo not throw good money after bad. The money already spent is spent. The only question is what happens from here.β
β Richard Thaler, 1980
The most visible sunk cost mechanic in consumer apps is the streak. A streak represents accumulated daily investment β each day you show up, the number grows, and the number represents something it would hurt to lose. The streak is a sunk cost counter. Its purpose is to make today's session feel obligatory because of all the previous sessions.
The two notification designs below are for the same language learning app. Both try to get the user to open the app today. One uses the streak's sunk cost value honestly. One uses it as a threat.
βLose everything.β βDon't let it disappear.β The streak is weaponised as anxiety. The user isn't motivated by learning β they're motivated by fear of the loss they've manufactured.
βReal momentum.β βHabit you've built.β The sunk cost is acknowledged as genuine investment. The motivation is the value of continuing, not the fear of losing.
Both notifications use the sunk cost of the 47-day streak. The exploitative version weaponises it as anxiety β βlose everything,β βdon't let it disappearβ β turning the user's past investment into a threat. The honest version acknowledges it as genuine momentum β βthat's real momentum,β βthe habit you've builtβ β and uses it as an accurate description of what the user has actually achieved. Same streak, same sunk cost, completely different emotional frame.
The critical question is whether the sunk cost being invoked is real. A 47-day language learning streak represents genuine habit formation and real vocabulary acquisition. Invoking that investment honestly β βyou've built something real hereβ β is informative. Invoking it as manufactured panic β β3 hours to save everythingβ β is exploitative of a genuine investment to override rational decision-making.
When a user is considering leaving your product, one honest use of sunk cost is to surface what they've actually built inside it β not as a threat, but as information they may not have fully considered when deciding. Most users underestimate the switching cost of their accumulated investment. A well-designed cancellation or downgrade flow can surface this accurately.
Below are two ways to surface a user's investment at the moment they're considering leaving. The first is a vague appeal. The second shows the actual work.
βA lot of workβ and βstart over somewhere elseβ are vague enough to dismiss. If the user has invested little, the appeal rings hollow. If they've invested a lot, they can't see it here.
23 dashboards. 847 reports. 6 team members trained. 18 months of history. 40β60 hours to rebuild. These numbers are real. The sunk cost they represent is real. The user now has the information to make an informed decision β not a manipulated one.
The difference between the two cancellation screens is information. The bad version makes a vague appeal to sunk cost without showing it. The good version shows the actual numbers β the specific investment the user has made that would need to be rebuilt elsewhere. This is honest sunk cost: surfacing real information that helps the user make a fully informed decision, including the option to leave. The user may still cancel. But they're cancelling with accurate knowledge of what that costs, not despite having been shielded from it.
The sunk cost effect is worth understanding from both sides: as a designer who shapes the experience, and as a designer who makes product decisions. On the user side, you will encounter moments where surfacing real investment is genuinely helpful β and moments where engineering artificial investment would be exploitative. On the product side, recognising when your own team is continuing an investment because of sunk cost rather than future value is one of the most useful cognitive tools in product development.
Thaler, R. H. (1980). Toward a positive theory of consumer choice. Journal of Economic Behavior & Organization, 1(1), 39β60. Β· Arkes, H. R., & Blumer, C. (1985). The psychology of sunk cost. Organizational Behavior and Human Decision Processes, 35(1), 124β140. Β· Kahneman, D. (2011). Thinking, Fast and Slow. Farrar, Straus and Giroux.