alyssaxuu/screenity · error · Error

chrome.offscreen API unavailable

Error message

chrome.offscreen API unavailable

What it means

Guard in createCloudRecorderOffscreen: chrome.offscreen (or createDocument) is undefined, meaning the browser lacks Offscreen Documents support or the manifest is missing the 'offscreen' permission. The recorder's offscreen host cannot be created, so background-recording via offscreen doc is impossible in this environment.

Source

Thrown at src/pages/Background/offscreen/createCloudRecorderOffscreen.js:6

// Offscreen doc host for the recorder; immune to background-tab freeze/discard.
// ?cloud=1 renders <CloudRecorder/>, else <Recorder/>. Chrome allows only one
// offscreen doc per extension, so any existing one is closed first.
export const createCloudRecorderOffscreen = async ({ cloud = true } = {}) => {
  if (!chrome.offscreen || typeof chrome.offscreen.createDocument !== "function") {
    throw new Error("chrome.offscreen API unavailable");
  }

  try {
    const contexts = await chrome.runtime.getContexts({});
    const hasOffscreen = (contexts || []).some(
      (c) => c.contextType === "OFFSCREEN_DOCUMENT",
    );
    if (hasOffscreen) {
      await chrome.offscreen.closeDocument();
    }
  } catch (err) {
    // non-fatal; still attempt create, a stale doc surfaces as a create error
    console.warn("[createCloudRecorderOffscreen] pre-close failed", err);
  }

  await chrome.offscreen.createDocument({
    url: cloud ? "offscreenrecorder.html?cloud=1" : "offscreenrecorder.html",
    reasons: ["USER_MEDIA", "DISPLAY_MEDIA", "BLOBS", "WORKERS"],

View on GitHub (pinned to 512606387b)

Solutions

  1. Add "offscreen" to the manifest permissions
  2. Feature-detect and fall back to rendering the recorder in a tab or extension page
  3. Inform users on browsers without offscreen support that the feature is unavailable
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/pages/Background/offscreen/createCloudRecorderOffscreen.js:6 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of alyssaxuu/screenity@512606387b (2026-09-02). Data as JSON: /api/errors/9d56823151b1ffe4. Report an issue: GitHub.