react-create-html-video
v1.4.4
Published
A lightweight React component for HTML5 videos with MP4/WebM support
Maintainers
Readme
React Create HTML Video
A lightweight React component that programmatically generates and plays an HTML <video> element with a clean, reusable API. This library does not rely on CSS-in-JS, with styles are intentionally kept minimal. Created with Typescript support.
📦 Installation
npm install react-create-html-video🎲 Features
- Built for modern React with support for Typescript
- A lightweight API surface that is easy to understand
- Helps render a native HTML
<video>element on the browser - Provides support for MP4 and Webm based Video displays
- No manual CSS import is required — styles are bundled with the package.
📄 API Type Signature
export type TReactCreateHTMLVideo = {
mp4: string;
webm: string;
};🤝 Peer Dependencies
"peerDependencies": {
"react": ">=18",
"react-dom": ">=18"
}🧪 How This Works
- Detects browser support using
HTMLVideoElement.canPlayType - Prefers MP4 if supported
- Falls back to WebM if MP4 is unavailable
- Disables video rendering on Internet Explorer
- Returns
nullwhen no supported format is available
🔤 Example Usage
/* node modules */
import { ReactCreateHTMLVideo } from "react-create-html-video";
/* module */
function UIComponent() {
return (
{/* make sure your parent container is positioned: relative, imagine here min-height of 100vh */}
<div className="heroSection positionRelative">
<ReactCreateHTMLVideo
mp4="/path/to/mp4/video.mp4"
webm="/path/to/webm/video.webm"
/>
</div>
)
}
/* exports */
export default UIComponent;📗 Test Coverage
PASS src/video-component/test/index.test.tsx
RCHV Test Suite:
✓ renders null when videoSource is null
✓ renders video container when videoSource is provided
✓ renders video element with correct attributes
✓ sets video src to the videoSource from useVideo hook
✓ passes correct props to useVideo hook
✓ memoizes component and does not re-render with same props
✓ renders video element inside parent container
✓ updates when videoSource changes
✓ returns null when videoSource is falsy
✓ renders only one video element-----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
index.tsx | 100 | 100 | 100 | 100 |
-----------|---------|----------|---------|---------|-------------------🎯 Note: Release(s) 1.4.x has fixed issues related to react-dedup. It was found that inspite of being a react client side component, an error related to Cannot read properties of undefined (reading 'ReactCurrentDispatcher') was coming up. You can now install this package directly. If issues still persist, please do raise a github issue along with screenshots and comments for me to work on.
📘 Contributing
Contributions, suggestions, and improvements are welcome. Feel free to open issues or pull requests.
❤️ Support
Like this project? Support it with a github star, it would mean a lot to me! Cheers and Happy Coding.
