@u-wave/react-youtube

February 12, 2026 ยท View on GitHub

YouTube player component for React.

Install - Usage - Demo - Component API - Hook API

Install

npm install @u-wave/react-youtube

Usage

Demo - Demo source code

import YouTube from '@u-wave/react-youtube';

<YouTube
  video="x2to0hs"
  autoplay
/>

<YouTube />

The <YouTube /> component renders an iframe and attaches the YouTube player to it. It supports all the same options as the useYouTube hook, plus a few to configure the iframe. If you need to do more with the iframe than this component provides, consider using the useYouTube hook directly.

Props

NameTypeDefaultDescription
idstringDOM ID for the player element.
classNamestringCSS className for the player element.
styleReactCSSPropertiesInline style for player element.
videostringnull
widthnumberstring
heightnumberstring
hoststringYouTube host to use: 'https://www.youtube.com' or 'https://www.youtube-nocookie.com'.
originstringThe YouTube API will usually default this value correctly. It is exposed for completeness.
pausedbooleanPause the video.
autoplaybooleanWhether the video should start playing automatically.
https://developers.google.com/youtube/player_parameters#autoplay
showCaptionsbooleanWhether to show captions below the video.
https://developers.google.com/youtube/player_parameters#cc_load_policy
controlsbooleanWhether to show video controls.
https://developers.google.com/youtube/player_parameters#controls
disableKeyboardbooleanIgnore keyboard controls.
https://developers.google.com/youtube/player_parameters#disablekb
allowFullscreenbooleanWhether to display the fullscreen button.
https://developers.google.com/youtube/player_parameters#fs
langstringThe player's interface language. The parameter value is an ISO 639-1 two-letter language code or a fully specified locale.
https://developers.google.com/youtube/player_parameters#hl
annotationsbooleanWhether to show annotations on top of the video.
https://developers.google.com/youtube/player_parameters#iv_load_policy
startSecondsnumberTime in seconds at which to start playing the video.
https://developers.google.com/youtube/player_parameters#start
endSecondsnumberTime in seconds at which to stop playing the video.
https://developers.google.com/youtube/player_parameters#end
playsInlinebooleanWhether to play the video inline on iOS, instead of fullscreen.
https://developers.google.com/youtube/player_parameters#playsinline
showRelatedVideosbooleanWhether to show related videos from other channels after the video is over.
When false, only related videos from the same channel as the previous video are shown.
https://developers.google.com/youtube/player_parameters#rel
volumenumberThe playback volume, as a number between 0 and 1.
mutedbooleanWhether the video's sound should be muted.
playbackRatenumberPlayback speed.
https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate
onReadyYT.PlayerEventHandlerSent when the YouTube player API has loaded.
onErrorYT.PlayerEventHandlerSent when the player triggers an error.
onCuedYT.PlayerEventHandlerSent when the video is cued and ready to play.
onBufferingYT.PlayerEventHandlerSent when the video is buffering.
onPlayingYT.PlayerEventHandlerSent when playback has been started or resumed.
onPauseYT.PlayerEventHandlerSent when playback has been paused.
onEndYT.PlayerEventHandlerSent when playback has stopped.
onStateChangeYT.PlayerEventHandler
onPlaybackRateChangeYT.PlayerEventHandler
onPlaybackQualityChangeYT.PlayerEventHandler

useYouTube(container, options)

Create a YouTube player at container. container must be a ref object.

Returns the YT.Player object, or null until the player is ready.

import { useYouTube } from '@u-wave/react-youtube';

function Player() {
  const container = useRef(null);
  const player = useYouTube(container, {
    video: 'x2to0hs',
    autoplay: true,
  });
  console.log(player?.getVideoUrl());
  return <div ref={container} />;
}

Options

NameTypeDefaultDescription
videostringnull
widthnumberstring
heightnumberstring
hoststringYouTube host to use: 'https://www.youtube.com' or 'https://www.youtube-nocookie.com'.
originstringThe YouTube API will usually default this value correctly. It is exposed for completeness.
pausedbooleanPause the video.
autoplaybooleanWhether the video should start playing automatically.
https://developers.google.com/youtube/player_parameters#autoplay
showCaptionsbooleanWhether to show captions below the video.
https://developers.google.com/youtube/player_parameters#cc_load_policy
controlsbooleanWhether to show video controls.
https://developers.google.com/youtube/player_parameters#controls
disableKeyboardbooleanIgnore keyboard controls.
https://developers.google.com/youtube/player_parameters#disablekb
allowFullscreenbooleanWhether to display the fullscreen button.
https://developers.google.com/youtube/player_parameters#fs
langstringThe player's interface language. The parameter value is an ISO 639-1 two-letter language code or a fully specified locale.
https://developers.google.com/youtube/player_parameters#hl
annotationsbooleanWhether to show annotations on top of the video.
https://developers.google.com/youtube/player_parameters#iv_load_policy
startSecondsnumberTime in seconds at which to start playing the video.
https://developers.google.com/youtube/player_parameters#start
endSecondsnumberTime in seconds at which to stop playing the video.
https://developers.google.com/youtube/player_parameters#end
playsInlinebooleanWhether to play the video inline on iOS, instead of fullscreen.
https://developers.google.com/youtube/player_parameters#playsinline
showRelatedVideosbooleanWhether to show related videos from other channels after the video is over.
When false, only related videos from the same channel as the previous video are shown.
https://developers.google.com/youtube/player_parameters#rel
volumenumberThe playback volume, as a number between 0 and 1.
mutedbooleanWhether the video's sound should be muted.
playbackRatenumberPlayback speed.
https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate
onReadyYT.PlayerEventHandlerSent when the YouTube player API has loaded.
onErrorYT.PlayerEventHandlerSent when the player triggers an error.
onCuedYT.PlayerEventHandlerSent when the video is cued and ready to play.
onBufferingYT.PlayerEventHandlerSent when the video is buffering.
onPlayingYT.PlayerEventHandlerSent when playback has been started or resumed.
onPauseYT.PlayerEventHandlerSent when playback has been paused.
onEndYT.PlayerEventHandlerSent when playback has stopped.
onStateChangeYT.PlayerEventHandler
onPlaybackRateChangeYT.PlayerEventHandler
onPlaybackQualityChangeYT.PlayerEventHandler
  • react-youtube - A widely-used YouTube component. Its API matches the YouTube iframe API more closely, and it doesn't support prop-based volume/quality/playback changes.
  • @u-wave/react-vimeo - A Vimeo component with a similar declarative API.

License

MIT