Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

react-native-video

TheWidlarzGroup1.2mMIT6.13.0TypeScript support: included

A

readme

react-native-video

🎬 <Video> component for React Native

Documentation

documentation is available at docs.thewidlarzgroup.com/react-native-video/

Examples

You can find several examples demonstrating the usage of react-native-video here.
These include a basic usage and DRM example (with a free DRM stream).

Usage

// Load the module

import Video, {VideoRef} from 'react-native-video';

// Within your render function, assuming you have a file called
// "background.mp4" in your project. You can include multiple videos
// on a single screen if you like.

const VideoPlayer = () => {
 const videoRef = useRef<VideoRef>(null);
 const background = require('./background.mp4');

 return (
   <Video 
    // Can be a URL or a local file.
    source={background}
    // Store reference  
    ref={videoRef}
    // Callback when remote video is buffering                                      
    onBuffer={onBuffer}
    // Callback when video cannot be loaded              
    onError={onError}               
    style={styles.backgroundVideo}
   />
 )
}

// Later on in your styles..
var styles = StyleSheet.create({
  backgroundVideo: {
    position: 'absolute',
    top: 0,
    left: 0,
    bottom: 0,
    right: 0,
  },
});

Roadmap

You can follow our work on the library at Roadmap.

Community support

We have an discord server where you can ask questions and get help. Join the discord server

Enterprise Support

📱 react-native-video is provided as it is. For enterprise support or other business inquiries, please contact us 🤝. We can help you with the integration, customization and maintenance. We are providing both free and commercial support for this project. let's build something awesome together! 🚀

<picture> <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/baners/twg-dark.png" /> <source media="(prefers-color-scheme: light)" srcset="./docs/assets/baners/twg-light.png" /> TheWidlarzGroup </picture>

changelog

6.12.0 (2025-04-06)

