vercel/next.js · error · Error

check() is only allowed in idle status

Error message

check() is only allowed in idle status

What it means

webpack HMR runtime state machine invariant inside hotCheck: module.hot.check() was invoked while the HMR status was not "idle" (e.g. a check already in progress). The status machine forbids overlapping checks, so the call is rejected rather than queued.

Source

Thrown at packages/next/src/bundles/webpack/packages/HotModuleReplacement.runtime.js:261

				promise.then(unblock, unblock);
				return promise;
			default:
				return promise;
		}
	}

	function waitForBlockingPromises(fn) {
		if (blockingPromises === 0) return fn();
		return new Promise(function (resolve) {
			blockingPromisesWaiting.push(function () {
				resolve(fn());
			});
		});
	}

	function hotCheck(applyOnUpdate) {
		if (currentStatus !== "idle") {
			throw new Error("check() is only allowed in idle status");
		}
		return setStatus("check")
			.then($hmrDownloadManifest$)
			.then(function (update) {
				if (!update) {
					return setStatus(applyInvalidatedModules() ? "ready" : "idle").then(
						function () {
							return null;
						}
					);
				}

				return setStatus("prepare").then(function () {
					var updatedModules = [];
					currentUpdateApplyHandlers = [];

					return Promise.all(
						Object.keys($hmrDownloadUpdateHandlers$).reduce(function (

View on GitHub (pinned to 0eb3775416)

Solutions

  1. Wait for the webpack HMR runtime to reach idle status before calling check(); this is an internal invariant and usually indicates a build tool bug — upgrade Next.js.
Defensive patterns

Strategy: validation

When it happens

Trigger: Calling HotModuleReplacement.check() while the HMR runtime is not in idle status.

Common situations: A hot-update check is triggered while another update is already being applied or downloaded during next dev.


AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19). Data as JSON: /api/errors/8dcbc024d8b20e24. Report an issue: GitHub.