Rooks
UI & Layout

useFullscreen

Manages fullscreen mode for a DOM element, with enter/exit controls.

About

Use the Fullscreen API to present content using the entire screen.

Examples

Toggle fullscreen for the document

import { useFullscreen } from "rooks";

export default function App() {
  const { isFullscreenAvailable, isFullscreenEnabled, toggleFullscreen } =
    useFullscreen();

  if (!isFullscreenAvailable) {
    return <p>Fullscreen API is not available.</p>;
  }

  return (
    <button onClick={() => void toggleFullscreen()}>
      {isFullscreenEnabled ? "Exit fullscreen" : "Enter fullscreen"}
    </button>
  );
}

Toggle fullscreen for a specific panel and react to changes

import { useRef, useState } from "react";
import { useFullscreen } from "rooks";

export default function App() {
  const panelRef = useRef<HTMLDivElement>(null);
  const [status, setStatus] = useState("Windowed");
  const { enableFullscreen, disableFullscreen, isFullscreenEnabled } =
    useFullscreen({
      target: panelRef,
      onChange: () => {
        setStatus(document.fullscreenElement ? "Fullscreen" : "Windowed");
      },
    });

  return (
    <div>
      <div ref={panelRef} style={{ padding: 24, border: "1px solid #999" }}>
        <p>Status: {status}</p>
        <button onClick={() => void enableFullscreen()}>Open panel</button>
        <button
          onClick={() => void disableFullscreen()}
          disabled={!isFullscreenEnabled}
        >
          Close panel
        </button>
      </div>
    </div>
  );
}

Arguments

An object with the following optional properties:

Argument valueTypeDescription
options.targetReact.RefObject<Element>DOM node that should enter fullscreen
options.onChange(event: Event) => voidCalled after fullscreen state changes
options.onError(event: Event) => voidCalled after a fullscreen error
options.requestFullscreenOptionsFullscreenOptionsOptions passed to requestFullscreen

If target is omitted, the document element is used.

Returns

Property NameTypeDescription
isFullscreenAvailablebooleanWhether the Fullscreen API is available
isFullscreenEnabledbooleanWhether fullscreen is currently active
fullscreenElementElement | nullThe current fullscreen element
enableFullscreen() => Promise<void>Enters fullscreen
disableFullscreen() => Promise<void>Exits fullscreen
toggleFullscreen() => Promise<void>Toggles fullscreen on or off

On this page