Product
Whenever I open a new app and get hit with three permission dialogs in a row, I almost always close them out of reflex.
I've done this more than once. Then later I try to use a feature, hit "Please enable microphone access in Settings," and feel that mix of regret and annoyance. I end up repairing a decision I made before I had context.
So while building Reso, I set one constraint for onboarding: the first meeting should feel calm, not pressuring.
The issue is usually not willingness. It's this:
1. They don't know why you need it
2. Three popups in rapid succession create pressure, not trust
Building for Friends
When I first built the Reso prototype, I didn't think much about onboarding. I knew what everything did. But when I started sharing it with friends, something clicked.
When you're building something for people you care about, you want it to feel mild. Not intrusive. Not demanding.
It's like meeting a friend for the first time. You don't walk up and immediately ask: "What's your phone number? Where do you live? What do you do for work?" Nobody likes that.
Our Design Principles
We landed on two guiding ideas:
- Minimize discomfort: Slow down. Don't bombard. Let people breathe.
- Don't let them miss out: While reducing friction, make sure critical information doesn't get lost.
This balance came partly from improv classes I've been taking—the idea of reading the room, matching energy, not forcing a scene.
What We Actually Built
Reso needs microphone access and ~2GB of ML models to work properly. That's a lot to ask upfront.
So we don't ask upfront.
- One permission, when it matters: We only request microphone access when you actually try to record. By then, the context is obvious.
- Background everything else: Models download quietly while you explore. No progress bars blocking your way. Just a subtle indicator if you want to check.
- Graceful degradation: If models aren't ready, the app still works—just slower. You see exactly what's happening ("0.3x speed - optimizing...") and can keep going.
The Polish That Matters
Getting here took iteration. Friends would download debug builds, get confused about which version to keep, run into edge cases. We spent more time on onboarding than I expected—testing what felt right, what felt pushy, what felt broken.
The goal was always: open the box, and it just works. Elegant. Minimal. Like a work partner who's there when you need them and invisible when you don't.
The best onboarding doesn't feel like onboarding at all. It feels like the app already knows you.