@theoplayer/web-ui
2.0.0
💥 Breaking Changes
- Open Video UI for Web is now built using Lit.
- All components now extend
LitElementand use reactive rendering, making it much easier to build custom UI components. While existing custom UI components should mostly continue to work, we highly recommend updating them to use arender()method instead. - For older browsers that don't support Custom Elements, we recommend loading our new polyfills library from
@theoplayer/web-ui/polyfills.
- All components now extend
✨ Features
- Added settings menu to default UI.
1.16.3
🐛 Issues
- Improve labels for text tracks and audio tracks in the
<theoplayer-language-menu>.
1.16.2
🐛 Issues
- Language names in the language menu are now capitalized according to that language's case mappings.
1.16.1
🐛 Issues
- Fixed a regression where menus would always fill the entire player on desktop (rather than opening as a small popup in the bottom right corner).
1.16.0
✨ Features
- Added
centered-chromeslot to<theoplayer-default-ui>to replace all controls in the center of the player.
🐛 Issues
- Fixed an issue where buttons inside the default UI could accidentally be clicked even when they were hidden because of user inactivity.
1.15.0
✨ Features
- The UI now takes
SourceDescription.streamTypeinto account when computing its ownstream-typeattribute. This is now the preferred method of overriding the stream type.
🐛 Issues
- Fixed
<theolive-default-ui>to stop using deprecated OptiView Live events. - Fixed an issue where the
<theoplayer-time-range>inside the default UI could accidentally be clicked even when it was hidden because of user inactivity.
1.14.0
✨ Features
<theoplayer-default-ui>now hides all controls except the center play button when the player size is very small on desktop.- Add
--theoplayer-centered-chrome-button-icon-widthCSS property to change the icon width of only the buttons in the center slot in a<theoplayer-default-ui>. - Add
--theoplayer-aspect-ratioCSS property to change the aspect ratio of a<theoplayer-default-ui>or<theoplayer-ui>. - Add
--theoplayer-min-widthCSS property to override themin-widthof a<theoplayer-default-ui>or<theoplayer-ui>. - Add
--theoplayer-heightCSS property to override the height of the inner<theoplayer-ui>within a<theoplayer-default-ui>.
🐛 Issues
- Fixed an issue where the menus didn't cover the entire player when the player is too small.
1.13.1
🐛 Issues
- When entering fullscreen, the player will now always hide the browser's navigation UI. (This can be overridden by setting
ui.fullscreenOptions.navigationUIin your player configuration.)
1.13.0 (2025-09-12)
- 🚀 Added support for THEOplayer 10.0. (#112)
1.12.0 (2025-09-10)
- 🚀 Fill the entire window when fullscreen is not natively supported. (#94, #110)
- 🐛 Fix settings menu and subtitle options menu not displaying correctly on older smart TVs. (#108, #109)
1.11.3 (2025-07-22)
- 🐛 Fix issue with the
<theoplayer-ad-clickthrough-button>component that was triggering the errorFailed to execute 'createElement' on 'Document': The result must not have attributeswhen loaded into a React application. (#106)
1.11.2 (2025-06-30)
- 🚀 Add
--theoplayer-play-button-icon-colorCSS property to change the icon color of only the<theoplayer-play-button>. (#104) - 🚀 Add
--theoplayer-center-play-button-icon-colorCSS property to change the icon color of only the centered play button in a<theoplayer-default-ui>. (#104)
1.11.1 (2025-06-30)
- 🐛 Fix pressing
Enteron TV remote triggering click twice. (#101) - 🚀 Add
errorslot to default UI, to allow for a custom error display. (#102)
1.11.0 (2025-06-12)
- 🚀 Add settings menu button to default UI. (#99)
1.10.0 (2025-04-02)
- 🚀 Added support for THEOplayer 9.0. (#95)
1.9.5 (2025-03-20)
- 💅 Forced subtitles are no longer shown in the subtitle menu. (#92)
1.9.4 (2025-02-19)
- No changes
1.9.3 (2024-12-03)
- 🚀 Added support for MBR Millicast streams. (#81)
1.9.2 (2024-11-20)
- 🐛 Fixed live UI not showing for Millicast streams. (#79)
1.9.1 (2024-09-27)
- 🐛 Fixed Enter and Space keys not working to activate buttons in the UI. (#76)
1.9.0 (2024-09-06)
- 🚀 Added support for THEOplayer 8.0. (#72)
1.8.2 (2024-08-29)
- 🐛 Fixed blank space below UI when using
<theoplayer-default-ui>. - 💅 Optimized performance of
<theoplayer-time-range>. (#70)- Optimized the
requestAnimationFramecallback used to update the seekbar's progress to avoid synchronous re-layouts as much as possible. - When playing a long video, the seek bar no longer uses
requestAnimationFrameat all to update its progress. Instead, it updates using only less frequenttimeupdateevents.
- Optimized the
1.8.1 (2024-04-18)
1.8.0 (2024-04-12)
- 💥 Breaking Change: This project now requires THEOplayer version 7.0.0 or higher. (#60)
- 🚀 Added
<theolive-default-ui>that provides a default UI for THEOlive streams. (#58)
1.7.2 (2024-03-18)
- 🚀 Added
<theoplayer-slot-container>. (#55)
1.7.1 (2024-02-15)
1.7.0 (2024-02-15)
- 🚀 Added support for loading in Node for static site generation (SSG) or server-side rendering (SSR). (#50)
- ⚠️ Although the Node entry point exports all custom element classes as usual, attempting to actually construct those classes will result in errors. Most dependencies are either replaced with stubs (using
@lit-labs/ssr-dom-shim) or removed altogether (such as THEOplayer itself). - This should always be used together with an SSG or SSR solution. For example, you can use Open Video UI for React together with React server rendering.
- ⚠️ Although the Node entry point exports all custom element classes as usual, attempting to actually construct those classes will result in errors. Most dependencies are either replaced with stubs (using
- 🐛 Fixed an issue where
<theoplayer-ui>could throw an error when the player changes sources before all custom elements are properly registered. (#49)
1.6.0 (2024-02-08)
- 🚀 Introducing Open Video UI for React. (#48)
- Idiomatic React components make the Open Video UI feel right at home in your existing React web app.
- 🚀 Added support for advertisements while casting to Chromecast. This requires THEOplayer version 6.8.0 or higher. (#47)
- 🚀 Added
theoplayerreadyevent to<theoplayer-default-ui>and<theoplayer-ui>, which is fired once the backing THEOplayer instance is created. (#48).
1.5.0 (2023-11-27)
- 🚀 Added support for smart TVs. (#40)
- Updated
<theoplayer-default-ui>to automatically switch to an optimized layout when running on a smart TV. For custom UIs using<theoplayer-ui>, you can use thetv-onlyandtv-hiddenattributes to show or hide specific UI elements on smart TVs. - Added support for navigating the UI using a TV remote control.
- Added a
tv-focusattribute to specify which UI element should receive the initial focus when showing the controls on a TV. In the default UI, initial focus is on the seek bar.
- Updated
- 🚀 Allow overriding more CSS properties of
<theoplayer-default-ui>. (#42) - 💅 Renamed project to "THEOplayer Open Video UI for Web". (#43)
1.4.0 (2023-10-04)
- 💥 Breaking Change: This project now requires THEOplayer version 6.0.0 or higher.
- 🚀 Open Video UI now imports THEOplayer as a JavaScript module using
import from 'theoplayer/chromeless'. See the README for updated installation instructions. - 🐛 When the player's source is empty, the UI will no longer attempt to play when clicked. (#37)
1.3.0 (2023-05-16)
- 💥 Breaking Change: This project now requires THEOplayer version 5.1.0 or higher.
- 🏠 This project now depends on the chromeless version of THEOplayer, rather than the full version which includes the old video.js-based UI. (#31)
- 🐛 Fix
has-errorattribute not cleared on source change (#29)
1.2.0 (2023-04-26)
- 🚀 Improved support for advertisements (#28)
- Reworked the ad control bar in
<theoplayer-default-ui>. - Added a
show-ad-markersattribute to<theoplayer-time-range>, to show markers on the progress bar indicating when the content will be interrupted by an advertisement. <theoplayer-ad-skip-button>and<theoplayer-ad-clickthrough-button>are automatically hidden while playing a Google IMA ad. (This is unfortunately necessary, because Google IMA doesn't provide a way to modify or replace its own buttons.)
- Reworked the ad control bar in
- 🐛 When the player changes sources, any open menu is now automatically closed
1.1.0 (2023-04-12)
- 💥 Breaking Change: This project now targets modern browsers, so
dist/THEOplayerUI.jsanddist/THEOplayerUI.mjsnow use ES2017 syntax (such asclassandasync/await). See "Legacy browser support" in the README for more information about targeting older browsers. (#26, #27) - 🚀 Added support for THEOplayer 5.0
- 💅 Improved accessibility (#21)
- 💅 Make menus fill entire player when player is small (#22)
- 🐛 Ensure
playerproperty is initialized immediately when callingnew UIContainer(configuration)with a valid player configuration (#24)
1.0.0 (2023-04-05)
- 🚀 Initial release