RawData

Every exit was a delete button, and my app kept saying things that weren't true

Phase 3 of BoomerClip's fix plan: a viewing page where the back button destroyed the video, four players for four browsers, stats that made up their own numbers, brand art advertising features I never built, and a dialog that lied to people watching together./

Last time, the server learned to keep BoomerClip's promise: when nobody is watching, the recording is deleted. No exceptions.

But a guarantee cuts both ways. If the server deletes the moment a viewer leaves, the page had better be sure the viewer meant to leave.

It wasn't.

The page with trapdoors for exits

Refreshing asked first. Clicking a link inside the app didn't, and neither did the back button. That includes the Privacy link, so reading the privacy policy of a privacy app destroyed the video you came to watch.

Refreshing during a slow load counted as leaving too. So did checking your own link: the share screen had an "Open in New Tab" button, which made you the viewer, and closing that tab made you the viewer who left. You tested your link to death.

Now every way off the page asks first. Nothing joins until the video has loaded. The creator gets their own view of their link, with status, copy and delete, and it never counts as watching. Leaving is also sent as a beacon, so the goodbye still arrives when the tab is closing, and a refused autoplay no longer tears down the player.

Four players, one idea copied four times

In 2025 I split the viewer into Chrome, Edge, Firefox and Safari players and felt great about it. Each one drifted in its own direction. The server told Edge and Safari that MP4 files were WebM, and in some browsers the duration showed as Infinity.

All four are gone. One player now asks the browser what it can do instead of guessing from its name. It works from the keyboard and with screen readers.

The part I'm proudest of: before joining, the page checks whether the browser can play the recording. If it can't, it says so and doesn't join, so the link survives for a browser that can. Otherwise you'd send a clip, someone would open it in the wrong browser, close the tab, and it'd be gone with nobody having seen it.

Checked in Safari on a Mac and an iPhone. Server tests 100 → 124, and the client has its first 64.

The app was saying things that weren't true

Meanwhile, in the plumbing

Create React App is gone in favour of Vite, and client security advisories dropped from 30 to 0. The move also revealed that the production build called http://localhost:3000. A deployed BoomerClip would have looked for its API on the visitor's own computer.

Cliffhanger: Safari won't record

Playback works everywhere I've tested. Recording failed in Safari. On the Mac that's probably because I was on plain HTTP, which doesn't allow screen capture. On the iPhone there's no fix: Safari doesn't let web pages capture the screen at all. There might be a way to get around this and at the very least allow screen capture...

So Phase 4 is a recorder that says what it can't do before you press Record.

Seen once, then gone. And now, only when you mean it.

~ Jer