The React component allows its children to enter the browser's fullscreen viewing mode using the Fullscreen HTML5.
- Compatible with both JavaScript and TypeScript
- Compatible with both Desktop and Mobile browsers
- Compatible with all browsers
- No dependency
- Easy to use
react-fullscreen-html is available on npm. It can be installed with the following command:
npm install react-fullscreen-html --save
react-fullscreen-html is available on yarn as well. It can be installed with the following command:
yarn add react-fullscreen-html
import React from 'react';
import { Fullscreen, useFullscreen } from "react-fullscreen-html";
function App() {
  const screen = useFullscreen();
  return (
    <div>
      <button onClick={screen.enter}>
        Enter fullscreen
      </button>
      <Fullscreen handle={screen}>
        Any fullscreen content here
      </Fullscreen>
    </div>
  );
}
export default App;import React, {useCallback} from 'react';
import { Fullscreen, useFullscreen } from "react-fullscreen-html";
function App() {
  const screen1 = useFullscreen();
  const screen2 = useFullscreen();
  const reportChange = useCallback((state, handle) => {
    if (handle === screen1) {
      console.log('Screen 1 went to', state, handle);
    }
    if (handle === screen2) {
      console.log('Screen 2 went to', state, handle);
    }
  }, [screen1, screen2]);
  
  return (
    <div>
      <button onClick={screen1.enter}>
        First
      </button>
      <button onClick={screen2.enter}>
        Second
      </button>
      <Fullscreen handle={screen1} onChange={reportChange}>
        <div className="full-screenable-node" style={{background: "red"}}>
          First
          <button onClick={screen1.exit}>
            Exit
          </button>
        </div>
      </Fullscreen>
      <Fullscreen handle={screen2} onChange={reportChange}>
        <div className="full-screenable-node" style={{background: "green"}}>
          Second
          <button onClick={screen2.exit}>
            Exit
          </button>
        </div>
      </Fullscreen>
    </div>
  );
};
export default App;| Returned | Type | Description | 
|---|---|---|
| active | boolean | true if this element is currently full screen. | 
| enter | () => void | Requests this element to go full screen. | 
| exit | >() => void | Requests this element to exit full screen. | 
| Prop | Type | Require | Description | 
|---|---|---|---|
| handle | UseFullscreenProps | ✔️ | Handle that helps operate the full screen state. | 
| onChange | (state: boolean, handle: FullscreenHandle) => void | ❌ | Optional callback that gets called when this screen changes state. | 
If you think any of the react-fullscreen-html can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to watch/star this repository to revisit.
We'd love to have your helping hand on contributions to react-fullscreen-html by forking and sending a pull request!
Your contributions are heartily ♡ welcome, recognized and appreciated. (✿◠‿◠)
How to contribute:
- Open pull request with improvements
- Discuss ideas in issues
- Spread the word
- Reach out with any feedback