Advanced
Read this section when you need to go beyond the built-in capabilities: replacing infrastructure, running in non-browser environments, or tuning for production scale.
Prerequisites: You should be comfortable with the architecture and have a working player from one of the quickstarts before diving in here.
What is here
| Guide | What it covers |
|---|---|
| Custom Adapter | Full walkthrough: writing a custom IStorage or ITranslator implementation with lifecycle hooks, error handling, and tests |
| Custom Plugin | Production-grade plugin: state management, multi-instance safety, dispose contract, worked watch-party-lite example |
| Custom Backend | Writing an IStreamFactory / IStreamSource to support DASH, smooth streaming, or any custom MSE pipeline |
| Server-Side Rendering | SSR caveats, hydration patterns, deferred client-only mounting, Next.js / Astro / Nuxt guidance |
| Multi-Instance | Multiple players on one page, PiP and main, watch-party tile grid, tab-leader pattern, event-bus isolation |
| Embedding | iframe embed mode, postMessage control protocol, parent-frame key handling, autoplay-allow directive |
| Distributed Playback | Group listening, tab-leader coordination, drift-correction strategies |
| Performance | Bundle-size tuning, tree-shake hits, memory budget for long sessions, leak-test harness |
| Migrating from Other Players | hls.js / video.js / Plyr / Tone.js → core migration notes |
When to read recipes first
If you haven’t built the common setups yet, go to Recipes first. The advanced guides assume you know how to wire subtitles, chapters, auth, and queue management.
What to read next
- Recipes: intermediate setups before going deep here
- Plugin Authoring: the plugin contract explained
- Core Adapters: the 28 adapter ports you can replace