For each new version of Google Cast that is released, the changes are
described below and the [API references](https://developers.google.com/cast/docs/reference)
are updated. For changes to the Design Checklist, see its
[changelog](https://developers.google.com/cast/docs/design_checklist/changelog).

> [!NOTE]
> **Note:** Google Play Services occasionally releases new versions of `cast` and `cast-tv` libraries for global updates and bug fixes. Check [the Google Play Services
> release notes](https://developers.google.com/android/guides/releases) for the latest Android updates.

<br />

### October 27, 2026


**Web Receiver 3.0.0157**

*Tentative rollout completion: November 10, 2026*

Major changes:

- Update the Cast Receiver SDK for compatibility with Shaka v5+
- Allow receiver applications to optionally specify a custom reason (`APP_CUSTOM_STOP`) for terminating the Cast session

Other changes:

- Fix missing media element lifecycle events from recycled Shaka Player instances
- Fix detection of 2nd gen Chromecast dongles in the device metadata API ([`CastReceiverContext.getDeviceInformation()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext#getDeviceInformation)).
- New APIs:
  - An optional `closeReason` parameter on [`CastReceiverContext.stop()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext#stop) and new [`EndedReason`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events#.EndedReason) values
  - New [`DisconnectReason`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.system#.DisconnectReason) values
  - Documented the `UNKNOWN` [`ErrorSeverity`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events#.ErrorSeverity) value
  - [`DashTimedMetadata#eventNode`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.DashTimedMetadata#eventNode)

### October 19, 2026


**Android Sender 23.0.0**

- Updated `play-services-cast-framework` to depend on `androidx.mediarouter:mediarouter:1.9.0-beta01`.
- Deprecated `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/PrecacheManager` and `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext#getPrecacheManager()`.
- `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaMetadata` now exports all available metadata keys to the receiver instead of restricting exported keys to a subset per `mediaType`.

### July 27, 2026


**iOS Sender 4.8.6**

This release enables some Cast devices to use Wake-on-LAN to turn on supported TVs from sleep mode

- The minimum supported iOS version has been increased to iOS16.
- Note this will be the last update published to CocoaPods. Subsequent updates will be available using Swift package manager, and will continue to be available from direct download.

### July 16, 2026


**Web Receiver 3.0.0156**

***Earlier attempts (3.0.0147 - 3.0.0155) rolled back*** due to various regressions [(see below)](https://developers.google.com/cast/docs/release-notes#receiver-x-150)

*Preview release: July 16, 2026*

*Rollout start: August 4, 2026*

*Rollout completion: September 9, 2026*

Major changes:

- The default Shaka Player version used by CAF is updated from 4.9.2 to 4.15.56. See the Shaka Player [changelog](https://github.com/shaka-project/shaka-player/blob/v4.15.x/CHANGELOG.md) for a complete list of changes.
- Default [`useShakaForHls`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#useShakaForHls) to `true`, making Shaka the default for all playbacks. Apps can still opt out. See [HLS on Shaka Player Migration](https://developers.google.com/cast/docs/web_receiver/shaka_migration)
- Added metadata API [`getDeviceInformation()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext#getDeviceInformation) to [`CastReceiverContext`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext)

Fixes relative to the original release:

- Fix the v2 SDK failing to load on 1st gen Chromecasts.
- Fix player stuck in buffering state post-ad-break.
- Fix Shaka Player ABR failure when recycling player instances.
- Fix stuck playback on multiplexed TS content.
- Map the "audio/x-mpegurl" and "audio/mpegurl" MIME types as HLS for Shaka Player, fixing error code 4000 for apps using this MIME type.


For a full list of changes, see the [original release notes](https://developers.google.com/cast/docs/release-notes#receiver-x-150).

### May 20, 2026


**Web Receiver 3.0.0151**

Fixes:

- Fix player stuck in buffering state post-ad-break.
- Map the "audio/x-mpegurl" MIME type as HLS for Shaka Player, fixing error code 4000 for apps using this MIME type.

### April 7, 2026


**Android Sender 22.3.1**

- Fixes an issue with 22.3.0 which was causing Robolectric tests to fail with a verification error when affected constructors were called.

### April 6, 2026


**Web Receiver 3.0.0150**

***Initial rollout (3.0.0147) rolled back November 18, 2025*** due to regression in buffering metrics

*Rollout started: April 30, 2026*

*Rollout completion: May 18, 2026*

Major changes:

- The default Shaka Player version used by CAF is updated from 4.9.2 to 4.15.35. See the Shaka Player [changelog](https://github.com/shaka-project/shaka-player/blob/v4.15.x/CHANGELOG.md) for a complete list of changes.
- Default [`useShakaForHls`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#useShakaForHls) to `true`, making Shaka the default for all playbacks. Apps can still opt out. See [HLS on Shaka Player Migration](https://developers.google.com/cast/docs/web_receiver/shaka_migration)
- Added metadata API [`getDeviceInformation()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext#getDeviceInformation) to [`CastReceiverContext`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverContext)

Other changes:

- Fix text tracks persisting from one queued item to the next
- Provide full Shaka request object in CAF response handlers
- Stop setting a default [`availabilityWindowOverride`](https://shaka-player-demo.appspot.com/docs/api/shaka.extern.html#.ManifestConfiguration) for newer Shaka releases
- Add [`playerErrorCode`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.ErrorData#playerErrorCode) and [`severity`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.ErrorData#severity) fields to [`ErrorData`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.ErrorData)
- Fix unresolved promise on load triggered by unexpected runtime errors
- Fix audio tracks for certain HLS load-balancing scenarios
- Fix detection of Dolby Vision codec support
- Fix default DRM robustness settings sent from CAF to Shaka Player
- Fix queue behavior when preloadTime is undefined
- Fix player reset on ad failure
- Fix caching of Shaka Player instance between playbacks
- Avoid HEAD requests in Shaka Player by passing MIME type from CAF
- Fix a bad interaction between track change events in newer Shaka versions and the equivalent events in CAF
- Expose [`getRawSeekableRange()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlayerManager#getRawSeekableRange) for parity with [`getRawCurrentTimeSec()`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlayerManager#getRawCurrentTimeSec).
- Fix default DRM robustness settings for Shaka Player: Widevine L1 for Android-based devices, system default for all others
- Add [`triggeredByEventType`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.ErrorEvent#triggeredByEventType) in [`cast.framework.events.ErrorEvent`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.ErrorEvent)
- Fix missing ad UI for DAI content
- Fix Shaka Player bandwidth estimation bug
- Add [`shakaRequestContext`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.NetworkRequestInfo#shakaRequestContext) to [`cast.framework.NetworkRequestInfo`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.NetworkRequestInfo)
- Bubble up `EXT-X-SESSION-DATA` from HLS to a new [`cast.framework.events.SessionDataEvent`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.SessionDataEvent)

### February 11, 2026


**Android Sender 22.3.0**

- Added option to launch the system Output Switcher instead of an in-app device picker dialog on cast button click. This feature works on devices running Android 13 (API level 33) or higher.
  - Review [these instructions](https://developers.google.com/cast/docs/android_sender/output_switcher) to ensure your app is ready to support media routing changes made from the system Output Switcher.
  - To opt in to this feature, call `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder#setShowSystemOutputSwitcherOnCastIconClick(boolean)` when building the `CastOptions` you return from your `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/OptionsProvider`.
  - You may also dynamically change this setting even after your `CastOptions` have been built, by calling `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext#setShowSystemOutputSwitcherOnCastIconClick(boolean)` on your singleton shared instance of `CastContext`.

### October 20, 2025


**Android Sender 22.2.0**

- Added the Intelligent Device Suggestions API that sends Cast device suggestions to registered apps to make it easier for users to initiate casting sessions using one-tap-transfer. This feature requires the device to be running Android 14 (API level 34) or higher.
  - Access the API through `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/devicesuggestions/DeviceSuggestions#getClient()`.
  - `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/devicesuggestions/DeviceSuggestionsClient#requestDeviceSuggestions()` to request for device suggestions.
  - `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/devicesuggestions/DeviceSuggestionsClient#registerCallback()` to be notified of new devices to display as a suggestion or expiration of previous suggestions, and `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/devicesuggestions/DeviceSuggestionsClient#unregisterCallback()` to unregister the callback.
  - `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/devicesuggestions/DeviceSuggestionsClient#clearClientData()` removes the data for your app that the device suggestions are based on.

### Oct 7, 2025


**iOS Sender 4.8.4**

- Added UI for users to read and approve the Cast Terms of Service and Privacy Policy on the sender side.
- The minimum version supported by the iOS SDK is now iOS 15.
- Cocoapods has released a static library by default since version 4.3.1. Starting with version 4.8.4, this static library includes the Protobuf library. We recommend that you use the static library to avoid potential version compatibility issues with Protobuf. However, you may also [download the dynamic library](https://developers.google.com/cast/docs/ios_sender#downloads) instead.
- Note that cast failures and disconnects with a `https://developers.google.com/cast/docs/reference/ios/g_c_k_error_8h` of `GCKErrorCodeCancelled` are intended behavior. Ensure that your app does not automatically retry casting if a casting fails or disconnects due to `GCKErrorCodeCancelled`, as this may cause unexpected behavior if the Terms of Service are rejected by the user.

### May 12, 2025


**Android Sender 22.1.0**

- Released play-services-cast:22.1.0 and play-services-cast-framework:22.1.0
  - Updated to depend on androidx.mediarouter:mediarouter:1.8.0-beta01 and supports the AndroidX Media Router `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouter.RouteInfo#connect()` and `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouter.RouteInfo#disconnect()` APIs.
  - Adds a `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder` to set the AndroidX Media Router `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouterParams.Builder#setMediaTransferRestrictedToSelfProviders(boolean)` API.

### October 28, 2024


**Android Sender 22.0.0 and Android TV Receiver 21.1.1**

- Fixed a potential [Denial Of Service vulnerability](https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-735f-pc8j-v9w8) found in the Protobuf Java Lite library.
- Deleted MediaNotificationService. It shouldn't be used by applications directly.
- Fixes a bug for devices running Android R or older where trying to display an image that is too small in a Google Cast notification can lead to a System UI crash.

### September 4, 2024 November 1, 2024


**Web Receiver 3.0.0133 3.0.0135 3.0.0137**

- The default Shaka Player version used by CAF is updated from 4.3.4 to 4.9.2. See the Shaka Player [changelog](https://github.com/shaka-project/shaka-player/blob/v4.9.x/CHANGELOG.md) for a complete list of changes.
- Enabled content preload for Shaka player. This allows seamless switching between media items or ad breaks.
- Fixed errors caused by Shaka switching codecs.
- Added a new field `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events#.ErrorSeverity` for Shaka errors. If severity is `RECOVERABLE`, playback should not stop.
- Fixed a content load failure for concurrent load requests.
- Internally, CAF now uses `https://shaka-player-demo.appspot.com/docs/api/shaka.Player.html#attach` to attach a media element instead of passing the media element to the `https://shaka-player-demo.appspot.com/docs/api/shaka.Player.html#Player` constructor (deprecated in the Shaka API).
- Added `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.Id3Event#frameType` and `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.Id3Event#frameDescription` fields to `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.Id3Event`. These fields are populated when Shaka Player is used for playback.
- Added `REQUEST_GET_STATUS` and `REQUEST_PRELOAD` events. Those events can be listened with `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlayerManager#addEventListener`.
- Added an error response for load requests with an incorrect `requestId` instead of silently failing.
- Fixed warning log for Shaka Player [`jumpLargeGaps` config](https://v3-3-19-dot-shaka-player-demo.appspot.com/docs/api/shaka.extern.html#.StreamingConfiguration), which was deprecated in Shaka v4.
- Started populating `requestId` in the `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.MediaStatus` message for a `LOADING` state.
- Recycle Shaka player instance when loading new content.
- Dropped support for deprecated `QUEUE_SHUFFLE` media command. Use `QUEUE_UPDATE` instead.
- Fixed support for VAST ad pods where each `<Ad>` tag has a `sequence` attribute and a nested `<Wrapper>` tag.
- Fixed propagation of the `crossorigin` attribute without a value from `<cast-media-player>` to the nested `<video>` element.
- Expose inband audio language in MPL.

### August 22, 2024


**iOS Sender 4.8.3**

- Fixed a bug where Cast Button wouldn't open the device picker on receiving a tap.
- Fixed a crash that affects devices running iOS 17 and later related to AVRouting.

### April 18, 2024


**iOS Sender 4.8.1**

- The minimum version supported by Cast SDK is now iOS 14.
- Privacy manifest included in the package along with the signed xcframework.
- Guest mode has been deprecated and removed. A single flavour of SDK will be available for integration from this release.
- Fixed a crash if a short ad is played sometimes while casting.

### December 11, 2023


**Web Receiver 3.0.0122**

- Added support for Ad Pods and Ad Buffet for VAST.
- Updated Cast Player media controls UI for Google TV devices.
- Added a new `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.Track#audioTrackInfo` field to the `Track` object.
- Added `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.system.Message`, that represents a message received from or sent to a sender.
- Changed the seek break logic. Now the Web Receiver creates a synthetic `seek-{timestamp}` break only when there are more than 1 breaks returned from `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.breaks.BreakManager#setBreakSeekInterceptor`, otherwise the seek break remains equal to the original break on a timeline.
- Added `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#shakaVariant` option to load debug versions of Shaka Player in CAF.
- Fixed `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#licenseRequestHandler` and `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#licenseResponseHandler` not being recognized with Shaka for HLS when AES-128 encryption is used.
- Fixed `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events.Id3Event` not being fired when Shaka Player is used.
- Fixed side-loaded text tracks when preroll ads are used.
- Fixed text rendering when `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#enableUITextDisplayer` is used.
- Fixed various case-sensitivity issues for VAST, MIME types, and content protection system names.
- Fixed various issues with forced captions.
- Fixed populating `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.events#.EndedReason` codes for `BREAK_CLIP_ENDED` events.

### December 4, 2023


**Android Sender 21.4.0 and Android TV Receiver 21.0.1**

- Released play-services-cast:21.4.0 and play-services-cast-framework:21.4.0
  - Increased minSdkVersion to from 16 to 19.
  - Updated to depend on androidx.mediarouter:mediarouter:1.6.0-beta01. This makes `https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton` always visible by default. This allowed for decreasing the scenarios where Cast device discovery is started automatically without user action.
  - Added `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder#setSessionTransferEnabled(boolean)` to set whether the sender application should display Cast devices when the [Output Switcher](https://developers.google.com/cast/docs/android_sender/output_switcher) is enabled. The default value is true.
  - `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat` are no longer created when apps don't set `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/CastMediaOptions` or set CastMediaOptions to null.
  - Fixed a `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/widget/MiniControllerFragment` `https://developer.android.com/reference/android/view/InflateException` error that could occur when using `https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView`.
  - Added new versions of `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastButtonFactory` that return `https://developer.android.com/reference/com/google/android/play/core/tasks/Task` that apps can listen to for a success or a thrown exception. The [old versions](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastButtonFactory#public-static-void-setupmediaroutebutton-context-context,-mediaroutebutton-button) that do not take an `https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html` argument will ignore ModuleUnavailableExceptions and fail silently.
- Released play-services-cast-tv:21.0.1
  - Increased minSdkVersion to from 16 to 19.
  - This release includes quality improvements

### July 20, 2023


**iOS Sender 4.8.0**

- The minimum version supported by the iOS SDK is now iOS 13.
- First stable XCFramework release.
- XCFrameworks available through Cocoapods.
- Restored the functionality to control volume with physical volume buttons during media playback.
- Cast button now respects tint color when used in a navigation bar.
- Navigation title color can now be customized using the [GCKUIStyle API](https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_u_i_style).
- Fixed transparent navigation bar issue in Media Track Captions List View.
- Fixed a crash in the XCFramework beta.
- Added an API to bind a UIControl with forward or rewind actions.
- Added casting support to Pixel tablets.

  > [!NOTE]
  > **Note:** Starting with this version of the iOS Sender SDK, when casting to a Pixel tablet from an iOS device, the iOS device will now display a dialog that instructs the user to accept the casting request on their Pixel tablet before casting can succeed.

### July 6, 2023


**Web Receiver 3.0.0111**

- Added support for dynamic ad insertion using `BreakManager` `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.breaks.BreakManager#addBreak` and `https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.breaks.BreakManager#removeBreakById` .
- Added `Subtype` string parsing to Smooth manifests.
- Added support for async requests in the `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#manifestRequestHandler` , `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#segmentRequestHandler` , and `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#licenseRequestHandler` for Shaka Player.
- Added support for forced subtitles.
- Bumped the default Shaka version for CAF to v4.3.4.
- Clarified `setActiveByIds` parameter description.
- Corrected how CAF chooses distinct audio tracks.
- Corrected request body type conversions for Shaka request filters.
- Added capability to query `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.breaks.CreativeInformation` related to a `BreakClip` in `BreakManager` `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.breaks.BreakManager#getCreativeInfoByClipId` .
- Fixed media metadata missing during the loading of the media element on DPad-controlled devices.
- Added properties `hlsSegmentFormat` and `hlsVideoSegmentFormat` to `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.BreakClip` .
- Fixed case-sensitive MIME type comparisons using MPL.
- Fixed live HLS (TS-based) infinite buffering on load using Shaka Player.
- Fixed the `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.ui.PlayerDataBinder` behavior for the `IS_AT_LIVE_EDGE_CHANGED` event.
- Fixed infinite loop on insufficient data provided in TS segments using MPL.
- Added `error.stack` for Shaka Player errors.
- Changed to use the `audioMimeType` field instead of `audioCodec` from Shaka Player's track object to populate the `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.Track#trackContentType` field for variant tracks.
- Added `shaka.extern.track.label` to `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.messages.Track#name` for Shaka Player tracks.
- Expanded the `cast.framework.stats.Stats` object to account for existing fields in `shaka.extern.Stats`.
- Fixed media time calculations for content with expanded embedded breaks.

### March 28, 2023


**Android Sender 21.3.0 and Android TV Receiver 21.0.0**

- Released play-services-cast:21.3.0 and play-services-cast-framework:21.3.0
  - `https://developer.android.com/reference/android/app/NotificationManager` is now used to post Cast media notifications instead of `https://developer.android.com/guide/components/foreground-services`.
  - Added a new `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastReasonCodes#CAST_CANCELLED` to indicate Cast sessions being canceled.
- Released play-services-cast-tv:21.0.0
  - Fixed nullable annotation for `https://developers.google.com/android/reference/com/google/android/gms/cast/tv/media/MediaManager`.

### October 17, 2022


**Web Receiver 3.0.0105**

- Upgraded Shaka player to version 3.2.11.
- Added `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#enableUITextDisplayer` to render captions in Shaka Player using the DOM.
- Added `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#shakaVersion` and `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#useShakaForHls` to allow receivers to use Shaka Player for HLS playback.
- `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#manifestHandler`, `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#segmentHandler`, and `
  https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.PlaybackConfig#licenseHandler` can now access HTTP response headers.
- Added `customData` to `CommandAndControlManager#ErrorResponseData` when the `LOAD_BY_ENTITY` message resolves with an error.

### October 10, 2022


**Android Sender 21.2.0**

- Released play-services-cast:21.2.0 and play-services-cast-framework:21.2.0
  - Introduced the `
    https://developers.google.com/cast/docs/android_sender/output_switcher`feature.
  - Added a new API`https://developers.google.com/android/reference/com/google/android/gms/cast/Cast.Listener#onDeviceNameChanged()`to notify the change of device name for `https://developers.google.com/cast/docs/web_receiver/core_features#stream_transfer`.
  - Deprecated `
    https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder#setVolumeDeltaBeforeIceCreamSandwich(double)` and `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions#getVolumeDeltaBeforeIceCreamSandwich()`.
  - Fixed `ForegroundServiceStartNotAllowedException` with the `
    https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaNotificationService`.
  - Updated `
    https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaNotificationService` with `https://source.android.com/docs/core/display/media-control`.
  - Updated `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/RemoteMediaClient` APIs to accept nullable `customData`.
  - Updated `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaInfo.Builder#public-mediainfo.builder-string-contentid,-string-entity`to accept either `contentId` or `contentURL`.
  - Updated `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/ImagePicker#public-webimage-onpickimage-mediametadata-mediametadata,-imagehints-hints` to accept nullable `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaMetadata`.
  - Updated the `com.google.android.datatransport:transport-api` dependency to the latest version.

### August 8, 2022


**Android Sender 21.1.0 and Android TV Receiver 20.0.0**

- Released play-services-cast:21.1.0 and play-services-cast-framework:21.1.0
  - Deprecated `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext#getSharedInstance(android.content.Context)`. Instead, use `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext#getSharedInstance(android.content.Context,%20java.util.concurrent.Executor)`, which returns a Task API, and `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/ModuleUnavailableException` for handling the exception when the Cast SDK fails to load the internal Cast module.
  - Deprecated `https://developers.google.com/android/reference/com/google/android/gms/cast/ApplicationMetadata#getImages()`. Use `https://developers.google.com/android/reference/com/google/android/gms/cast/ApplicationMetadata#getIconUrl()` instead which returns the application image that is set in the Cast Developer Console.
  - Fixed a `https://developer.android.com/reference/java/util/ConcurrentModificationException` error that could occur when registering and unregistering `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaQueue.Callback`.
  - Fixed `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaInfo#getStreamDuration()` for Live Streams.
  - Fixed the notification trampoline restrictions for `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaNotificationService` on Android S.
  - Fixed issue for `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext` leaking reference to activity.
  - Fixed a bug where a sharp background image is displayed during an ad instead of a blurred version.
- Released play-services-cast-tv:20.0.0
  - Bumped the `minSdkVersion` from 14 to 16.
  - Fixed an issue with `https://developers.google.com/android/reference/com/google/android/gms/cast/tv/media/MediaManager#setSessionCompatToken(android.support.v4.media.session.MediaSessionCompat.Token)` where a null argument wasn't properly supported.

### March 31, 2022


**Web Receiver 3.0.0103, MPL Player 1.0.0.113**

- Upgraded the default Shaka player version to 3.2.2.
- Added a new API, `cast.framework.PlaybackConfig#shakaConfig`, to allow overriding Shaka player version and other Shaka options.
- Added a new API, `cast.framework.ui.Controls#hasMediaControlsOverlay()`, to query whether the media control overlay is rendered on top of their application.
- Added a new style, `cast.framework.ui.ControlsButton.LIKE_HEART`, for the Like user action.
- The `currentMediaTime` value of the `cast.framework.events.EventType.BREAK_CLIP_ENDED` event data now represents the current time of the latest break clip at the moment the event occurred.
- Added a method `cast.framework.PlayerManager#getRawCurrentTimeSec` that returns the media time of the media element.
- Added `cast.framework.NetworkRequestInfo#timeoutInterval` to specify the HTTP request timeout for player requests.
- Fixed MPL bugs in decoding CEA 608/708 captions for demuxed A/V streams.
- Fixed the MPL WebVTT timestamp parsing logic to accept more than 2 digits for the hours value.

### December 9, 2021


**Android Sender 21.0.0**

- Added better nullability support for Kotlin, by making null safety violations an error. Java developers will see no impact. Kotlin developers might see new build failures if they have existing code that was not null-safe.

### November 19, 2021


**iOS Sender 4.7.0**

- Fixed iOS sender support for using [ATV credentials with Cast Connect.](https://developers.google.com/cast/docs/android_tv_receiver/core_features#setting_atv_credentials_on_sender)
- Fixed a bug where [navigation bars had transparent backgrounds](https://issuetracker.google.com/201085359) when building with Xcode 13.
- Fixed [accessibility issues](https://issuetracker.google.com/153676062) reported with the `GCKUICastButton.`
- Fixed a bug where switching between WiFi and cellular would disconnect a cast session, instead of suspending it.
- Dropped support for iOS10 and iOS11, and as a consequence, support for 32-bit architectures.
- Other bug fixes and performance improvements.

### November 16, 2021


**Android Sender 20.1.0**

- **Note: Apps targeting Android 12 must update to Android Sender 20.1.0
  to prevent a runtime crash.**
- Queue improvements
  - Added a new `itemsReorderedAtIndexes` callback to [MediaQueue](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaQueue) that gets called when the queue has been reordered.
  - Added support for the serialization of queue commands.
- Made the `customData` param in `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/RemoteMediaClient#public-pendingresultremotemediaclient.mediachannelresult-queuesetrepeatmode-int-repeatmode,-jsonobject-customdata` nullable.
- [The Remote Display feature](https://developers.google.com/android/reference/com/google/android/gms/cast/CastRemoteDisplay) has been deprecated.
- The `minSdkVersion` has been bumped from 14 to 16.

### October 26, 2021


**Web Receiver 3.0.0102**

- Upgrade to Shaka player v3.0.13 (which in turn fixes a number of previously reported issues).
- Added support for [secondary images on smart displays and Chromecasts.](https://developers.google.com/cast/docs/web_receiver/secondary_image)
- Fixed an issue where captions were not displaying for buffered streams due to an error in logic used to detect duplicate tracks.
- Fixed an issue where the receiver's error callback wasn't fired when `LOAD_BY_ENTITY` returned an error.
- Added support for high-efficiency AAC (HE-AAC) audio codecs for transport streams.
- Fixed a bug where `PlayerManager.getStats()` was not returning the correct values for height and width.
- Removed VAST and VMAP information from `MediaStatus` messages to avoid overflows that can cause a sender to get disconnected from the receiver.
- Fixed a problem where the `endedReason` wasn't provided to the sender when ads are skipped.
- Fixed a problem where ad breaks were getting removed from the load queue before playing.
- Added a new `cast.framework.message.QueueChange#reorderItemIds` field which contains the list of queue items affected by the `QUEUE_CHANGE` operation.
- Reduced buffering in HLS live streams in MPL when switching between audio tracks, so audio and video now stay in sync.
- Fixed parsing of HLS streams in MPL with embedded CEA608/CEA708 captions.
- Media controls for Chromecast with Google TV will be hidden when media is paused for more than 5 seconds.

### May 26, 2021


**iOS Sender 4.6.1**

- Fixed a problem where backgrounded Cast sessions are suspended for applications that allow background execution.

### May 17, 2021


**iOS Sender 4.6.0**

- Changed the default behavior of the Cast button to always display when connected to Wi-Fi.
- Added a new help dialog which displays when the user taps on the Cast button and no devices are found.
- Deprecated `https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_u_i_cast_button#aa0f22a89c101e9d6c4b233e72ddf815c` API.
- Added more uniform support for dialog customization for those apps that implement a custom UI through the new API `https://developers.google.com/cast/docs/reference/ios/protocol_g_c_k_u_i_cast_button_delegate-p`.
- Added dark mode support for iOS 13 and above.
- Added ad marker customization to `https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_u_i_style_attributes#a4f8b0343d65ab68c1f8f0963467f65e9`.
- Added support for `https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_h_l_s_segment` and `https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_h_l_s_video_segment` to media.
- Bug fixes and performance improvements.

### April 29, 2021


**Web Receiver 3.0.0096**

- Fixed [a bug where image cast was broken](http://issuetracker.google.com/186144236).

### April 20, 2021


**Android Sender 20.0.0 and Android TV Receiver 18.0.0**

- Released play-services-cast:20.0.0 and play-services-cast-framework:20.0.0.
  - Deleted GameManager and related APIs. They have been deprecated since 2017.
  - Added the `https://developers.google.com/android/reference/com/google/android/gms/cast/SessionState` class to the cast client library.
  - Added `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastReasonCodes` to provide detailed explanations of `https://developers.google.com/android/reference/com/google/android/gms/cast/CastStatusCodes`. Use the `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext#getCastReasonCodeForCastStatusCode(int)` method to translate from `https://developers.google.com/android/reference/com/google/android/gms/cast/CastStatusCodes` to `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastReasonCodes`.
  - Added `https://developers.google.com/android/reference/com/google/android/gms/cast/HlsSegmentFormat` and `https://developers.google.com/android/reference/com/google/android/gms/cast/HlsVideoSegmentFormat` to `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaInfo.Builder`.
  - Marked the `foregroundServiceType` of `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaNotificationService` to be `mediaPlayback`.
  - Updated the dependencies on `com.google.android.datatransport:transport-api` to the latest version.
  - Added a `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaLoadRequestData.Builder` constructor to build from a `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaLoadRequestData` object.
  - Fixed an issue with the play/pause button on the mini player when switching from VOD to LIVE stream.
  - Implemented the `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/MediaIntentReceiver#ACTION_DISCONNECT` for Cast media notifications.
- Released play-services-cast-tv:18.0.0:
  - Added the `https://developers.google.com/android/reference/com/google/android/gms/cast/tv/media/StoreSessionRequestData` class and the `https://developers.google.com/android/reference/com/google/android/gms/cast/tv/media/StoreSessionResponseData` class to the cast-tv library.

### April 5, 2021


**Web Receiver 3.0.0095**

- Upgraded Shaka Player to 3.0.10.
- The Cast Button is now shown by default when the `STREAM_TRANSFER` media command is supported.
- Added Suggestions Bar to the bottom of the Media Browse UI. The Suggestion Bar contains interactive chips that when selected can play a media item or scroll through the available media items. Each chip also maps to an available Google Assistant command. Suggestion Chips are currently only supported when the system language is set to English or Japanese.
- Fixed a bug in Chromecast with Google TV where the media controls overlay was displayed when casting photo content to the default receiver.
- Added support for `TRACKS_CHANGED` event.

### December 18, 2020


**Web Receiver 3.0.0085**

- Added options to [`CastReceiverOptions`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.CastReceiverOptions#CastReceiverOptions) to disable loading of Shaka and MPL.

### December 3, 2020


**iOS Sender 4.5.3**

- Fixed load-time error "Undefined symbols for architecture arm64" for `GCKCredentialsData`.
- Fixed compiler error for conflicting nullability on `GCKCredentialsData`.
- Warning messages are now logged if the required Bonjour service entries are missing from `Info.plist`.

### November 4, 2020


**iOS Sender 4.5.2**

- Updated the minimum version of `Protobuf` library to 3.13 in CocoaPods. Usage of previous `Protobuf` versions will cause the SDK to crash.
- This release is exclusive to CocoaPods and uses the same binary as v4.5.1.

### October 13, 2020


**iOS Sender 4.5.1**

- Fixed an issue where `GCKUICastButton` with a custom device picker was not updating to reflect the correct Cast state.
- Fixed the warning of "Conflicting nullability specifier on return types."

### September 14, 2020


**Web Receiver**

- Upgraded Shaka Player to 2.5.16.


**iOS Sender 4.5.0**

- Added support for Cast device discovery changes in iOS 14, which requires explicit user permission when casting for the first time. See [First-time casting in iOS 14](https://developers.google.com/cast/docs/ios_sender/permissions_and_discovery#first-time_casting) for more information.
- Updated minimum SDK support to iOS 10.

### September 8, 2020


**Web Sender**

- Introduced**Cast Connect** , which enables Chrome apps to cast to Android TV apps. For details, see the [Android TV Receiver documentation](https://developers.google.com/cast/docs/android_tv_receiver).

### August 31, 2020


**Web Receiver**

- Added support for #EXT-X-DATERANGE in HLS / EventStream in DASH.

### August 3, 2020


**iOS sender 4.4.8**

- Introduced**Cast Connect** , which enables iOS apps to cast to Android TV apps. For details, see the [Android TV Receiver documentation](https://developers.google.com/cast/docs/android_tv_receiver).

### July 29, 2020


**Android Sender 19.0.0 and Android TV Receiver 17.0.0**

- Introduced**Cast Connect** , which allows Android TV apps to be compliant to the Cast protocol so that they behave as Receiver apps. For details, see the [Android TV Receiver documentation](https://developers.google.com/cast/docs/android_tv_receiver).
  - Released play-services-cast-tv:17.0.0 as the receiver SDK for Android TV apps.
  - Released play-services-cast:19.0.0 and play-services-cast-framework:19.0.0, including Cast Connect sender APIs and APIs used by play-services-cast-tv.
- API updates:
  - Deprecated `https://developers.google.com/android/reference/com/google/android/gms/cast/AdBreakStatus#AD_BREAK_CLIP_NOT_SKIPPABLE`, use `https://developers.google.com/android/reference/com/google/android/gms/cast/AdBreakClipInfo#AD_BREAK_CLIP_NOT_SKIPPABLE` instead.
  - Renamed `https://developers.google.com/android/reference/com/google/android/gms/cast/CastRemoteDisplayLocalService#getDisplay()` to `https://developers.google.com/android/reference/com/google/android/gms/cast/CastRemoteDisplayLocalService#getCastRemoteDisplay()` to avoid an API conflict on Android 11.
  - Added `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaError#getCustomData()` and `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaError#getType()` in `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaError`.
  - Added detailed supported command bit constants (`https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus#COMMAND_PAUSE`) in `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus`.
  - Exposed `https://developers.google.com/android/reference/com/google/android/gms/cast/MediaTrack#getRoles()`.
  - Exposed `https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/RemoteMediaClient.Callback#onMediaError()`.

### July 13, 2020


**Web Receiver**

- Improved media category detection for the default UI (video vs audio).
- Added support for live absolute time from Shaka Player.
- Fixed an issue with audio glitches on Nest Hub Max devices.
- Upgraded Shaka Player to 2.5.12.

### May 4, 2020


**Web Receiver**

- Timeout values for Google Assistant commands are now configurable.
- Detailed MPL error codes are now exposed in error events.
- Supported media commands can now be enforced by using the [`enforceSupportedCommands`](https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.CastReceiverOptions#enforceSupportedCommands) flag.
- Fixed the supported commands reported during a break in playback.
- Fixed an issue with an Assistant shuffle load request.
- Fixed a bug in `getStats` values.

### March 12, 2020


**Web Receiver**

- Added new device capability `IS_CBCS_SUPPORTED` to `deviceCapabilities`.
- Upgraded Shaka Player to 2.5.8.

### February 27, 2020


**iOS Sender v4.4.7**

- Fixed the physical volume buttons for apps that don't use any UI components from the SDK.
- Fixed an issue with the `currentTime` label in the expanded controller when pressing the forward or backward buttons repeatedly.
- Media items in `GCKMediaQueue` are persisted after the app moves to the background.
- UI customization updates:
  - The progress bar of the mini controller is now customizable.
  - The background color of the navigation bar and toolbar of the Cast dialog is now customizable.
  - Fixed UI issues specific to iPhone X.
- Fixed a few issues causing stalls and crashes.

### February 24, 2020


**Android Sender 18.1.0**

- Added pre-defined constants for `MediaError` [detailed error codes](https://developers.google.com/android/reference/com/google/android/gms/cast/MediaError.DetailedErrorCode) and error reasons.

### January 22, 2020


**Web Receiver**

- Fixed an issue where multiple media statuses are broadcast when changing supported commands.


**Receiver v2**

- Improve bitrate selection for VAST Ads.


**MPL**

- Added support for session key prefetching. See the [HTTP Live Streaming 2nd Edition draft](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-04#section-4.4.4.5) for more information.

### January 7, 2020


**Web Receiver**

- Added support for ID3 timed metadata in `cast.framework.events.EmsgEvent`. Additionally, `EmsgEvent` is now dispatched for HLS/CMAF content.
- Fixed an issue where player data was missing during `PLAYER_LOAD_COMPLETE` when transitioning to a new media session.
- Fixed an issue where the media icon was overlapping the break clip number and countdown.
- Fixed issue where the countdown of the first break clip would always display 0:00.
- Upgraded Shaka Player to 2.5.6.


**Web Receiver v2**

- Added new device capability `IS_DEVICE_REGISTERED` to `deviceCapabilities`. If set, the Cast device is registered in the Cast Developer Console for debugging.
- Fixed a stalling load issue.
- Individual media error messages are now sent for every failed item in the queue.


**MPL**

- Fixed an issue with live streams where audio would continue to play for some time after a stop message was received.
- Fixed an issue where video compression artifacts would show during quality level changes.
- Fixed an issue where HLS streams using \*.m4s segments were failing.

### December 5, 2019


**Android Sender 18.0.0**

- Added [`setMediaSessionEnabled`](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/CastMediaOptions.Builder#setMediaSessionEnabled(boolean)) for developers to enable and disable a media session created by Cast SDK.
- Changed how media notifications show during a Cast session. If media notification is enabled, it will always show during a cast session. Previously, it would only show when the app was in the background.
- Changed some media-related classes to implement a [`Parcelable`](https://developer.android.com/reference/android/os/Parcelable) interface.

### November 11, 2019


**iOS Sender v4.4.6**

- Fixed an issue related to the minimum supported version of iOS 9.

### October 7, 2019


**Web Receiver**

- Exposed tracks roles as part of tracks metadata.
- Upgraded Shaka Player version to 2.5.5.

### September 23, 2019


**iOS Sender v4.4.5**

- Improved support for Cast device discovery and session management.
- Added new media commands to [`GCKMediaStatus`](https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_media_status).
- Added `whenSkippable` property to [`GCKAdBreakStatus`](https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_ad_break_status).
- UI fixes for Ads and iOS 13.

### September 11, 2019


**Android Sender 17.1.0**

- Added `MediaError` field to [RemoteMediaClient.MediaChannelResult](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/media/RemoteMediaClient.MediaChannelResult) that can be used to access the detailed error code for failed media commands.
- The [`MediaStatus.COMMAND_SKIP_FORWARD`](https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus#COMMAND_SKIP_FORWARD) and [`MediaStatus.COMMAND_SKIP_BACKWARD`](https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus#COMMAND_SKIP_BACKWARD) are deprecated. Apps should use [`MediaStatus.COMMAND_QUEUE_NEXT`](https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus#COMMAND_QUEUE_NEXT) and [`MediaStatus.COMMAND_QUEUE_PREVIOUS`](https://developers.google.com/android/reference/com/google/android/gms/cast/MediaStatus#COMMAND_QUEUE_PREVIOUS) instead.
- Added a new dependency on `com.google.android.datatransport:transport-api:2.0.0`.

### September 9, 2019


**Web Receiver**

- `TV_SHOW` metadata type now has a "Playing Next" preview in the default player if the next item is preloaded.
- Added the [`ContentRating`](https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.messages.ContentRating) class to the `cast.framework.messages` namespace.
- Updated the default UI audio title so that `metadata.artist` takes precedence over `metadata.albumArtist`.
- Added support for negative startTime values to indicate start time relative to content end or live edge.
- Media Browse:
  - Media Browse drawer is now automatically hidden after 30 seconds of user inactivity.
  - Added Play/Pause button and media item thumbnail to the top right corner of the Media Browse overlay.
  - Updated Media Browse list behavior. Now horizonal scroll is reset to the initial left-most position every time Media Browse content is set.
- Bug Fixes:
  - Delayed resolving `BasePlayer` end promise to allow media element event to be fired.
  - Handled load error for Ad preloading.
  - Watermark is now displayed with the rest of the metadata.
  - Default audio UI on Chromecast respects `.progressBar` styles.
  - Eliminated splashing of an IDLE screen before LOADING and between playing of subsequent media items.
  - Fixed seek stall for Dash content.


**Web Receiver v2**

- Added the [`ContentRating`](https://developers.google.com/cast/docs/reference/receiver/cast.receiver.media.ContentRating) class to the `cast.receiver.media` namespace.
- Fixed a bug where error data propagated incorrectly when there were multiple items in queue.


**Media Player Library**

- Added [HLS #EXT-X-MEDIA attributes](https://developers.google.com/cast/docs/reference/player/cast.player.api.HlsMediaInfo) to the API.
- Bug Fixes:
  - Fixed an issue with failed SourceBuffer remove() operations causing audio track switching to crash playback.
  - Fixed a parsing issue when a packed audio format type was specified (for example, \*.ec3) but MPEG-4 based segments are used (for example, \*.mp4, \*.mp4a, and so on).
  - Fixed an HLS issue where inband CEA608 captions were displayed with noticeable latency.
  - Fixed HLS and Smooth content with no audio failing to load.

### August 27, 2019


**Web Sender**

- Web Sender now uses the new Custom Elements v1 syntax. This version replaces v0, [which has been deprecated.](https://www.chromestatus.com/feature/4642138092470272)
- Fixed changed events for `breakTime`, `breakClipTime`, and `liveSeekableRange`, using new the `getEstimatedBreakTime`, `getEstimatedBreakClipTime`, and `getLiveSeekableRange` functions added to Chrome M77.

### August 12, 2019


**iOS Sender v4.4.4**

- Improved experience on iOS 13.
- Improved support for Cast device discovery.

### July 30, 2019


**Web Receiver**

- Upgraded Shaka Player version to 2.5.1.
- Fixed issue where metadata overlay disappeared too quickly during content loading.
- Fixed handling of rejection in load interceptor to clear load state.
- Updated `setBrowseContent` to be nullable.
- Fixed issue where reported current time was incorrect when seeking over Ad breaks.
- Added support for [ignoreTtmlPositionInfo](https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.PlaybackConfig#ignoreTtmlPositionInfo) to ignore TTML captions positioning.
- Improved support for handling of load errors:
  - Avoided firing multiple `MediaFinishedEvent`s.
  - Triggered media manager error callback to clear player on load error.

### July 22, 2019


**iOS Sender v4.4.3**

- Improved support for handling of load errors by providing an error_reason.
- Released a version of the SDK without Guest Mode.

### June 17, 2019


**Android Sender 17.0.0**

> [!WARNING]
> **Warning:** This release is a MAJOR version update and breaking change.

- The latest SDK switches from Android Support Libraries to Jetpack (AndroidX) Libraries. Libraries will not work unless you make the following changes in your app:
  - Upgrade `com.android.tools.build:gradle` to v3.2.1 or later.
  - Upgrade `compileSdkVersion` to 28 or later.
  - Update your app to use Jetpack (AndroidX). Follow the instructions in [Migrating to AndroidX](https://developer.android.com/jetpack/androidx/migrate).
- For more information see the [Google APIs for Android Release Notes](https://developers.google.com/android/guides/releases#june_17_2019).

### June 10, 2019


**Web Receiver**

- Introduced support for [Media Browse](https://developers.google.com/cast/docs/web_receiver/media-browse), a new feature for discovering content on smart displays.
- Added localization in the default UI for 9 new locales:
  - Danish
  - English (UK)
  - English (India)
  - English (Singapore)
  - French (Canada)
  - Italian
  - Norwegian
  - Dutch
  - Swedish
- Removed rounded corners from album art for the remote UI.
- Bug fixes for Live and other areas.


**iOS Sender v4.4.2**

- Guest Mode
  - Added support for the "Enable Guest Mode" option from the Cast Developer Console.
  - Fixed a Guest Mode session management issue.
- Bug Fixes
  - Fixed a localization issue introduced in v4.4.1.

### April 24, 2019


**iOS Sender v4.4.1**

- Introduced alpha support for live streams. For details, see the [developer guide](https://developers.google.com/cast/docs/caf_receiver/live).
  - Added new data structures and attributes for live stream status.
  - Added new GCKMediaMetadata keys.
  - Added Live stream media commands:
    - \[GCKRemoteMediaClient loadMediaWithLoadRequestData:\]
    - \[GCKRemoteMediaClient seekWithOptions:\]
  - Improved expanded controller UI to support live streams:
    - Changed the layout and appearance of the expanded controller.
- Bug Fixes
  - Fixed GCKUICastContainerViewController's bottom on iPhone X.
  - Fixed reconnection issue when the OS is performing extensive network activities.
  - Fixed crash in accessibility label initialization with GCKUICastButton.

### April 23, 2019


**Web Receiver**

- Introduced alpha support for live streams. For details, see the [developer guide](https://developers.google.com/cast/docs/caf_receiver/live).
  - Updated UI to support live streams including live indicator.
- Added mediaCategory field to media status to indicate if a media is a video, audio, or a photo.
- Bug Fixes
  - Fixed usage of the playbackConfig.segmentHandler return value.


**Media Player Library**

- Added HEVC codec support to HLS in MPL.


**Web Sender**

- Introduced alpha support for live streams. For details, see the [developer guide](https://developers.google.com/cast/docs/caf_receiver/live).
- Introduced support for ads. For details, see the [developer guide](https://developers.google.com/cast/docs/caf_receiver/ad_breaks).
  - Added RemotePlayerController.skipAd() for skippable ads.


**Android Sender 16.2.0**

- Introduced alpha support for live streams. For details, see the [developer guide](https://developers.google.com/cast/docs/caf_receiver/live).
  - Added new data structures and attributes for live stream status.
  - Added new MediaMetadata keys.
  - Added Live stream media commands:
    - RemoteMediaClient#load(MediaLoadRequestData)
    - RemoteMediaClient#seek(MediaSeekOptions)
  - Improved expanded controller UI to support live streams:
    - Added live stream support to the expanded controller UI widgets.
    - Changed the layout and appearance of the expanded controller.
    - Introduced the live stream compatible CastSeekBar widget to replace the native SeekBar.
    - Modified the ExpandedControllerActivity to use the CastSeekBar instead of SeekBar for live stream compatibility. **The ExpandedControllerActivity#getSeekBar() is now deprecated and
      will return a dummy instance.**
- Added a new MediaStatus#PLAYER_STATE_LOADING player state:
  - When the Web Receiver begins loading the media, the playerState property in MediaStatus is set to MediaStatus#PLAYER_STATE_LOADING until it begins buffering or playing content.
  - In most cases, the app handles this state the same way it was handling MediaStatus#PLAYER_STATE_BUFFERING.
  - Buffering and loading states are not always interchangeable.
  - While loading, the Web Receiver has not yet resolved all the media information, and so the only media information available is what was present in the sender's load media request.
  - While buffering, the media information may contain additional information resolved by the receiver.
- Modified MediaMetadata to support audio books:
  - Added new MediaMetadata keys.
  - Added new metadata type for audiobooks.

### March 25, 2019


**Web Receiver**

- Replaced usage of `document.registerElement()` with `customElements.define()` to make the Web Receiver SDK compatible with newer versions of the Cast platform.
- [`MediaStatus.breakStatus`](https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.messages.MediaStatus#breakStatus) now returns an empty object when ad breaks are present for content but an ad break is not currently playing.
- Fixed an issue with inline VAST tags parsing.


**Media Player Library**

- Fixed the issue of \~20s delay when switching audio tracks.

### February 13, 2019


**Web Receiver**

- Fixed the sudden appearance of the Skip Ad button for Touch UI.
- Fixed displaying breaks information on remote control.


**Media Player Library**

- Fixed an issue with handling licenseUrl for preloaded media.

### February 5, 2019


**iOS Sender v4.3.5**

- Added support for Audiobook metadata, see [GCKMediaMetadata.h](https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_media_metadata) for more details.
- Set correct value for static_framework on the podspec.
- Split styleAttributes for the navigation bar and the toolbar in the [connection controller](https://developers.google.com/cast/docs/reference/ios/interface_g_c_k_u_i_style_attributes_connection_controller).
- Bug Fixes
  - Fixed a crash on certain failed database initializations.
  - Fixed an issue with the Web Receiver volume bar during incoming phone calls or alarm rings.
  - Fixed the redundant calling of certain delegate methods during discovery.
  - Fixed an issue where the media queue list wouldn't clear after the last item in the queue finished playing.
  - Disallowed showing non-reachable nearby devices when the network is not available.
  - Disabled the volume slider on the device view controller for devices in which the volume cannot be controlled.