The previous note covered why DeepSRT left the cloud. The natural follow-up: why did it land in a Mac app? After all, v1 was a browser extension — a heavy one: content scripts injected into YouTube pages, caption requests intercepted, bilingual subtitles overlaid on someone else's DOM.
"Someone else's DOM" is exactly the problem.
Another game of cat and mouse
The previous note called centralized fetching a cat-and-mouse game against platform risk systems. A browser extension plays the same game — against two opponents. YouTube ships a frontend change: selectors break, the caption overlay misaligns, the feature dies overnight. We fixed that more times than we can count. The browser side keeps tightening too: extension background processes no longer stay resident, and the rules about what extensions may do shift every year.
Your product lives in the intersection of two platforms' rulebooks, and neither owes you anything.
Residency is a capability
The most underrated thing a native app buys is residency. DeepSRT keeps a local API running on your Mac (127.0.0.1) — an extension simply cannot do this; its background process doesn't survive the platform's reclaim cycle.
A resident local API is what lets clients be thin. The Chrome extension shrank from v1's bundle of logic into a sidebar that just calls the local API; the upcoming MCP support lets your AI agents talk to DeepSRT through the same contract. Your key lives in the macOS Keychain, not browser localStorage; transcripts and captions cache to disk and survive restarts. All of this is what the operating system grants a native app.
Owning the player
v2 ships its own player, and the bilingual captions render on our own view: drag to reposition, hotkeys to resize, sentence-merge so ASR captions stop breaking mid-sentence. In your own view these are an afternoon of work; in someone else's DOM they are a war without end. A YouTube redesign can no longer break the overlay, because nothing is overlaid on their pages.
First-class citizen of the OS
A native app gets the whole OS integration surface: the deepsrt:// deep link lets the Safari extension, launchers, or any script hand a video to DeepSRT in one click; a Safari extension can only ship embedded in a native app in the first place; a YouTube link on your clipboard triggers an offer to summarize on launch. And all of it fits in an app of a few megabytes — native SwiftUI, not a browser wearing an app costume.
Honest boundaries
The cost is plain: macOS only, for now. And the in-browser experience still matters — plenty of people want a sidebar next to the tab they're watching. So the thin-client extension stays, and it's going open source: all the hard parts live in the app, so the extension can be thin enough that anyone can read its entire source.