Skip to content

Releases: jwplayer/jwplayer-react-native

v1.6.0

11 Jun 13:53
32ee7b7

Choose a tag to compare

What's Changed

✨ Highlights

  • New advertising prop: liftsVMAPLevelExtensions — lifts a VMAP-level <vmap:Extensions> block down into each <vmap:AdBreak> (e.g. for skippable extensions). VMAP-inline-only; ignored for remote VMAP URLs.
    • iOS: works on both modern and legacy config (wired in RNJWPlayerAds.configureVAST).
    • Android: works via the modern (default) config path; not available with forceLegacyConfig (the Android SDK exposes the setter only on VmapAdvertisingConfig).
  • iOS JWPlayerKit → 4.26.2 and Android SDK → 4.25.2 (native fixes detailed below).

📦 Native SDK upgrades

iOS — JWPlayerKit 4.26.1 → 4.26.2 (#238)

  • IMA viewability fixes — friendly obstructions, fullscreen refresh, and redirect cap
  • Hardened end-of-media stall safety net
  • Swift-side VMAP-level skippable extension injector (backs liftsVMAPLevelExtensions)

Android — JW SDK 4.25.1 → 4.25.2 (#239)

  • Fix side-loaded captions not rendering on track switch
  • Fix postroll adPosition incorrectly reporting as PRE
  • Refresh background-audio notification on metadata change
  • Android-side VMAP-level skippable extension injector (backs liftsVMAPLevelExtensions)

🔧 Bridge fixes

  • fix(android): catch IllegalViewOperationException in getPlayerView by @Jmilham21 in #237
  • fix(ios): present JWPlayerKit menus over host tab bar (#93) by @Jmilham21 in #236

🧱 Dependency & release

Full Changelog: v1.5.1...v1.6.0

v1.5.1

18 May 18:53
11c0c12

Choose a tag to compare

Highlights

This is a patch release that pulls in upstream native SDK bug fixes — no bridge API changes, so it's a drop-in upgrade from 1.5.0.

Native SDK Upgrades

iOS — JWPlayerKit 4.26.04.26.1 (changelog)

  • Fixed intermittent AVPlayer crash when starting a Chromecast session
  • Fixed Chromecast playlist progression breaking after the first item
  • Fixed stuck "Playing on AirPlay" overlay after media swap
  • Captions now always reload AVPlayerItem on content load (correct sideloaded captions on sequential playlist items)
  • Fixed lock-screen artwork distortion for non-square posters
  • Headless player JS upgraded to 8.48.1

Android — JW Player SDK 4.25.04.25.1 (changelog)

  • Fixed Chromecast caption disable and on-screen icon state sync
  • Fixed DAI "Learn More" click-through pause/resume in Picture-in-Picture
  • Headless player JS upgraded to 8.48.1

Bridge / Packaging

  • Added android/libs and ios/frameworks to .npmignore to keep local-dev binaries out of the published tarball (#231, corrected casing in #235)

What's Changed

  • chore: bump JWPlayerKit to 4.26.1 (iOS) and JW SDK to 4.25.1 (Android) by @Jmilham21 in #234
  • chore: add android/libs and ios/Frameworks to .npmignore by @Jmilham21 in #231
  • Release v1.5.1 by @Jmilham21 in #235

Full Changelog: v1.5.0...v1.5.1

v1.5.0

23 Apr 22:08
9431fed

Choose a tag to compare

Highlights

New playback API

  • setPlaylistItemMetadata({ title, description, image }) updates the currently playing item's metadata without a reload, with a matching onPlaylistItemMetadataChanged event. Android also exposes a refreshNotification flag that cycles the foreground MediaService so the background-audio notification rebuilds with the new title/description. See #228.

Native SDK upgrades (#227)

  • iOS: JWPlayerKit 4.25.24.26.0iOS changelog

    • Quality menu: filter out audio-only sources, label HLS as Auto, preserve captions after a quality switch
    • jwplayerIsReady now dispatched on the main queue
    • Fix accessibility label when player-item title/description are empty
    • Fix toolbar transparency on the error screen when UIDesignRequiresCompatibility is true
    • New bufferHealth on JWTimeData for live-stream buffer metrics
    • New public JWJSONParser.playlistItems(from:) API
    • deviceId / deviceModel renamed to camelCase
    • ⚠️ Minimum iOS deployment target raised to 15.6
  • Android: JW Player SDK 4.24.24.25.0Android changelog

    • Fix user-interaction crash during player teardown
    • Fix ForegroundServiceStartNotAllowedException crash on API 31+
    • Fix oversized captions when the player view is taller than the video
    • Fix VAST progress-bar freeze after an ad error
    • Fix live audio stream showing an infinite spinner with missing controls
    • Fix IMA preroll playing simultaneously with content on replay
    • bufferedPosition exposed on BufferChangeEvent for live-stream buffer health
    • Ad-tag macro replacement for IMA ads

Bridge fixes

  • Cast-aware reconfigure preserves the active Chromecast session across config changes (#221)
  • Normalize event payloads across iOS and Android (#226)
  • Normalize iOS seek event properties to match Android and TS types (#224)
  • iOS onBeforeNextPlaylistItem no longer fires on the initial playlist load (#220)
  • Android: onPlaylist now fires (previously a no-op), onPlaylistItem.playlistItem JSON uses readable keys instead of ProGuarded field names, and onAdEvent emits a type on AdLoaded / AdLoadedXml / AdBreakIgnored (landed in the release branch, #229)

What's Changed

  • Fix IOS running onBeforeNextPlaylistItem callback on initial video load by @normtronics in #220
  • fix: normalize iOS seek event properties to match Android and TS types by @Jmilham21 in #224
  • Upgrade native SDKs — iOS 4.26.0 / Android 4.25.0 by @Jmilham21 in #227
  • Add setPlaylistItemMetadata for live-stream metadata updates by @Jmilham21 in #228
  • fix: cast-aware reconfigure to preserve Chromecast session by @Jmilham21 in #221
  • fix: normalize event payloads across iOS and Android by @Jmilham21 in #226
  • Release v1.5.0 by @Jmilham21 in #229

Full Changelog: v1.4.1...v1.5.0

v1.4.1

02 Mar 00:25
bb590ba

Choose a tag to compare

What's Changed

  • Bump JW Android SDK from 4.24.1 to 4.24.2
  • Release v1.4.1 by @Jmilham21 in #219

Full Changelog: v1.4.0...v1.4.1

v1.4.0

26 Feb 05:45

Choose a tag to compare

v1.4.0

Native SDK Upgrades

  • iOS: JWPlayerKit 4.25.1 → 4.25.2
  • Android: JW Player SDK 4.24.0 → 4.24.1

Bug Fixes

  • fix(ios): replace force-unwrap with safe cast in resolveNextPlaylistItem by @Jmilham21 in #215
  • fix: resolve onBeforeNextPlaylistItem crash and ad issues (#211) by @Jmilham21 in #214

Native SDK Changes (included via version bump)

iOS 4.25.2

  • Improved threading safety for event callbacks
  • Fixed ad container layout in scrollable contexts
  • Fixed caption track selection for DRM content
  • Player controls now remain visible while paused

Android 4.24.1

  • Fixed ad prerolls not playing on subsequent playlist items when using async playlist callbacks
  • onTime events now fire while a DVR stream is paused
  • Improved null safety for ad API calls
  • Fixed Chromecast caption visibility and restoration

Maintenance

  • Reduced npm package size from 151 kB to 91 kB
  • Added build-info hooks to the Example app

What's Changed

Full Changelog: v1.3.4...v1.4.0

v1.3.4

30 Jan 22:45

Choose a tag to compare

What's Changed

Bug Fixes

  • fix: Ensure player cleanup runs on main thread to prevent crash on unmount (#206)
  • fix: Prevent race conditions during player destruction and enhance error handling (#205)

Dependencies

Maintenance

  • Exclude AI configuration files from npm package

Full Changelog: v1.3.2...v1.3.4


Note: v1.3.3 was skipped due to a packaging issue.

v1.3.2

02 Jan 19:54

Choose a tag to compare

Release Notes - v1.3.2

🐛 Bug Fixes

Android: Remove Accidental Command Paste in ImaHelper

Problem: An accidental terminal command was left in the ImaHelper.java source code from v1.3.1, causing compilation errors for projects using Google IMA.

Solution: Removed the errant command line text from the ImaHelper class.

Impact: Android builds with IMA enabled now compile successfully without syntax errors.


📦 Installation

npm install @jwplayer/jwplayer-react-native@1.3.2
# or
yarn add @jwplayer/jwplayer-react-native@1.3.2

What's Changed

Full Changelog: v1.3.1...v1.3.2

v1.3.1

30 Dec 23:22
2755a31

Choose a tag to compare

Release Notes - v1.3.1

🐛 Bug Fixes

Android: Make IMA Dependency Optional (#201)

Problem: After v1.3.0, developers not using Google IMA ads encountered Android build failures requiring core library desugaring even when IMA wasn't being used.

Solution: Implemented Gradle source sets to make the jwplayer-ima dependency truly optional:

  • IMA dependencies only included when RNJWPlayerUseGoogleIMA = true
  • No desugaring required for non-IMA users
  • Graceful degradation: player loads without ads instead of crashing
  • Clear warnings when IMA is configured but not enabled

Impact: VAST-only users can now build without IMA dependencies or desugaring requirements.


🔧 Technical Changes

  • Split IMA code into separate source sets (src/ima/ and src/noima/)
  • Added support for both "client" and "adClient" property names in advertising configs
  • Improved null-safety and validation in advertising configuration
  • Enhanced developer experience with clear warning messages

📦 Installation

npm install @jwplayer/jwplayer-react-native@1.3.1
# or
yarn add @jwplayer/jwplayer-react-native@1.3.1

⚙️ Configuration

For IMA users (no change):

// app/build.gradle
buildscript {
    ext {
        RNJWPlayerUseGoogleIMA = true
    }
}

For VAST-only users (now works without desugaring):

// app/build.gradle
buildscript {
    ext {
        RNJWPlayerUseGoogleIMA = false  // or omit entirely
    }
}

What's Changed

Full Changelog: v1.3.0...v1.3.1

v1.3.0

29 Dec 19:53
908a37f

Choose a tag to compare

Release 1.3.0

🎉 What's New

Native SDK Upgrades

iOS SDK 4.25.0

  • Chromecast Improvements: Fixed embedded captions not displaying on Chromecast devices
  • Playback Fixes:
    • Fixed video not completing after post-roll ad
    • Fixed video pausing after scrubbing during playback
  • UI Improvements:
    • Fixed Next Up card showing wrong video
    • Fixed toolbar transparency issue with UIDesignRequiresCompatibility on iOS 26
    • Fixed iOS 26 black screen in JWPlayerView after ad break
  • Stability: Prevented AVPlayerItem crash when adding outputs that are already attached

See full details: iOS 4.25.0 Changelog

Android SDK 4.24.0

  • Ad SDK Upgrade: Upgraded Google IMA SDK to version 3.37.0
    • ⚠️ Important: Core library desugaring must be enabled when adding Google IMA client dependencies
    • ⚠️ Breaking: Requires setting compiling and target SDK versions when adding the SDK
  • Chromecast Improvements: Improved support for embedded captions in HLS streams when casting to Chromecast
  • Stability: Fixed Picture-in-Picture (PiP) crash that could occur when PiP was triggered multiple times in quick succession

See full details: Android 4.24.0 Changelog

React Native Wrapper Improvements

  • Fixed: License key handling in TypeScript example (#199)
  • Fixed: Player recreation with configuration updates (#194 - fixes issues #192, #188)
  • Enhanced: Player item handling in YouTube example component (#191)
  • Improved: Added bottom padding for Android navigation (#190)
  • Documentation: Updated JSON parsed configs documentation (#187)
  • Documentation: Updated README with rebranding and latest information (#196)
  • Native SDK: Implemented Android 4.24.0 (#197)
  • Native SDK: Implemented iOS 4.25.0 (#198)

📦 Installation

npm install @jwplayer/jwplayer-react-native@1.3.0

or

yarn add @jwplayer/jwplayer-react-native@1.3.0

⚠️ Breaking Changes

Android

When upgrading to Android SDK 4.24.0, you must:

  1. Set the compiling and target SDK versions in your app configuration
  2. Enable core library desugaring if using Google IMA client dependencies

🐛 Bug Fixes

  • Fixed license key not being properly passed in TypeScript example
  • Fixed player recreation issues when updating configurations dynamically
  • Fixed multiple Chromecast-related playback issues (via native SDK updates)
  • Fixed PiP stability issues on Android (via native SDK update)
  • Fixed various iOS 26 compatibility issues (via native SDK update)

📚 Documentation

  • Enhanced documentation for JSON configuration parsing
  • Updated README with current setup instructions
  • Improved example app implementations

🙏 Contributors

Thank you to all contributors who helped make this release possible!

What's Changed


Full Changelog: v1.2.0...v1.3.0

v1.2.0

21 Oct 16:49
94775c7

Choose a tag to compare

What's Changed

Full Changelog: v1.1.3...v1.2.0