Skip to content

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

GuideWhat it covers
Custom AdapterFull walkthrough: writing a custom IStorage or ITranslator implementation with lifecycle hooks, error handling, and tests
Custom PluginProduction-grade plugin: state management, multi-instance safety, dispose contract, worked watch-party-lite example
Custom BackendWriting an IStreamFactory / IStreamSource to support DASH, smooth streaming, or any custom MSE pipeline
Server-Side RenderingSSR caveats, hydration patterns, deferred client-only mounting, Next.js / Astro / Nuxt guidance
Multi-InstanceMultiple players on one page, PiP and main, watch-party tile grid, tab-leader pattern, event-bus isolation
Embeddingiframe embed mode, postMessage control protocol, parent-frame key handling, autoplay-allow directive
Distributed PlaybackGroup listening, tab-leader coordination, drift-correction strategies
PerformanceBundle-size tuning, tree-shake hits, memory budget for long sessions, leak-test harness
Migrating from Other Playershls.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.