← All posts Building Undulate

I Give Away My App's Core Feature for Free. Here's Why.

Apr 7, 2026 · 9 min read · Abhishek Gawde

There's a URL — undulate.app/calm — that gives anyone a free 60-second guided breathing session in any browser. No account. No download. No prompt to install anything. You land on the page, the animation starts, you breathe, you close the tab. Nothing is stored. Nothing is tracked.

It is, by design, a dead end for the growth funnel. And it's the best thing I've built.

The Problem I Was Actually Trying to Solve

When I was building Undulate, I kept thinking about a specific person: someone mid-panic who's been told "just breathe" and genuinely doesn't know how. They're not in the App Store evaluating features. They're not comparing subscription tiers. They're texting a friend with shaking hands, and the friend — who doesn't know what else to say — sends them a link.

What does that link need to do? It needs to work immediately, with zero friction, for someone who can barely read a screen. It cannot ask them to create an account. It cannot put an app install banner in their face at the worst possible moment. It cannot require Wi-Fi, or loading time, or any decision beyond "open this."

Most apps are designed for users who have time and cognitive bandwidth. A panicking person has neither. So I built something specifically for that gap.

Why a Link, Not a Feature

The conventional indie app instinct would be to put a "try before you buy" flow inside the app — a free session that then gates to a paywall. That's a reasonable model. It's also completely useless if the person never installs the app in the first place.

The shareable link solves a different problem. It works in the moment someone is sent it, not in the hypothetical future when they might download the app. Someone can bookmark it, share it, paste it in a Slack message, send it to a group chat. The session runs on any device with a browser — iPhone, Android, desktop, whatever.

This was a deliberate architectural choice, not an afterthought. I built a lightweight version of the core breathing experience as a standalone web page. It runs the extended exhale pattern (inhale 4 seconds, hold 2 seconds, exhale 6 seconds) — a ratio research suggests is effective for activating the parasympathetic nervous system through extended exhale. It runs for exactly 60 seconds. Then it stops.

The Privacy Decision Was Not Marketing

When I was designing the calm link, I had a genuine debate with myself about whether to track usage. The data would have been useful — I could have seen how many sessions were completed, where traffic came from, whether people converted to app downloads afterward.

I decided not to, and the reasoning was pretty simple: the person using this link is probably in distress. That is not a context in which I want to collect anything. Full stop.

There's a version of this decision that's dressed up in marketing language — "privacy-first!" as a brand differentiator. I find that framing hollow. The actual reason is that storing behavioral data about people mid-panic feels wrong. The correct product response is to not have that data in the first place.

It also means I can say, unambiguously: nothing is tracked, nothing is stored, the link is genuinely free. No fine print. That clarity is itself calming — which matters when the thing you're trying to do is help someone feel less anxious.

What "Zero Friction" Actually Costs

I want to be honest about what building this way costs, because most "zero onboarding" takes are written by people who haven't actually shipped the thing.

No account means no retention. I have no way to follow up with someone who used the calm link, tell them the app exists, or build a relationship. Every session is anonymous and ephemeral. If they close the tab and forget the URL, I have no recourse.

No install prompt means conversion from calm link to app download is entirely passive. The only nudge is a small footer at the end of the session: "Want all 8 breathing techniques? Get Undulate." No modal, no countdown, no urgency. Either it lands or it doesn't.

That's a real cost. I accepted it because I think the alternative — turning a panic response tool into a funnel — would make the tool worse at its job. Someone mid-panic who hits a paywall or a sign-up screen has learned something: that the tool doesn't care about them as much as it cares about converting them. That trust damage is not recoverable.

The Design of the Session Itself

The calm link runs a single technique: extended exhale breathing. Inhale 4 seconds, hold 2 seconds, exhale 6 seconds. Twelve-second cycles, five complete cycles in a minute.

I chose this over the full range of techniques available in the app for a specific reason: in acute distress, choosing is a cognitive load. If someone arrives at the calm link with a racing heart and tight chest, the last thing I want is a menu. One technique, one animation, one start button. The session begins the moment you arrive.

The 60-second duration is also deliberate. Research suggests you can produce measurable acute effects — a drop in heart rate, a shift in nervous system state — in 60 to 90 seconds of controlled breathing. Gerritsen & Band (2018) documented that slow breathing activates vagal tone within the first few breath cycles. You don't need 10 minutes. You need one focused minute.

The animation is simple — no multiple worlds, no haptic feedback (it's a browser), no settings. Just a visual guide that tells you when to breathe in and when to breathe out. The constraint of the medium forced a clarity that I think is actually appropriate for the use case.

What I've Learned About Building for Crisis

Building the calm link taught me something that I've tried to apply everywhere in Undulate: the most important design decisions are the ones you make about what to remove.

Every time I was tempted to add something — a session counter, a rating prompt, an email capture, a link to related content — I asked: does this serve the person in the middle of a panic, or does it serve my metrics? The answer was almost always the latter. So I cut it.

This is genuinely hard. Builders are trained to think about growth loops, retention mechanics, and conversion optimization. Those are legitimate concerns for most products. They are actively harmful for a tool whose value proposition is "this works when nothing else does, with no strings attached."

The rule I ended up with

If adding a feature requires the user to do anything other than breathe, it's probably wrong for this context. The cognitive tax of any interaction — a tap, a choice, a read — is higher when someone is anxious. Design for the worst case, not the average case.

How It Fits With the App

Undulate proper offers more: 8 breathing techniques (box breathing, cyclic sighing, 4-7-8, extended exhale, and others), 5 animated worlds with distinct visual and haptic environments — a dandelion that seeds on your exhale, a whale that surfaces with your breath, a paper plane that traces your rhythm. The full app is worth $3.99 as a one-time purchase because it's a tool you return to, not a subscription to something you forget in a month.

The calm link is not a free trial of Undulate. It's a different thing entirely — a minimum viable intervention that requires nothing from the user. The app assumes you have 5 minutes and your phone. The calm link assumes you have a browser and 60 seconds and not much else.

Some people use the link and never download the app. That's fine. The link did its job.

The Unexpected Outcome

Here's the thing about building something with zero growth mechanics: people share it more freely. When there's nothing being extracted from the transaction, the recommendation feels clean. "Here's a free breathing thing with no strings" is a different kind of share than "here's a free trial that gets you into a funnel."

I didn't design for this. I designed for the person who needed it. The shareability turned out to be a byproduct of the design constraints I'd already committed to. I can't tell you whether this converts better than a traditional freemium flow — I have no data, by design. What I can say is that it fits the product I was trying to build.

If you're building something in a high-stakes emotional context — health, mental health, crisis response, anything where users arrive already stressed — I'd argue the growth-optimization playbook is the wrong playbook. Design for the worst moment, not the average session. Give people something that works without asking for anything in return. See what happens.

If you're currently in distress: the link is undulate.app/calm. If you're in crisis, please reach out to a professional or contact the 988 Suicide and Crisis Lifeline (call or text 988).

Try the full experience

The calm link is one technique, one minute, no frills. Undulate is 8 techniques, 5 animated breathing worlds, and haptic guidance — a tool worth keeping on your phone. One-time purchase, no subscription.

Download on App Store

The Bottom Line

Build the tool the person actually needs in the moment they're in. Remove everything that serves your metrics instead of their situation. If your product is for people under stress, design for the version of them that is most stressed. The rest — shareability, trust, word of mouth — tends to follow from getting that right.