Bug Fixes

  • add extra checks to determine if a file is local (#4503) (a849cc1)
  • ios: don't try to modify react view after unmount (#4474) (229a576)

Features

  • android: add asset management functions to plugin (#4494) (697afd5)
  • android: initial bitrate (#4480) (41ddc5c)
  • ios: allow to disable audio sessions management (#4492) (8836362)
  • ios: set playback speed controls to initial playback rate (#4495) (d2e5d9c)

6.11.0 (2025-03-16)

Bug Fixes

  • android: call startForeground() immediately to prevent ForegroundServiceDidNotStartInTimeException (#4453) (b510374)
  • android: fix bugs related Android PIP listeners (#4441) (82f5f3d)
  • android: prevent ratio calculations before loading video (#4442) (235c281)
  • ios: invalid metadata handling (#4422) (bc533e5)
  • tvOS: handle allowsPictureInPicturePlayback for tvOS (#4448) (057c287)
  • windows: event name not matches with SPEC (#4455) (fa20223)

Features

  • enhance react-native-video plugins [Plugins API Breaking] (#4366) (6e6f915)
  • windows: add topSeek parms mentioned in docs (#4456) (d902c1b)

6.10.2 (2025-02-22)

Bug Fixes

  • android: fix gradle exception text related to AndroidX version (#4420) (6697cbf)
  • tvOS: fix tvos compile error for rotation handler (#4417) (04eec42)

6.10.1 (2025-02-15)

Bug Fixes

  • android: check androidX version at early build process before really launching build (#4388) (638f454)
  • android: check for valid width and height on video format data (#4394) (ad52668)
  • android: remove transparent black overlay on android default controls (#4392) (74b1d5b)
  • infra: kotlin linter github action (#4408) (2905b61)
  • ios: fix constraints when controls are enabled and video is inside a ScrollView (#4383) (a8ca97f)
  • ios: the video has no audio by default (#4409) (c8b800a), closes #4400
  • sample: remove duplicate code in sample (#4391) (faac5ad)

6.10.0 (2025-01-22)

Bug Fixes

Features

6.9.1 (2025-01-10)

Bug Fixes

  • avoid memory leak on iOS (#4355) (424f4ee)
  • NPE in setEnterPictureInPictureOnLeave for unsupported Android versions (#4362) (3924b5e)

6.9.0 (2025-01-04)

Bug Fixes

  • android: disable caching on local asset files (#4304) (63c592f)
  • docs: bump next.js version & fix meta warnings (#4327) (7b4bd9a)
  • hiding poster (#4308) (621a802)
  • ios: _paused is updated when video playback pause (#4320) (3da4f1c)
  • ios: disables subtitles for none and empty track types (#4319) (1033c9d)

Features

  • implement enterPictureInPictureOnLeave prop for both platform (Android, iOS) (#3385) (69a7bc2)

6.8.2 (2024-11-25)

Bug Fixes

  • playback restart without bufferingConfig (#4305) (f37dc9e)

6.8.1 (2024-11-24)

Bug Fixes

  • ios: handle async player access in text track selection (#4293) (daaac97)

6.8.0 (2024-11-17)

Bug Fixes

6.7.0 (2024-10-17)

Bug Fixes

  • android: sideloaded subtitles (#4232) (352dfbb)
  • ensure aspect ratio from video is handled in a coherent way (#4219) (a8d5841)
  • iOS: pause video on end reached & don't remove listeners (#4218) (2c19a47)
  • remove warning and refactor & fix ad workflow (#4235) (7501880)

Features

  • add setSource API function fix ads playback (#4185) (9a3fcda)
  • android: add settings button to control video playback speed (#4211) (d1883a7)
  • exoplayerview: Migrate ExoPlayerView to kotlin (#4038) (78f4f04)

6.6.4 (2024-10-03)

Features

  • android: add live video label configuration (#4190) (149924f)

6.6.3 (2024-09-29)

Bug Fixes

Features

  • android: allow to hide specific controls (#4183) (279cc0e)

6.6.2 (2024-09-20)

Features

6.6.1 (2024-09-18)

Bug Fixes

  • ios: fix side loaded text track management (#4180) (7d43d5d)

6.6.0 (2024-09-18)

Bug Fixes

  • android: ensure maxbitrate & selectedVideoTrack interact correctly (#4155) (7f6b500)
  • android: ensure pause is well tken in account after onEnd (#4147) (b2fd8d6)
  • expo-plugin: add check for existing service in AndroidManifest for notification controls (#4172) (0538b3b)
  • ios: ensure onBandwidthUpdate is reported only when value change (#4149) (809a730)
  • ios: losing subtitle selection on foreground (#3707) (bee4123)
  • JS: improve loader api to allow function call instead of component (#4171) (835186a)
  • refactor side loaded text tracks management (#4158) (84a27f3)
  • sample: remove warning on ios with NavigationBar (#4148) (e18769a)
  • visionOS: remove unsupported apis (#4154) (2c1fc96)

Features

  • android: upgrade dependencies / media3 1.4.1 / androidxCore to 1.13.1 / androidxActivity 1.8.2 (#4173) (e57c7bd)

6.5.0 (2024-09-04)

Bug Fixes

  • android: show the status bar and navigation bar after exiting full-screen mode (#4112) (8b8ebe9)
  • android: add subtitleStyle.subtitlesFollowVideo prop to control subtitles positionning (#4133) (2fa6c43)
  • android: hide surfaceView for loading time when shutter is hidden (#4060) (65faba3)
  • expo-plugin: adding bg mode if none exist yet (#4126) (451806c)
  • ios: Add handler for Earpods play/pause command (#4116) (9c38d9f)
  • ios: build fail due to an unwrapped value (#4101) (0a1085c)
  • ios: ensure behavior is correct with empty text track list (#4123) (3a32d67)
  • ios: ensure we don't disable tracks when not necessary (causes black screen) (#4130) (89df9d6)
  • ios: fix onBandwidth update event (old ios api is deprecated and doens't work) (#4140) (d6bae3c)
  • sample: update dependencies to fix local asset playback (#4121) (7a2b401)
  • set does not have find method (#4110) (7db7024)
  • tvos: fix build (and update sample) (#4134) (688d98d)
  • VisionOS: do not access to isExternalPlaybackActive on VisionOS (#4109) (0576eac)

Features

  • add ads localize (#4113) (703ed43)
  • android: Support Common Media Client Data (CMCD) (#4034) (ca795f2)
  • android: support hiding Exoplayer video duration on android (#4090) (41e2bed)
  • Correct isBehindLiveWindow Error Handling (#4143) (22c21ad)

6.4.5 (2024-08-17)

Bug Fixes

  • android: resolve a release issue with DefaultDashChunkSource (#4097) (7e222e8)

  • refactor(android): migrate DefaultDashChunkSource to Kotlin (#4078) (b7d1cabf)

  • fix(ios): remove resume logic in notification seek closure (#4068) (c6ae17e4)
  • chore(doc): update document (props & method) (#4072) (cd41a1b2)
  • fix(android): build warnings (#4058) (899bb822)
  • infra: update feature request form (#4065) (6c03d0a7)
  • fix(ios): override source metadata with custom metadata (#4050) (38aa2b05)
  • fix(android): return the value as a float for the getCurrentPosition function (#4054) (af0302b1)
  • refactor(android): migrate ReactExoplayerViewManager to Kotlin (#4011) (74c6dd62)
  • fix(android): viewType is ignored when its value is ViewType.TEXTURE (#4031) (22cfd6ce)
  • fix(ios): metadata update race (#4033) (08a57a3b)
  • fix(ios): updated getLicense call to work with new syntax, and fixed spelling error (#4014) (#4042) (2348c5e4)

6.4.3 (2024-07-24)

Bug Fixes

Features

  • add ability to define poster props as Image type and render poster as custom component (#3972) (adbd06e)
  • android: add error handling for Kotlin version (#4018) (6189080)
  • android: set originalFitsSystemWindows on fullscreen open (#4013) (2f70c02)

6.4.2 (2024-07-15)

Bug Fixes

  • android: exit fullscreen mode after finishing video playback (#3978) (4b8d09e)
  • android: fix android notification controller order (#4002) (05623c9)
  • android: fix onVideoLoad event field key (#4001) (f82268b)
  • android: handle aspect ratio for rotated videos (#4000) (0a55ace)
  • android: resolve compatibility issue (5cd5e5e)
  • example/basic: select resizeMode (#3989) (39cf477)
  • ts: make multiDrm prop optional type (#3999) (79c3076)

6.4.1 (2024-07-12)

Bug Fixes

  • expo plugin export (#3992) (de8ade0)

  • fix(ios): remove pip check for other platforms (#3991) (40a72825)

  • feat: add isSeeking to onPlaybackStateChanged (#3899) (111a5d21)
  • chore(android): migrate DataSourceUtil to Kotlin (#3984) (b25e43ee)
  • chore(android): migrate AspectRatioFrameLayout to Kotlin (#3985) (452e42f1)
  • refactor: move view type and drm in source (#3867) (66dcf32b)
  • feat: add expo plugins (#3933) (08f6caa6)
  • docs: update deprecated tool (#3982) (25c74e05)
  • chore(android): migrate DefaultReactExoplayerConfig to Kotlin (#3983) (1728373d)
  • fix(ios): don't pause playback when entering background (#3973) (ccffcfd7)
  • chore(example/basic): refactor state variable (#3949) (a3ecc010)
  • feat(android): Bump default media3 version from v1.1.1 to v1.3.1 (#3977) :warning: need targetSdkVersion 34 (7562669f)
  • feat: modified Fabric example android build.gradle for resolving build issue (#3976) (1d6fb297)
  • chore: upgrade react-native & expo version in the basic example app (#3964) (01a00b12)
  • refactor(android): migrate VideoEventEmitter to Kotlin (#3962) (3c9b1b57)
  • fix(ios): fix fullscreen view controller ANR (#3952) (7def3ac3)
  • chore(example/fabric): bump up fabric example android deps (#3957) (de6e7196)
  • refactor(ios): refactor NowPlayingInfoCenerManager.swift (#3968) (76c63291)
  • fix(android): build issue on the latest react-native version (#3963) (530686ca)
  • feat(fabric): updated ios podspec for implementing new architecture (#3961) (df29c231)
  • fix(android): fix wrong module name (#3959) (3f11894c)
  • refactor(android): migrate ReactVideoPackage to Kotlin (#3955) (702a0d9d)
  • refactor(android): migrate VideoDecoderPropertiesModule to Kotlin (#3954) (99585987)
  • feat: bump up fabric example react-native iOS (#3951) (e5a2ee3b)
  • fix(android): added setAllowChunklessPreparation to HlsMediaSource.Factory to allow build success on projects without HLS support (#3948) (#3950) (322d7e99)
  • refactor: basic example from class component to functional component (#3934) (d4f16486)
  • chore(android): rework view type (#3940) (b431d09e)
  • chore: update homepage field in package.json (#3945) (6e133768)
  • feat(android): allow building exoplayer from source (#3932) (a7d834a8)
  • feat: add plugins management (#3909) (91d27a60)
  • Chore(docs): fix typo (#3938) (3cfb96ad)

6.3.0 (2024-06-22)

Bug Fixes

  • android: allow chunk less preparation (#3913) (264b57a)
  • android: avoid crash multiplayer with notification (#3931) (104ee70)
  • android: show controls in notification on older androids (#3886) (098a754)
  • android: use UI thread to pause when lost audio focus (#3916) (856b1dd)
  • ios: crash on ads after leaving the app (#3911) (3d6bc94)
  • ios: missing notification controls when enabled from start (#3898) (2d793db)
  • JS: safety check on resolve uri (#3915) (84bb910)
  • typescript: type checks on selectedTextTrack, selectedAudioTrack, selectedVideoTrack (#3910) (dc2a2ab)

Features

  • android: add onControlsVisiblityChange (#3925) (c2ce372)
  • ios: add live key to now playing dict to decorate when livestream playing (#3922) (91751ab)

6.2.0 (2024-06-07)

Bug Fixes

  • android: allow notification tap to foreground app (#3831) (5c29b48)
  • android: android cache header (#3832) (c2a1424)
  • android: fix null pointer exception at playback start with item metadata (#3879) (c2cd752)
  • android: optimize lag on old android (#3860) (c2ce66e)
  • android: refactor source, fix random DRM issue and crop start on local asset (#3835) (bdf3e55)
  • android: video resolution orientation android (#3862) (b698b18)
  • ensure progress is sent before onEnd callback (#3872) (7133c96)
  • ensure view drop stop playback startup (#3875) (ff1e24a)
  • ios: don't crash app if view wasn't found (#3841) (cd28d37)
  • ios: fix notification controls enabled by default (#3861) (5c6dfb2)
  • ios: fix playback status with lifecycle (#3819) (1b51c15)
  • ios: Implicit use of 'self' in closure - use 'self.' to make capture semantics explicit (#3764) (#3881) (ac0a9c3), closes #3875

Features

  • add getCurrentPosition to component's ref (#3824) (c7f4d7b)
  • android: allow chunckless preparation (#3882) (d4a8c24)
  • android: Change subtitleLayout from child to sibling of layout (#3830) (c2cc917)
  • android: handle increment forward and rewind buttons (#3818) (5059e7a)

6.1.2 (2024-05-23)

Bug Fixes

  • android: revert previous fix not compatible with old java version (#3828) (69bde44)

6.1.1 (2024-05-22)

Bug Fixes

Features

  • android: change default user agent value (#3813) (089dc7e)

6.1.0 (2024-05-22)

Bug Fixes

  • android: avoid blinking on video track change (#3782) (7b1e129)
  • android: implement live configuration management (#3792) (e16730d)
  • android: implement seek backward in notification service (#3808) (94b3da3)
  • android: playback doesn't work with 0 startPositionMs (#3784) (66e0ba5)
  • android: random android crash (#3777) (d4c9be2)
  • android: remove remaining ad view when zapping (#3786) (324b461)
  • android: source metadata compare function (#3775) (6455380)
  • tvos: fix tvOS build and sample (#3785) (cd42dd7)

Features

  • add setVolume function to component's ref (#3794) (3cd7ab6)
  • android: add possibility to hide seekBar (#3789) (95e6140)

6.0.0 (2024-05-14)

Bug Fixes

6.0.0-rc.2 (2024-05-13)

Bug Fixes

Features

  • android: make buffering strategy dynamic (#3756) (e420418)

Reverts

  • Revert "fix(android): video flickering add playback start (#3746)" (#3748) (d25629b), closes #3746 #3748

6.0.0-rc.1 (2024-05-08)

Bug Fixes

  • android: prevent changing video track when video load (#3683) (6f61d7f)
  • android: video flickering add playback start (#3746) (b1cd52b)
  • avoid crash when setting index to 0 to tracks selection (#3721) (518a9a9)
  • ios: destroy adsManager when player detach from super view (#3716) (#3722) (e96c173)
  • ios: ensure duration available when playing live (#3710) (d56b251)
  • ios: ensure orientation is correct on iOS (#3719) (1a8295c)
  • ios: fix text track selection by index (#3728) (51e22ab)

Features

Performance Improvements

  • ensure we do not provide callback to native if no callback provided from app (#3735) (c59d00a)
  • ios: add early returns (#3741) (1d235a1)

6.0.0-rc.0 (2024-04-22)

Bug Fixes

  • android: catch errors in performOnPlayerView (#3685) (3e35326)
  • android: fixed bug where video would not be visible after remount and change of drm source (#3668) (1af12f9)
  • android: seek callback with controls (#3694) (c730306)
  • android: set title for external subtitles (#3676) (336b9f0)
  • ensure poster works as expected and add it to the sample (#3643) (d694139)
  • ensure tracks are available in sample (#3660) (4c7719a)
  • ios: add workaround for TouchableWithoutFeedback (#3688) (b5ccc48)
  • ios: apply PictureInPicture state on start (#3655) (07f71c2)
  • ios: call PictureInPicture callbacks with native controls (#3603) (051e884), closes #3602 #3602
  • ios: do not save pause state before seeking (#3650) (e992243)
  • ios: fix sideloading external subtitles (#3690) (efa1c52)
  • ios: update onPlaybackStateChanged implementation (#3687) (042e13c)
  • ios: workaround for rate change (#3657) (e26afac)
  • prevents crash from occurring when using the selected video track with resolution type (#3664) (e82f9dc)
  • ts: onPlaybackRateChangeData was not correctly typed (#3651) (2a858df)

Features

  • android: allow to disable selected functionalities (#3681) (64e3191)

6.0.0-beta.8 (2024-04-03)

Bug Fixes

6.0.0-beta.7 (2024-03-30)

Bug Fixes

  • android: ensure rate is never set to 0 (#3593) (3d7444a)
  • android: improve and backBufferDurationMs. mainly let exoplayer manage the prop (#3619) (f10511d)
  • android: keep screen on on fullscreen (#3563) (bfb76e6)
  • android: track selection parameter has change in last release. (#3594) (d5c8b51)
  • fix getLicense function's type definition (#3606) (89ae843)
  • inject onGetLicense prop properly for detect user defined or not (#3608) (24c1aab)
  • iOS: fix iOS DRM header parser (#3609) (c9a75f3)
  • ios: fix PiP callback (#3601) (bb9e7eb)
  • ios: fix regression when playing source starting with ph:// (#3630) (75d3707)
  • ios: fix startPosition, cropStart and cropEnd to handle float values correctly (#3589) (36bd2e2)
  • iOS: throw when content id defined with empty string (#3612) (0983580)
  • remove setNativeProps usage (#3605) (0312afc)

BREAKING CHANGES

  • android: move backBufferDurationMs from root props to bufferConfig

6.0.0-beta.6 (2024-03-18)

Bug Fixes

Features

  • android: add subtitle event (#3566) (6184c10)
  • implement opacity to control visibility of subtitles (#3583) (f4cce2e)
  • ios: Add ios support for accessing WebVTT Subtitle Content (#3541) (253ffb5)
  • move require (local files) to source.uri (#3535) (41ac781)

6.0.0-beta.5 (2024-02-02)

Bug Fixes

Features

  • implement onAudioTracks and onTextTracks on ios (#3503) (6a49cba)

Reverts

  • Revert "fix: remove pausePlayback when audio focus loss event (#3496)" (#3504) (aec7db6), closes #3496 #3504

6.0.0-beta.4 (2024-01-15)

Bug Fixes

  • add missing audioOutput prop (#3450) (f20d68b)
  • android: support opacity properly (#3464) (11e5b75)
  • ios: currentPlaybackTime in ms and not seconds (#3472) (3f63c16)
  • ios: remove extra dismissFullscreenPlayer declaration (#3474) (045f5fa)

Features

  • add visionOS support (#3425) (cf3ebb7)
  • ios: migrate from deprecated methods (#3444) (5aaa53d)
  • ios: update the way to get keyWindow (#3448) (f35727f)
  • ios: update timed metadata handler (#3449) (481cc71)

6.0.0-beta.3 (2023-12-24)

Bug Fixes

  • android: default UA (#3429) (dd7bb54)
  • ensure save doesn't crash on android (#3415) (22a2655)
  • ios: revert ios url encoding as this breaks encoded urls (#3440) (0723481)
  • ReactVideoProps: add accessibility & testID in typing (#3434) (d986b7b)

6.0.0-beta.2 (2023-12-08)

Bug Fixes

  • add allowsExternalPlayback missing on ReactVideoProps (#3398) (72679a7)
  • android: add explicitly dependancy to androidx.activity (#3410) (908e30f)
  • android: ensure adTagUrl can be reset (#3408) (f9bcaac)
  • revert drm type definition change (#3409) (fbb5654)

6.0.0-beta.1 (2023-12-02)

Bug Fixes

  • android: ads build and enable ads in android sample (#3376) (fe89122)
  • android: fix leak caused by removing lifecycle listener too early (#3380) (0c0f317)
  • android: revert media3 update, back to 1.1.1 (#3369) (5beef38)
  • ios: check for ios url query encoding (#3384) (de4159f)
  • ios: fix pip(when player doesn't fill screen) (#3363) (11f6201)

Features

  • ad: add data to onReceiveAdEvent (#3378) (d05231d)
  • add AdEvent enum to have an exhaustive list of all possible AdEvent values (#3374) (b3744f9)
  • add onAdError event listener (#3381) (596c02d)
  • android: bump media3 version from v1.1.1 to v1.2.0 (#3362) (17dbf6e)
  • implement startPosition (#3355) (2648502)

6.0.0-beta.1 (WIP)

  • android: fix leak caused by removing lifecycle listener too early (#3380)

6.0.0-beta.0 (2023-11-18)

Bug Fixes

  • example: remove dependency loop (#3353) (211c3c7)
  • ios: change isPlaybackLikelyToKeepUp check (#3357) (1ba93f9)
  • ios: fix cache playerItemPrepareText type (#3358) (0e23952)
  • ios: fix external text tracks crashes with m3u8 files (#3330) (782e7e0)
  • update onError definition to match implementation (#3349) (fdbd6a6)

Features

  • android: replace deprecated ExoPlayer2 with AndroidX media3 (#3337) (f2e80e9)

6.0.0-alpha.11 (2023-11-15)

Bug Fixes

6.0.0-alpha.10 (2023-11-13)

Bug Fixes

  • fixes where Android's muted prop behavior differs from iOS (#3339) (8fbdc28)
  • ios: fix wrong fullscreen method definition (#3338) (7f49b56)
  • ios: player is frozen after re-focusing on the app (#3326) (722ae34)

Features

Changelog

Next

  • Android, iOS: add onVolumeChange event #3322
  • iOS: Externally loaded text tracks not loading properly #3461

Version 6.0.0-alpha.9

  • All: add built-in typescript support #3266
  • All: update documentation generation #3296
  • BREAKING CHANGE❗️Android: update isCodecSupported to return enum #3254
  • Android: use explicit not-exported flag for AudioBecomingNoisyReceiver #3327
  • Android: remove kotlin-android-extensions #3299
  • Android: ensure audio volume is changed in UI thread 3292
  • Android: multiple internal refactor and switch to kotlin
  • Android: refactor log management and add an option to increase log verbosity #3277
  • iOS: Fix audio session category when not using the audioOutput prop
  • iOS: implement onPlaybackStateChanged callback #3307
  • iOS: remove false calls at onPlaybackRateChange #3306
  • iOS: audio does not work with headphones #3284
  • iOS: Resuming video ad after closing the in-app browser on iOS #3275
  • iOS, Android: expose playback functions to ref #3245
  • tvOS: fix build: #3276
  • Windows: fix build error from over-specified SDK version #3246
  • Windows: fix onError not being raised #3247

Version 6.0.0-alpha.8

  • All: Playing audio over earpiece #2887
  • All: Prepare for fabric #3175 #
  • iOS: Fix Pip #3221
  • iOS: Fix regression in presentFullscreenPlayer & dismissFullscreenPlayer #3230
  • tvOS: Fix build #3207
  • tvOS: Add sample #3208
  • tvOS: Allow chapter customization #3216
  • doc: Fix internal links #3229

Version 6.0.0-alpha.7

Version 6.0.0-alpha.6

  • Feature: Video range support #3030
  • iOS: remove undocumented currentTime property #3064
  • iOS: make sure that the audio in ads is muted when the player is muted. #3068
  • iOS: make IMA build optionnal

Version 6.0.0-alpha.5

  • iOS: ensure controls are not displayed when disabled by user #3017
  • iOS: app crashes on call to presentFullScreenPlayer #2808
  • Android: Fix publicated progress handler causing duplicated progress event #2972
  • Android: Fix audio/Subtitle tracks selection #2979
  • Android: add new events on tracks changed to be notified of audio/text/video Tracks update during playback 2806
  • Feature: Add VAST support for AVOD #2923
  • Sample: Upgrade react-native version of basic sample #2960

Version 6.0.0-alpha.4

  • ensure src is always provided to native player even if it is invalid #2857
  • Sample: Add react-native-video controls support #2852
  • Android: Switch Google's maven repository to default google() #2860
  • Android: Implement focusable prop so the video view can toggle whether it is focusable for non-touch devices #2819
  • Android: fix linter warning [#2891] (https://github.com/react-native-video/react-native-video/pull/2891)
  • Fix iOS RCTSwiftLog naming collision #2868
  • Added "homepage" to package.json #2882
  • Fix regression when fullscreen prop is used combined with controls #2911
  • Fix: memory leak issue on iOS #2907
  • Fix setting text tracks before player is initialized on iOS #2935

Version 6.0.0-alpha.3

Version 6.0.0-alpha.2

Version 6.0.0-alpha.1

  • Remove Android MediaPlayer support #2724 WARNING: when switching from older version to V6, you need to remove all refrerences of android-exoplayer. This android-exoplayer folder has been renamed to android. Exoplayer is now the only player implementation supported.

  • Replace Image.propTypes with ImagePropTypes. #2718

  • Fix iOS build caused by type mismatch #2720
  • ERROR TypeError: undefined is not an object (evaluating '_reactNative.Image.propTypes.resizeMode') #2714
  • Fix video endless loop when repeat set to false or not specified. #2329

Version 6.0.0-alpha.0

  • Support disabling buffering #2689
  • Fix AudioFocus bug that could cause the player to stop responding to play/pause in some instances. #2689
  • Fix player crashing when it is being cleared. #2689
  • Add support for customising back buffer duration and handle network errors gracefully to prevent releasing the player when network is lost. #2689
  • Allow player to be init before source is provided, and later update once a source is provided. #2689
  • Adds handling for providing a empty source in order to stop playback and clear out any existing content #2689
  • Add support for detecting if format is supported and exclude unsupported resolutions from auto quality selection and video track info in RN. #2689
  • Improve error handling #2689
  • Add support for L1 to L3 Widevine fallback if playback fails initially. #2689
  • Reduce buffer size based on available heap #2689
  • Force garbage collection when there is no available memory #2689
  • Improve memory usage #2689
  • Support disabling screen recording #2689
  • Improved error capturing #2689
  • Fix DRM init crashes #2689
  • Improve progress reporting #2689
  • Fix progress loss when network connection is regained #2689
  • Add Google's maven repository to avoid build error #2552
  • Fix iOS 15.4 HLS playback race condition #2633
  • Fix app crash from NPE in Exoplayer error handler #2575
  • Fix default closed captioning behavior for Android ExoPlayer #2181
  • Disable pipController init if pictureInPicture is false #2645
  • Make sure modifiers are applied before playing #2395
  • Better support newer versions of RNW (64 and newer) #2535
  • Fix nil string uri parameter error #695
  • (Breaking) Bump shaka-player to 3.3.2 #2587
  • Improve basic player example on android #2662
  • Ensure we always use hideShutterView before showing the shutterView on Android #2609
  • Convert iOS implementation to Swift #2527
  • Add iOS support for decoding offline sources #2527
  • Update basic example applications (React Native 0.63.4) #2527
  • Upgrade ExoPlayer to 2.17.1 #2498
  • Fix volume reset issue in exoPlayer #2371
  • Change WindowsTargetPlatformVersion to 10.0 #2706
  • Fixed Android seeking bug #2712
  • Fixed onReadyForDisplay not being called #2721
  • Fix type of _eventDispatcher on iOS target to match bridge.eventDispatcher() #2720

Version 5.2.0

Version 5.1.0-alpha9

  • Add ARM64 support for windows #2137
  • Fix deprecated API bug for windows #2119
  • Added rate property and autolinking support for windows #2206

Version 5.1.0-alpha8

  • Fixing ID3 Frame Error When Receiving EventMessage in TimedMetadata #2116

Version 5.1.0-alpha7

  • Basic support for DRM on iOS and Android #1445

Version 5.1.0-alpha6

  • Fix iOS bug which would break size of views when video is displayed with controls on a non full-screen React view. #1931
  • Fix video dimensions being undefined when playing HLS in ios. #1992
  • Add support for audio mix with other apps for iOS. #1978
  • Properly implement pending seek for iOS. #1994
  • Added preferredForwardBufferDuration (iOS) - the duration the player should buffer media from the network ahead of the playhead to guard against playback disruption. (#1944)
  • Added currentPlaybackTime (Android ExoPlayer, iOS) - when playing an HLS live stream with a EXT-X-PROGRAM-DATE-TIME tag configured, then this property will contain the epoch value in msec. (#1944)
  • Added trackId (Android ExoPlayer) - Configure an identifier for the video stream to link the playback context to the events emitted. (#1944)
  • Added preventsDisplaySleepDuringVideoPlayback (#2019)
  • Reverted the JS fullscreening for Android. #2013
  • Set iOS request headers without needing to edit RCTVideo.m. #2014
  • Fix exoplayer aspect ratio update on source changes #2053

Version 5.1.0-alpha5

  • Add support for react-native Windows Cpp/WinRT #1893

Version 5.1.0-alpha4

  • Fix android play/pause bug related to full-screen mode #1916

Version 5.1.0-alpha3

  • Improve Android Audio Focus #1897

Version 5.1.0-alpha2

  • Added support for full-screen functionality in Android Exoplayer #1730

Version 5.1.0-alpha1

  • Fixed Exoplayer doesn't work with mute=true (Android). #1696
  • Added support for automaticallyWaitsToMinimizeStalling property (iOS) #1723
  • Bump Exoplayer to 2.10.4, remove deprecated usages of Exoplayer methods (Android). #1753
  • Preserve Exoplayer BandwidthMeter instance across video plays, this should noticeably improve streaming bandwidth detection (Android).

Version 5.0.2

  • Fix crash when RCTVideo's superclass doesn't observe the keyPath 'frame' (iOS) #1720

Version 5.0.1

  • Fix AndroidX Support bad merge

Version 5.0.0 [Deprecated]

  • AndroidX Support

Version 4.4.4

  • Handle racing conditions when props are settled on Exoplayer

Version 4.4.3

  • Fix mute/unmute when controls are present (iOS) #1654
  • Fix Android videos being able to play with background music/audio from other apps.
  • Fixed memory leak on iOS when using controls #1647
  • (Android) Update gradle and target SDK #1629
  • Fix iOS stressed mount/unmount crash #1646

Version 4.4.2

  • Change compileOnly to implementation on gradle (for newer gradle versions and react-native 0.59 support) #1592
  • Replaced RCTBubblingEventBlock events by RCTDirectEventBlock to avoid event name collisions #1625
  • Added onPlaybackRateChange to README #1578
  • Added onReadyForDisplay to README #1627
  • Improved handling of poster image. Fixes bug with displaying video and poster simultaneously. #1627
  • Fix background audio stopping on iOS when using controls #1614

Version 4.4.1

  • Fix tvOS picture-in-picture compilation regression #1518
  • fullscreen rotation issues with iOS built-in controls #1441
  • Fix player freeze when playing audio files on ExoPlayer #1529

Version 4.4.0

  • Fix runtime warning by replacing UIManager.RCTVideo with UIManager.getViewManagerConfig('RCTVideo') (and ensuring backwards compat) #1487
  • Fix loading package resolved videos when using video-caching #1438
  • Fix "message sent to deallocated instance" crash on ios #1482
  • Display a warning when source is empty #1478
  • Don't crash on iOS for an empty source #1246
  • Recover from from transient internet failures when loading on ExoPlayer #1448
  • Add controls support for ExoPlayer #1414
  • Fix check for text tracks when iOS caching enabled #1387
  • Add support for Picture in Picture on iOS #1325
  • Fix UIManager undefined variable #1488

Version 4.3.0

  • Fix iOS video not displaying after switching source #1395
  • Add the filterEnabled flag, fixes iOS video start time regression #1384
  • Fix text not appearing in release builds of Android apps #1373
  • Update to ExoPlayer 2.9.3 #1406
  • Add video track selection & onBandwidthUpdate #1199
  • Recovery from transient internet failures and props to configure the custom retry count #1448

Version 4.2.0

  • Don't initialize filters on iOS unless a filter is set. This was causing a startup performance regression #1360
  • Support setting the maxBitRate #1310
  • Fix useTextureView not defaulting to true #1383
  • Fix crash on MediaPlayer w/ Android 4.4 & avoid memory leak #1328

Version 4.1.0

  • Generate onSeek on Android ExoPlayer & MediaPlayer after seek completes #1351
  • Remove unneeded onVideoSaved event #1350
  • Disable AirPlay if sidecar text tracks are enabled #1304
  • Add possibility to remove black screen while video is loading in Exoplayer #1355

Version 4.0.1

  • Add missing files to package.json #1342

Version 4.0.0

  • Partial support for timed metadata on Android MediaPlayer #707
  • Support video caching for iOS #955
  • Video caching cleanups #1172
  • Add ipod-library support #926
  • Fix crash on ExoPlayer when there are no audio tracks #1233
  • Reduce package size #1231
  • Remove unnecessary import in TextTrackType #1229
  • Prevent flash between poster and video #1167
  • Support react-native-dom #1253
  • Update to ExoPlayer 2.8.2. Android SDK 26 now required #1170
  • Update to ExoPlayer 2.8.4 #1266
  • Add fullscreenOrientation option for iOS #1215
  • Update to ExoPlayer 2.9.0 #1285
  • Switch useTextureView to default to true #1286
  • Re-add fullscreenAutorotate prop #1303
  • Make seek throw a useful error for NaN values #1283
  • Video Filters and Save Video #1306
  • Fix: volume should not change on onAudioFocusChange event #1327
  • Update ExoPlayer to 2.9.1 and OkHTTP to 3.12.0 #1338

Version 3.2.0

  • Basic fullscreen support for Android MediaPlayer #1138
  • Simplify default Android SDK code #1145 #1146
  • Various iOS sideloaded text track fixes #1157
  • Fix #1150 where assets with bundled assets don't work on iOS in release mode #1162
  • Support configuring the buffer on Android ExoPlayer #1160
  • Prevent sleep from sleeping while videos are playing on Android MediaPlayer #1117
  • Update NewtonSoft JSON to match react-native-windows version #1169

Version 3.1.0

  • Support sidecar text tracks on iOS #1109
  • Support onAudioBecomingNoisy on iOS #1131

Version 3.0

  • Inherit Android buildtools and SDK version from the root project #1081
  • Automatically play on ExoPlayer when the paused prop is not set #1083
  • Preserve Android MediaPlayer paused prop when backgrounding #1082
  • Support specifying headers on ExoPlayer as part of the source #805
  • Prevent iOS onLoad event during seeking #1088
  • ExoPlayer playableDuration incorrect #1089

Version 2.3.1

  • Revert PR to inherit Android SDK versions from root project. Re-add in 3.0 #1080

Version 2.3.0

  • Support allowsExternalPlayback on iOS #1057
  • Inherit Android buildtools and SDK version from the root project #999
  • Fix bug that caused ExoPlayer to start paused if playInBackground was set #833
  • Fix crash if clearing an observer on iOS that was already cleared #1075
  • Add audioOnly prop for music files #1039
  • Support seeking with more exact tolerance on iOS #1076

Version 2.2.0

  • Text track selection support for iOS & ExoPlayer #1049
  • Support outputting to a TextureView on Android ExoPlayer #1058
  • Support changing the left/right balance on Android MediaPlayer #1051
  • Prevent multiple onEnd notifications on iOS #832
  • Fix doing a partial swipe on iOS causing a black screen #1048
  • Fix crash when switching to a new source on iOS #974
  • Add cookie support for ExoPlayer #922
  • Remove ExoPlayer onMetadata that wasn't being used #1040
  • Fix bug where setting the progress interval on iOS didn't work #800
  • Support setting the poster resize mode #595