Reinstate text-cue relocation (dropped with relocation.ts) and, in the same pass, rearchitect the text-segment loader onto the v/a loader's composed-step model so relocation is a pipeline step, not a resolver wrapper. Text loader gains TextFrame / TextLoadStep / TextStepDeps / TextMessagePipelines mirroring segment-loader, with base resolveCuesStep + dispatchCuesStep (default: resolveCues -> dispatchCues). makeLoadTask now just runs the pipeline. The resolver reverts to a pure (url) => cues host primitive (the text analog of fetchBytes) -- composition-awareness moves entirely into the injected step, so composition state threads via compositionDeps into TextStepDeps. Relocation supplies relocatingTextPipelines (resolveWithMetadata -> relocateCues -> dispatchCues): cues + X-TIMESTAMP-MAP fetched in parallel, cues shifted by (mapCorrection - startMediaTime) using the primary A/V track's startMediaTime (video ?? audio, awaited). The engine bakes textMessagePipelines, mirroring video/audioMessagePipelines. Base steps are generic arrow consts (TextStepDeps is contravariant in C via textTracksActor.send). Sandbox-verified 0-based against the Mux asset_start_time=60 clip: active cue brackets the 0-based playhead. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Video.js v10
Modern, modular, and composable media player framework for Web and React.
🚧 Beta - close to stable. Experimental adoption in real projects. 🚧
Video.js v10 is close to stable. Try it out in real projects and share your feedback 🙏.
- Read our design documents.
- Read the v10 discussion topic.
- Watch Heff's recent presentation.
Timeline
- Technical Preview (Complete): Initial showcase for Demuxed.
- Alpha (Complete): See milestone
- Beta (Complete): See milestone
- GA (Mid 2026): See milestone ← WIP
- Video.js (End of 2026): Video.js core/contrib parity and supported plugins migrated.
Documentation
If you'd like to get started and learn more, you can find our documentation on our website:
Community
If you need help with anything related to Video.js 10, or if you'd like to casually chat with other members:
Contributing
We'd love for you to join our community channels above and give us feedback! Feedback on any of the following would help us:
- Player skin designs
- Component structures and APIs
- Package structure and exports
- Repo, workspace, contributor guides
Please see our contributing guide for getting set up locally and making code or docs changes.
Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.