NanoPlayer - Release History
Please find more about the MOQ playback mode feature in our documentation
For easy-to-use migration follow our guide
[5.0.8]
Release Notes
This release resolves an issue with growing memory allocation during MOQ playback if audio is remaining muted from playback start. The update is recommended for NanoPlayer 5.0.x users.
Changelog
Fixed
- increasing memory allocation when MOQ playback is started and remains in muted state
[5.0.7]
Release Notes
This release improves layout consistency for playback. When the nanoplayer view is disabled (style.view: false), the CSS property object-fit: contain was added to the MOQ playback CanvasElement to align its default video scaling behavior (aspect ratio preservation and letterboxing) with the HTMLVideoElement. All playback modes now display consistently without additional configuration.
Changelog
Fixed
- default
CanvasElementbehavior for MOQ playback withstyle.view: falseadjusted to matchHTMLVideoElementbehavior in MSE/HLS playback, ensuring similar display across all playback modes
[5.0.6]
Release Notes
This release fixes an fullscreen issue with MOQ playback on iOS 26.4 and higher where the video isn't visible. THIS UPDATE IS MANDATORY FOR NANOPLAYER 5.0.X USERS AND SHOULD BE APPLIED ASAP.
Changelog
Fixed
- video not visible in fullscreen mode with MOQ playback on iOS 26.4 and higher
[5.0.5]
Release Notes
This update resolves a slight audio delay in MOQ playback that could gradually become noticeable after repeated stream switches and improves the robustness of config.general.serverDomain parsing for edge cases. In addition, onReady metrics have been improved, and an inconsistency in error emission for malformed or missing source configurations has been fixed.
Changelog
Fixed
- slight audio delay in MOQ playback that could gradually become noticeable after repeated stream switches
- ensure a dedicated error with code 5004 is emitted consistently when the source configuration is missing or incomplete
Improved
- metrics for the
onReadyevent - robustness of
config.general.serverDomainparsing for edge cases
[5.0.4]
Release Notes
This release includes an improvement to the overall resilience of the player’s error handling and recovery. It resolves an issue that caused a black screen during error recovery in MSE and HLS playback modes. Furthermore, it fixes a playback start error that occurred when MOQ mode was enabled without a configured server.webtransport URL.
Changelog
Fixed
- an issue causing a black screen during error recovery in MSE and HLS playback modes.
- a playback start failure that occurred when MOQ mode was enabled but no server.webtransport URL was provided in the configuration.
Improved
- Enhanced overall resilience of error handling and recovery mechanisms.
[5.0.3]
Release Notes
This release includes fixes htmlFor loading timeout behavior and fast-start buffer management, along with improved screen wake behavior on mobile devices. The loading timeout now properly resets when updating sources during the loading state. Separately, fast-start buffer requests are now prevented during playback to avoid unnecessary buffering. Additionally, mobile devices will stay active during MOQ mode playback, with screen dimming and locking disabled by default through the new playback.enableWakeLock setting.
Changelog
Fixed
- loading timeout is now correctly reinstated after updateSource is called in the loading state.
- prevent fast-start buffer from being requested by updateSource while in the playing state.
Improved
- mobile devices no longer dim or lock the screen during playback in MOQ mode, ensuring consistent behavior across browsers and playback modes.
- controlled via playback.enableWakeLock (default: enabled)
[5.0.2]
Release Notes
This update fixes an issue with secure token playback on iOS ≤ 17.1 in H5Live-HLS mode, resulting in error code 4200.
Changelog
Fixed
- secure token playback failing with error
4200on iOS ≤ 17.1 in H5Live-HLS mode
[5.0.1]
Release Notes
This update fixes occasional audio lag in MOQ playback mode that could occur when larger faststart buffers were received and removes an unintended log line via console.log.
Changelog
Fixed
- occasional audio lag in MOQ playback mode when larger faststart buffers are received
- unintended log line via
console.log
[5.0.0]
Release Notes
BREAKING CHANGE
This major release introduces Media over QUIC (MoQ) playback, bringing next-generation streaming with ultra-low latency and real-time playback powered by modern web technologies like QUIC and WebCodecs. This unlocks smoother, more interactive streaming experiences while still maintaining full compatibility with proven playback modes such as WebSocket/MSE and H5Live-HLS. Playback control has also been improved. You can now set the player volume directly at startup, and the player performs smarter connection checks to ensure QUIC compatibility before playback begins. We have optimized the default settings to deliver faster startup times, lower latency, and more reliable adaptive streaming. When multiple quality levels are available, the player will automatically use adaptive bitrate (ABR). Finally, we have cleaned up outdated and rarely used features. Flash player and legacy iOS ≤ 9 native-HLS fallback modes have been removed, configuration options have been simplified, and older scaling modes have been retired to ensure a more consistent playback experience.
Changelog
Added
-
Media over QUIC transport and playback mode
- utilizing the benefits of latest web technologies including WebTransport/QUIC and WebCodecs
- pushing the boundaries of interactive real-time streaming
- keeping full support of production proven playback modes using WebSocket/MSE and H5Live-HLS
-
new config setting
playback.enableMediaOverQuic- enabling/disabling the new MoQ playback mode
true/false, default:true
-
new config setting
playback.enableQuicConnectionProbe- enabling/disabling performing a connection probe at setup call to test WebTransport/QUIC connectivity
true/false, default:true
-
new config setting
playback.volume- enabling setting the player's volume directly at setup call
- range between
0.0and1.0, default:1.0
Changed
- default values htmlFor improved performance and usability
config.playback.latencyControlMode: from"classic"to"balancedadaptive"config.playback.automute: fromfalsetotrueconfig.playback.faststart: fromfalsetotruesource.startIndex: from0/highestton-1/lowestsource.options.adaption.rule: from"none"to"deviationOfMean2"- enabling ABR playback if more than one stream/entry is available
Removed
- flash player fallback mode
- native hls fallback mode (iOS version ≤ 9)
- deprecated single source configuration via
config.source.h5liveobject- remaining valid source configurations are
config.source.groupandconfig.source.entries
- remaining valid source configurations are
- scaling modes
"resize"and"original"
[4.31.1]
Release Notes
This release includes fixes for fast-start buffer management and hls playback error recovery. Fast-start buffer requests are now prevented during playback to avoid unnecessary buffering. Furthermore, it resolves an issue that caused a black screen during error recovery in HLS playback mode.
Changelog
Fixed
- prevent fast-start buffer from being requested by updateSource while in the playing state.
- an issue causing a black screen during error recovery in HLS playback mode.
[4.31.0]
Release Notes
In this release, we introduce the new config option metrics.serverDomain, which allows you to configure a custom white-label domain htmlFor nanoStream Cloud metrics and telemetry endpoints.
Changelog
Added
- option
metrics.serverDomainenabling to configure a custom white-label domain name htmlFor nanoStream Cloud metrics/telemetry endpoints
[4.30.1]
Release Notes
This update resolves an issue on iOS 18.4+ that prevented video playback from starting when using HLS fallback mode. The issue affected WebView-based iOS apps that load the web application from local content, e.g. app bundle.
Changelog
Fixed
- resolved an issue on iOS 18.4+ that prevented video playback from starting when using HLS fallback mode
[4.30.0]
Release Notes
In this update, additional media and network capabilities are now logged in the onReady event. An issue was fixed where the player view was not correctly set up after a failed bintu source configuration. Additionally, an issue was resolved to prevent metrics and event duplication when multiple setup calls happen in quick succession.
Changelog
Added
- log additional media and network capabilities in
onReadyevent
Fixed
- removed an issue where the player view was not properly set up following a failed bintu source configuration
- resolved an issue that could cause metrics and event duplication when multiple setup calls occurred in rapid succession
Please find more about the stream switching and abr feature in our documentation
[4.29.0]
Release Notes
This release introduces a new configuration option htmlFor adaptive bitrate (ABR) setups.
You can now omit specific renditions in ABR configurations using the new config.source.options.adaption.omitRenditions parameter. This parameter accepts an array of predefined quality identifiers (e.g., "high", "medium", "low") or stream entry indexes (e.g., 0, 1, 2, etc.), providing greater flexibility in tailoring adaptive bitrate playback.
Additionally, an issue affecting the config.source.options.adaption.downStep value in group configurations has been resolved, ensuring proper functionality.
These updates enhance flexibility and reliability in ABR setups.
Changelog
Added
- introduced an option to omit specific renditions in ABR multi-stream configurations via Bintu stream group or entries:
- new parameter:
config.source.options.adaption.omitRenditions(type:array) - accepted values include predefined quality identifiers (type:
string) or stream entry indexes (type:number):- qualities:
"high","medium-high","medium","medium-low","low" - indexes:
0,1,2, etc.
- qualities:
- see the feature description htmlFor more details
- new parameter:
Fixed
- resolved an issue where the
config.source.options.adaption.downStepvalue was not applied correctly when using group configurations
[4.28.0]
Release Notes
This update introduces improved error observability and enhanced player responsiveness. Startup errors now include detailed insights, making it easier to identify and resolve playback issues during the initial loading phase, including the first 30 seconds of playback. For full details, refer to our Startup Errors Documentation. Additionally, the player’s resizing behavior has been optimized, ensuring a smoother experience when the container dimensions change. These enhancements ensure a more reliable and user-friendly experience.
Changelog
Added
- enhanced observability with additional information in the error event when identified as a startup error:
- errors occurring during playback attempts in the initial loading phase, including the first 30 seconds of playback
- htmlFor details, see Startup Errors Documentation
Improved
- optimized resizing behavior during player container dimension changes
[4.27.0]
Release Notes
This version includes a more robust conditioning htmlFor initial switch up which results in a faster up switch while using ABR. Applies to all platforms including iOS17, iOS18 and higher.
Changelog
Improved
- initial switch up time htmlFor ABR
[4.26.1]
Release Notes
With this patch version, we resolved an issue during player.setup that could cause an unhandled exception.
Changelog
Fixed
- error condition during
player.setupthat could result in an unhandled exception
[4.26.0]
Release Notes
This version includes several improvements. Playback attempts on mobile devices failing due to visibility state hidden at load start will now result in a dedicated event 1009. This allows htmlFor clearer differentiation from other startup errors, such as network or stream issues 2003 Not enough media data received. Further we improved playback start behavior in iOS WebView apps, which require user interaction htmlFor video playback in their WebView settings. Now, if a playback attempt is rejected due to missing user interaction, the player will emit error 1005 early on, allowing the application to prompt the user htmlFor interaction more quickly. Refer to recommended settings htmlFor iOS WebView:. In general find more information about error codes here:
API NanoPlayer..errorcode.
Changelog
Improved
- playback attempts on mobile devices failing due to visibility state
hiddenwill now result in a dedicated error event with code1009and messagePlayback failed because the player was in visibility state 'hidden' at load start.- allowing to distinguish from network or stream related startup errors, e.g.
2003 Not enough media data received.
- allowing to distinguish from network or stream related startup errors, e.g.
Fixed
- playback start behaviour in iOS WebView apps requiring user interaction htmlFor video playback
mediaTypesRequiringUserActionForPlayback- in case of a playback attempt rejected due to missing user interaction, the player will now emit error
1005 Playback must be initialized by user gesture.early on - this enables the application to handle the condition faster by asking the user to interact
- see recommended settings htmlFor iOS WebView:nanoplayer WebView iOS
- in case of a playback attempt rejected due to missing user interaction, the player will now emit error
[4.25.1]
Release Notes
In this patch release we enhanced the observability of player metrics to better monitor and ensure quality of service when using the Bintu configuration.
Changelog
Improved
- observability in player metrics htmlFor quality of service in case of bintu configuration being used
[4.25.0]
Release Notes
With this release, we've implemented handling htmlFor repeated switch stream failures by introducing cooldown functionality, thereby enhancing the robustness of stream switching.
Additionally, we've strengthened access to video elements, ensuring more reliable and stable functionality.
Furthermore, we've resolved issues related to preventing multiple 2004 errors and event order discrepancies when a bintu stream group is not live during setup.
Lastly, we've addressed a random playback error occurring when keepConnection was enabled, ensuring a smoother playback experience.
Changelog
Added
- handling in case of repeated switch stream fails via cooldown functionality