Case Study
Recast
Record it once, send a link. A screen recorder that runs as a real app on your Mac and your phone, because a browser tab was never going to be good enough.
- Product Design
- Cross-Platform
- Native + Web
- Solo Build
- Role
- Lead UX Designer & Developer
01
Thirty Seconds of Me Talking Over My Screen
Half the messages I write would be better as thirty seconds of me talking over my screen. The tools that do that either want a login before the other person can watch, or they put a watermark on it, or they cap you at five minutes and then ask for a card.
So the product is one sentence: record it once, send a link. Whoever you send it to presses play. No account, no app, no meeting.
02
I Deleted the Best-Looking Part
The first version recorded in the browser. It worked, it demoed well, and I killed it. Twenty-one files: the capture engine, the compositor, the camera bubble, the crop selector. All of it.
Two reasons. Browser capture is worse: you get a tab or a throttled screen, not your actual machine at full quality. And there is a hall-of-mirrors problem where recording your browser from inside your browser shows the recorder recording itself.
What replaced it is a boundary I now hold to: the apps record, the website stores and shares. The Record button on the site is a launcher. It opens the native app and falls back to a download if you don't have it yet. There is no browser-capture fallback and there won't be one.
03
Stop Should Mean Watch
The rule I set: you press stop, the video plays immediately from the file on your device, and the upload happens behind it. Playback never waits for the network. If you're on a plane it still works.
I broke my own rule in the Mac app without noticing. The function that queued a finished recording was async and awaited the entire upload before it opened the player window. On a good connection you'd never catch it. Offline, you pressed stop and stared at nothing until the request timed out.
It returns in a millisecond or two now and uploads in a detached task. I also found the first upload after launch was eating five to eight seconds of framework setup, so the app warms that up when it starts instead of paying for it the moment you press stop.
04
Android Argued With the Documentation
Google's own media projection guide numbers the steps: get the projection, then start the foreground service. On Android 14 that order throws. The service has to already be running or the system refuses you outright.
The other thing I couldn't design away: Android will not let you authorise screen capture once and reuse it. Consent is single-use, so the system dialog appears on every recording. I wanted it gone and it isn't mine to remove, so the flow is built to make it feel like one deliberate step rather than an interruption.
I also caught the build asking for permission to draw over other apps, which I never wanted. It comes in from a dependency rather than from my code. It's blocked in release builds, and I check the actual APK after every upgrade instead of trusting that it stayed blocked.
05
I Found a Leak by Signing Up as a Stranger
I made a brand-new account to see what a first-time user sees. The empty library wasn't empty. It had somebody else's recording in it, and fifty-seven megabytes already counted against a quota I had never used.
The database rule that lets a share link work was written to allow reading any recording marked shareable. It was never narrowed to the one link being opened, so it applied to everyone at once.
Nothing ownership-sensitive trusts that rule any more. Every query that returns your library or counts your storage filters by your user id explicitly. I found it by making an account and looking, which is the only way I would have found it.
06
Three Apps, One Identity
At one point Recast had three different looks at once: a warm editorial share page, a purple Material web library, and a third thing on Android. Every screen had been reviewed on its own and passed. Nobody had put them side by side.
I found it because I opened the app and the website next to each other and they didn't look related. Now a change isn't finished until it exists on both.
07
The Design System
The tokens are the reason the Mac app and the website still look related. Every contrast pair in here was measured rather than eyeballed, and light and dark are both declared so the app follows your OS.
08
Where It Is Now
Live at recastvid.com, with a Mac app and an Android app, both built and shipping. Recording is native on both. The website handles the library, playback, sharing and downloads.
It sells storage, not features: a free tier and paid plans above it. Entitlement lives in a database that only the payment webhook can write to, so no client can hand itself a plan. The thing you pay for is the thing that costs me money.
Want something like this built?
I design and ship products end to end. Tell me what you're working on, or grab a time and we'll talk it through.