TL;DR
iPhone Safari never supported Media Source Extensions, so JS-driven players fell back to native HLS. Since iOS 17.1, Apple ships Managed Media Source (MMS), an MSE variant where the browser controls when you fetch. We'll wire up hls.js to use it, then handle the one behavior that bites people: the browser can evict your buffer.
What we're building
A minimal HLS player page that works through Managed Media Source on iPhone (iOS 17.1+) and falls back cleanly everywhere else. We'll do it twice: first with hls.js doing the heavy lifting (what you'll actually ship), then a stripped-down raw MMS example so you understand what the library is doing under the hood.
Versions used: hls.js 1.6.13, tested on iOS 17.1+ Safari and desktop Chrome/Firefox.






