Dev

3weeks — Building the Hypothesis That 21 Days Is Enough

2023-11-15·3min read
3weeks — Building the Hypothesis That 21 Days Is Enough

Why Habit Apps Fail

Most habit apps have the same structure: register a habit, check in daily, build a streak. And most people close them within a few weeks.

The reason: there is no ending.

Habit apps are infinite games. You check in today, then again tomorrow, and again a year from now. Nobody starts an open-ended run with no finish line in sight.

3weeks solved this with the 21-day deadline.

The Logic Behind 21 Days

The claim that habits form in 21 days traces back to observations made by plastic surgeon Maxwell Maltz in the 1960s. It's not perfect science — but the core insight is: a start needs an end.

21 days is short enough to begin without dread, and long enough to feel the change. 3weeks is built entirely around that number.

The moment you register a challenge, the countdown starts. After 21 days, you earn a completion badge and decide yourself whether to continue. A bounded commitment is easier to keep.

The Psychology of Streaks

The most carefully designed element in 3weeks is the streak system.

Numbers accumulate in strange ways psychologically. A person who has reached 7 days feels the threat of losing the streak as a strong motivator to continue today. Game designers call this "loss aversion."

The badge system works on the same principle. 7-day seedling badge, 21-day flame badge, 60-day and 90-day badges for long-term achievers. Small rewards, but seeing something appear on screen is more powerful than it sounds.

Why Localization From the Start

3weeks supports five languages from launch: Korean, English, Japanese, Chinese, German.

One lesson from building indie apps: the Korean market alone is too small. Korean apps represent a tiny fraction of App Store downloads globally. Building localization infrastructure early means adding languages later is straightforward.

SwiftUI's built-in localization handled the technical side. Translation used DeepL plus manual review. Japanese and German App Store descriptions required significant time — but when international downloads started arriving, the decision proved correct.

Unexpected Complexity

The streak protection logic involved more edge cases than expected.

A skipped day. A check-in just after midnight. A user accessing from a different timezone. What seems like a simple feature requires careful handling of each scenario.

A recent update added an option to use a "streak shield" when a day is missed — a dialog asking whether to protect the streak before resetting to zero. The response from users was stronger than expected. Getting one chance to recover from an accidental miss feels more humane than an unconditional reset.

Looking Back

The biggest lesson from 3weeks: simple ideas require an enormous number of decisions.

"21-day habit challenge" — one sentence — expands into badge design, streak handling logic, notification scheduling, statistics visualization, and multilingual support. Building one app means decomposing an idea into hundreds of small decisions.

Knowing that people still use it consistently is what keeps the original motivation clear.