How background YouTube playback actually works on iOS
One of the first things people try in talavo is locking their phone while a video plays — and being mildly surprised when the audio keeps going. On stock iOS Safari it wouldn’t. Here’s what’s actually happening underneath, because the honest version is more interesting than “we turned on a setting.”
The constraint
talavo renders pages in a WKWebView — the same WebKit engine Safari uses, which is the only browser engine Apple allows on iOS. WebKit is deliberately aggressive about backgrounding: when the web view leaves the foreground, the system throttles timers and suspends the media pipeline. That’s great for battery and terrible for someone who just wants a podcast-style video to keep playing with the screen off. YouTube itself reserves uninterrupted background playback for Premium.
Keeping the pipeline alive
The trick isn’t a secret flag — it’s refusing to let the media session die. talavo intercepts the page’s media session and, when the system tries to pause playback on backgrounding, keeps the underlying element “running” rather than letting WebKit tear it down. In practice that means catching the pause the OS forces and immediately keeping the element ticking — at a near-zero playback rate if it has to — so the audio pipeline stays warm and resumes cleanly instead of being garbage-collected.
On top of that, talavo wires the standard iOS now-playing controls (lock screen, Control Center, AirPods) to the active video, so pause, play, and scrub behave like a native media app rather than a web page that happens to have sound.
The floating mini-player
Background audio is half the story. The other half is the floating mini-player: a picture-in-picture window that detaches the video so it keeps playing while you read something else in another tab — no Premium subscription required. It’s the same idea as system PiP, surfaced for any video talavo can play.
The honest caveat
This is a workaround layered on top of WebKit, not a private API. It means two things: it stays within what the web platform exposes, and it can be affected when YouTube reshuffles its player internals. When that happens we fix it — that’s most of what a point release like the ones in our changelog is doing. The upside of building on the real browser engine is that the rest of the web keeps working normally while this runs.