Changelog
These are the release notes for THEOplayer 11.0.0 and higher. For older versions, see:
🚀 11.2.0 (2026/05/07)
Web
✨ Features
- Exposed
traffickingParametersStringfor ads ingoogle-daisources. - Added support for
#EXT-X-KEYtags for PlayReady with CENC encryption for HLS streams. - Added support for
replaceContentfor OptiView Ads streams.
🐛 Issues
- Fixed an issue where the player would not have the correct
seekable,bufferedanddurationduring ad playback in a VOD OptiView Ads stream. - Fixed an issue where the player would stutter when playing a muxed HLS stream on MacOS Safari unmuted.
- Fixed an issue where switching to an OptiView Live stream with JWT token security enabled while casting to Chromecast did not correctly pass along the JWT token to the receiver.
- Fixed an issue where the playhead would snap back during scrubbing on mobile browsers.
Android
💥 Breaking Changes
- Ads insertion metadata request will now be postponed from
setSourcecall till theplaycall happens as the defaultPreloadTypeisNONE. ChangingPreloadTypetoAUTOorMETADATAbrings the old behaviour back:setSourcewill fetch ads insertion metadata.
✨ Features
- Added support for loading Google DAI metadata in a lazy manner. Use
PreloadType.NONEto delay loading metadata untilPlayer.play()is called. IfPreloadTypeisAUTOorMETADATAthe behaviour stays unchanged: the load request will be executed as soon assetSourceis called.
🐛 Issues
- Fixed an issue where the
PLAYINGevent was fired again after the end of an ad break when using OptiView Ads.
iOS
⚡ Improvements
- Updated the minimum required Google IMA SDK version to 3.31 to include the latest improvements.
🐛 Issues
- Fixed an issue where subtitles were not correctly positioned when changing the player
aspectRatioproperty. - Fixed an issue where no duration change event was dispatched before an HLS live source ended.
- Fixed an issue where the player does not retain picture-in-picture mode when main content is resumed after an ad playback.
- Fixed an issue where non-fatal coreMediaError surfaced as fatal errors.
tvOS
⚡ Improvements
- Updated the minimum required Google IMA SDK version to 4.16 to include the latest improvements.
Chromecast CAF
✨ Features
- Added support for playing Axinom DRM streams on Chromecast.
⚡ Improvements
- Updated all CAF Chromecast applications to use Shaka 4.15.36 by default to enable HLS-CMAF streams and improve OptiView Live playback. Also introduced an MPL-only CAF Chromecast application that does not use Shaka.
🐛 Issues
- Fixed an issue with OptiView Live streams reloading after being cast.
- Fixed an issue with keyOS DRM streams where the
customdataproperty was lost when casting to the Chromecast CAF app.
Roku
✨ Features
- Added in support for DRM on THEOlive streams. Also added new configuration options for content protection.
🐛 Issues
- Fixed an issue with no playback when switching between two SSAI streams.
- Fixed an issue where the Adobe analytics task node was not being properly cleaned up when the connector is destroyed. Added a param to the connector's
destroymethod to force the Adobe analytics task node to be destroyed when the connector is destroyed.
🚀 11.1.0 (2026/04/28)
Web
✨ Features
- Added
Player.versionas an alias for the globalTHEOplayer.version.
🐛 Issues
- Fixed an issue where
player.hesp.latencieswould returnundefinedfor some OptiView Live streams. - Fixed an issue where
preferredKeySystemswas ignored when using thekeyospre-integration. - Fixed an issue where the player would error or stall when playing an HLS MPEG-TS stream with a small audio-only segment before a discontinuity.
- Fixed an issue where an incorrect segment URL was being requested in a DASH live stream when the player receives an MPD update that re-adds a previously removed segment in a
<SegmentTimeline>.
Android
🐛 Issues
- Fixed an issue where the
durationchangeevent was not fired before theendedevent when an HLS live stream ends with#EXT-X-ENDLIST. - Fixed an issue where switching between two DRM-enabled HESP OptiView Live streams with identical DRM configurations could crash the player.
- Fixed an issue where Cast state events are not fired if
CastStrategy.MANUALis used. The issue resulted in Cast button not being shown.
iOS
💥 Breaking Changes
- As announced in the 11.0.0 release changelog, THEOplayer iOS SDK and its integrations will now be built with Xcode 26 instead of Xcode 16.
🐛 Issues
- Fixed an issue where the aspect ratio was not properly updated while playing an OptiView Real-time stream.
- Fixed an issue where
THEOliveAPI.latencieswould returnnilfor some OptiView Live streams. - Fixed an issue where OptiView Ads triggered through ID3 would fail to load correctly.
- Fixed an issue where MP3 sources with the
audio/mpegmimetype were not recognized correctly.
Chromecast CAF
✨ Features
- Added
Player.versionas an alias for the globalTHEOplayer.version.
Roku
🐛 Issues
- Fixed an issue where using an array of URLs as
source.sourceswould cause an error. - Fixed an issue where the license expired text would show momentarily while renewing a license.
- Fixed issue where VMAP ads would not play.
- Made stall detection logic less prone to false positives.
🚀 11.0.0 (2026/04/16)
We are happy to announce the eleventh major version of THEOplayer, releasing all the improvements and developments our team has achieved since version 10.0.
THEOplayer 11.0 includes some breaking changes per SDK. Please review them carefully in the respective changelog for your SDK.
- The iOS SDK now supports iOS 15 and tvOS 15 and higher, dropping support for iOS/tvOS 13 and 14.
- On Android, the Google IMA integration has been updated to support version 3.39.0 of the Google IMA SDK. This requires core library desugaring to be enabled in your app.
For more info on navigating our breaking changes, take a look at our migration guides for Web, Android, iOS and React Native.
Web
💥 Breaking Changes
- Removed
preloadPublicationsin THEOlive API.
Android
💥 Breaking Changes
- All methods on
PlayerandTHEOplayerViewmust only be called from the main thread and are annotated with@MainThread. Calling these methods from a different thread will throw anIllegalStateException. - The Google IMA SDK integration now requires core library desugaring to be enabled. See our updated guide for Google IMA for instructions.
- Removed
preloadChannelsin THEOlive API. - Changed
MediaTailorAdAvail.idto return aStringinstead of anInt, to align withAdBreak.id. - Removed
TheoAdsErrorEvent, useAdErrorEventinstead. - Removed
TheoAdsEventTypes.THEOADS_ERROR, useAdsEventTypes.AD_ERRORinstead.
✨ Features
- Added
AdBreak.id, to replace the (now deprecated)AdBreak.idAsStringproperty.
⚡ Improvements
- Updated Google IMA SDK to version 3.39.0.
🐛 Issues
- Fixed
Event,EventListenerandEventDispatcherto not use raw types in their generic type parameters. - Fixed a
NullPointerExceptionfired by the IMA SDK on ad request.
👎 Deprecations
- Deprecated
AdBreak.idAsString, useAdBreak.idinstead.
iOS
💥 Breaking Changes
- The minimum supported iOS/tvOS version is now 15.0, dropping support for iOS/tvOS 13 and 14.
- This update aligns with current Xcode tooling requirements and enables us to maintain a high standard of performance, security, and long-term support for the SDK. All devices that support iOS/tvOS 13 and 14 are capable of upgrading to iOS/tvOS 15 or later, meaning no active hardware is excluded by this change. Additionally, based on our internal analytics, fewer than 1% of end users remain on versions below iOS/tvOS 15, and those users are predominantly on older SDK versions. This change allows us to focus development efforts on modern platform capabilities while minimizing impact to production environments.
- THEOplayer iOS SDK and its integrations will be built with Xcode 26 instead of Xcode 16 in an upcoming minor 11.x version.
- This aligns with Apple's announcement that apps must be built with the iOS 26 & tvOS 26 SDKs starting April 28, 2026.
- Please note that this is only an announcement, but not an immediate change for THEOplayer SDK. Please check upcoming release changelogs for more information.
- Removed deprecated
ManifestInterceptorandDeveloperSettingsAPIs in favor ofNetworkAPI. - Renamed
playerMetricsAPI tometrics. - Changed
Ad.adBreaktype to be optional. - Removed deprecated
MediaTrack.activeQualityBandwidthproperty in favor ofMediaTrack.activeQuality.bandwidth. - Removed deprecated
SourceDescription.enableStreamingDVRproperty. - Errors in
CachingTaskErrorStateChangeEventnow dispatch cache related error codes instead ofNETWORK_ERRORcode. For more details, check thecauseproperty of the error. - Removed
preloadPublicationsin THEOlive API.
✨ Features
- Starting with 11.0.0, the THEOplayer iOS SDK will be released in a public self-hosted spec repo.
- To get the SDK from our hosted repo, simply add
source 'https://github.com/THEOplayer/cocoapods-specs'to yourPodfile. - This decision comes as a solution to the planned read-only change to the CocoaPods public spec repo at the end of 2026.
- For now, we will keep publishing to both sources, but we highly recommended switching to THEOplayer's spec repo. Starting with 12.0.0 later this year, we plan to stop publishing to the CocoaPods public spec repo.
- To get the SDK from our hosted repo, simply add
👎 Deprecations
- Deprecated the old Chromecast pipeline in favor of the new experimental pipeline.
- The new Chromecast pipeline introduced in version 10.6.0 offers new features and improved performance. Over time and with more positive feedback, we are heading towards switching to the new pipeline by default.
- The old pipeline is still enabled by default. However, we highly recommend customers switch to the new pipeline by setting
enableExperimentalPipelinetotrueinCastConfiguration. - Starting with 12.0.0 later this year, we plan to retire the
enableExperimentalPipelineproperty together with the old pipeline, making the new pipeline the default for all customers.
- Changed the return types of
player.castandplayer.cast.airplayto be non-optional.
Roku
💥 Breaking Changes
- Removed deprecated
bitratechangeevent.