JavaScript Navigator scheduling Property

Beginner
5 min read
Updated: Nov 2026
3 examples
Property

Definition

navigator.scheduling is a read-only property that returns a Scheduling object for the current document. Its main method is isInputPending(), which checks for pending user input during long tasks (MDN).

Read the notes below before you rely on this property. Prefer feature detection when support is limited.

Syntax

Use navigator.scheduling. Start with this line.

JavaScript
navigator.scheduling
CallWhat it does
navigator.schedulingPrimary signature.

Built into the browser. Read navigator.scheduling on Navigator — no import required.

Library declarations
JavaScript
navigator.scheduling

Parameters

ParameterDescription
includeContinuousOptional. Also count continuous events (mousemove, etc.)

Return Value

Return ValueDescription
*The current value of navigator.scheduling.

JavaScript Examples

Example 1 — Feature-Detect Support

Check for scheduling and isInputPending before calling them.

JavaScript
const hasScheduling = "scheduling" in navigator;
const hasMethod =
  hasScheduling &&
  typeof navigator.scheduling.isInputPending === "function";

console.log("scheduling in navigator: " + hasScheduling);
console.log("isInputPending available: " + hasMethod);
Try It Yourself

How It Works

  1. Check the property. "scheduling" in navigator.
  2. Check the method. Confirm isInputPending is a function.
  3. Missing path. Common — fall back to timed yields or Scheduler.
  4. Rule. Never call isInputPending() without detecting first.

Example 2 — Call isInputPending() Safely

Read the boolean only when the deprecated API exists.

JavaScript
function inputPendingNow() {
  if (
    !("scheduling" in navigator) ||
    typeof navigator.scheduling.isInputPending !== "function"
  ) {
    return "API missing";
  }
  return String(navigator.scheduling.isInputPending());
}

console.log(inputPendingNow());
Try It Yourself

How It Works

  1. Guard. Exit with a clear message if the API is absent.
  2. Call. isInputPending() returns a boolean.
  3. Idle pages. Often false when nothing is queued.
  4. MDN caveat. It may incorrectly return false — do not rely on it alone.

Example 3 — Portable Yield Helper

Prefer a setTimeout(0) yield; optionally consult isInputPending when present.

JavaScript
function yieldToMain() {
  return new Promise((resolve) => setTimeout(resolve, 0));
}

async function maybeYield() {
  const api =
    "scheduling" in navigator &&
    typeof navigator.scheduling.isInputPending === "function";

  if (!api || navigator.scheduling.isInputPending()) {
    await yieldToMain();
    console.log("yielded");
  } else {
    console.log("kept working (no pending input reported)");
  }
}

maybeYield();
Try It Yourself

How It Works

  1. Portable yield. setTimeout(0) lets the event loop breathe.
  2. Optional API. Use isInputPending only when it exists.
  3. Missing API. Yield anyway — safest learning default.
  4. New apps. Prefer Scheduler yield() when you adopt that API.

Browser Support

navigator.scheduling is marked Deprecated and Experimental on MDN. It is not a Baseline dependency. Prefer the Scheduler API for new work; feature-detect if you must read legacy code.

✓ Deprecated · Experimental

Navigator.scheduling

Returns a Scheduling object with isInputPending(). Limited availability; superseded by Scheduler features such as yield().

Limited Deprecated path
Google Chrome Partial / legacy isInputPending path
Partial
Mozilla Firefox Limited or unavailable
Limited
Apple Safari Limited or unavailable
Limited
Microsoft Edge Partial / Chromium-based
Partial
Opera Chromium-based / varies
Partial
Internet Explorer Not available
No support
scheduling Deprecated

Bottom line: Do not ship new features on navigator.scheduling. Detect it for learning, then migrate to Scheduler / portable yields.

Frequently Asked Questions

A Scheduling object for the current document. Its main method is isInputPending(), which reports whether pending input events are waiting in the event queue.
Yes to both on MDN: Deprecated and Experimental. Avoid it in new projects. Prefer the Scheduler API (for example scheduler.yield()) when available.
During long JavaScript work, you can check if the user is trying to interact. If true, yield to the main thread so clicks and keys feel responsive. MDN warns it may incorrectly return false.
No. MDN marks it Deprecated and says Scheduling / isInputPending has been superseded by better Scheduler features. Keep any usage behind feature detection for learning only.
Check "scheduling" in navigator and typeof navigator.scheduling.isInputPending === "function" before calling it.
No. It is a read-only Navigator property. You use the returned Scheduling object; you do not assign a new value.

Next: serial

Continue with the next Navigator property in the JavaScript guide.

serial tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

7 people found this page helpful