I built Breeze in evenings and weekends while working full-time in data and operations. The idea was simple: I wanted a breathing app that opened directly to an exercise. No splash screen. No mood check-in. No prompt to rate the app after the first session. Just a breathing guide.

Every app I tried made me navigate at least three screens before I could inhale. When you're anxious, three screens is three screens too many.

So I built my own. That was about eighteen months ago. What happened after launch is the part I want to write about — because several things went exactly the way I expected, and one thing went completely wrong.

What I Expected

I expected 4-7-8 breathing to be the most popular technique. It's the one with the biggest public profile — Andrew Weil popularised it in the mid-2010s, and "4-7-8 breathing" generates substantial search volume. I built Breeze with five techniques, but I designed the interface assuming most users would go straight to 4-7-8.

I expected the session length to cluster around three to five minutes. That's the sweet spot most wellness apps target. Enough time to feel like you did something, short enough not to feel like a commitment.

I expected the habit to be hard to form. Research on breathing practice is clear on this: the people who stick with it are the ones who attach it to an existing routine — morning coffee, before bed, after a workout. The people who try to do it "whenever I feel stressed" rarely maintain any consistency.

5,200+ completed sessions logged
67% box breathing sessions
4.1 min average session length
82% completion rate

What Actually Happened

Box breathing won. Not by a small margin — by a lot. Across more than 5,200 logged sessions, box breathing accounts for roughly two-thirds of all completed exercises. The 4-7-8 technique sits in a distant second. The physiological sigh, which I added later based on the Balban et al. 2023 Cell Reports Medicine study, has been quietly climbing since I added it.

I thought about this for a while. The research doesn't suggest box breathing is objectively more effective than 4-7-8. Both have solid mechanistic support for activating the parasympathetic nervous system. So why does one dominate?

My hypothesis: symmetry. Box breathing has equal counts on all four phases — four seconds each. When you're stressed, you're often in a state of cognitive load reduction already. Your prefrontal cortex is going offline. The last thing you need to remember is "inhale for four, hold for seven, exhale for eight." Box breathing gives you one number. Four. That's it. Equal on everything. You don't have to think.

What this changed in the app: I had originally designed the technique selection screen to sort alphabetically. After seeing the usage data, I reordered it — box breathing first, as the default. Completion rates improved. When people are reaching for a breathing app, they want the fastest path to the exercise, and defaulting to the technique most people already prefer reduces the decision they have to make at the worst possible moment.

The Feature I Spent Two Weeks On That Nobody Notices

The pacing animation. Specifically: the way the visual guide expands and contracts during a breathing cycle.

My first version used a linear animation — constant speed throughout the expand and contract. It looked fine. It worked fine. But it felt mechanical in a way I couldn't initially articulate. Users who tried it didn't complain. They also didn't use it consistently.

I eventually worked out the problem. A real breath doesn't move at constant speed. The beginning of an inhale is faster — you're creating negative pressure, pulling air in. As your lungs fill, the rate naturally decelerates. The end of a full inhale is slower than the start. The animation wasn't matching what a breath actually feels like from the inside, and that mismatch was subtle but real.

I rebuilt the animation curve using an ease-in-out function that front-loads the expansion and slows at the peak. Two weeks of iteration. Most users never consciously register it. But the session completion rate is 82 percent — higher than anything I could explain through feature design alone — and I think the animation accounts for some of that.

The lesson I took from this: when you're building something physical — something that's supposed to sync with a bodily process — the details that match felt experience matter more than the details that look good in a demo. Users won't be able to tell you what's wrong with a mechanical pacing animation. They'll just stop using the app.

What I Got Wrong

The streak system. I added a streak counter early, partly because every habit formation framework suggests that tracking streaks supports consistency (Lally et al.'s famous UCL study on habit formation, Wood and Neal's work on environment and automaticity). The research is real. Streaks work — in general.

What I didn't think through carefully enough: a broken streak is discouraging. A streak counter is a commitment device that motivates when you're maintaining it and demoralises when you break it. I had too many users who hit a four-day streak, skipped one day for a legitimate reason (travel, illness, deadline), and then stopped entirely. The counter reset. The psychological cost of starting over from zero felt higher than the psychological benefit of resuming.

I changed the streak system to show "current streak" alongside "best streak" and added a grace period — one missed day doesn't reset the count. It's a small change. But the percentage of users who resume after a break has increased noticeably since making it. The data doesn't lie, but you have to know what question to ask of it.

The Part I Didn't Anticipate At All

People using the app in contexts I hadn't considered. I built Breeze with two use cases in mind: acute stress relief and daily relaxation. What I didn't expect was messages from users using it before medical procedures, before job interviews, before presentations. One user told me they use it in the car park before every difficult conversation with their manager.

I hadn't designed for any of those use cases explicitly. But the core feature — an immediately available, guided breathing exercise with no friction — turns out to be useful in exactly those high-stakes, short-window moments. The design choice I made to prioritise zero-friction access over every other consideration ended up serving a use case I hadn't imagined.

If I had built it for the use cases I anticipated, I would probably have added more setup — technique selection quizzes, personalisation flows, mood tracking. All of those would have added friction. By not adding them, I accidentally made the app more useful for the moments it turns out to matter most.

What I'd Tell Someone Building a Wellness App Now

Three things.

First: solve the pacing problem before you solve any other problem. Whatever your app does — exercises, meditations, breathing patterns — the timing and rhythm of the core experience is everything. Get that right before you build any surrounding feature. It is very hard to fix a mechanical feeling after users have already formed an opinion.

Second: watch what users actually do, not what they say they want. If I had surveyed users on which breathing technique they prefer, I would have got a different answer than the usage data shows. People report their preferences based on what sounds right. They reveal their actual preferences through behaviour. Build the tools to observe behaviour early.

Third: the friction you're adding for "engagement" is probably costing you retention. Streaks, check-ins, ratings prompts, onboarding flows — all of these have legitimate rationale. All of them also add friction. When someone reaches for a breathing app, they are often not in a state to engage with any of that. The apps that survive are the ones that get out of the way.

Breeze is still live. Still being improved. The next version has a sleep-focused breathing pattern, a slightly revised timer UI, and what I hope is a better onboarding experience for users who genuinely don't know which technique to start with. If you want to try it, it's free — no paywall, no subscription.