facebook/react · error · Error

386

386

Error message

The current renderer does not support microtasks. This error is likely caused by a bug in React. Please file an issue.

What it means

Renderers that cannot schedule microtasks re-export ReactFiberConfigWithNoMicrotasks, where scheduleMicrotask is a throwing shim and `supportsMicrotasks = false`. The reconciler uses scheduleMicrotask for microtask-scheduled work (e.g. sync retry lanes / Suspense retries); if a code path calls it without checking supportsMicrotasks, this invariant fires.

Source

Thrown at packages/react-reconciler/src/ReactFiberConfigWithNoMicrotasks.js:14

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

// Renderers that don't support microtasks
// can re-export everything from this module.

function shim(...args: any): empty {
  throw new Error(
    'The current renderer does not support microtasks. ' +
      'This error is likely caused by a bug in React. ' +
      'Please file an issue.',
  );
}

// Test selectors (when unsupported)
export const supportsMicrotasks = false;
export const scheduleMicrotask = shim;

View on GitHub (pinned to eafeac097b)

Solutions

  1. Implement scheduleMicrotask in your host config — usually `queueMicrotask` or `Promise.resolve().then(callback)`.
  2. Verify the runtime environment actually supports microtasks before re-exporting the NoMicrotasks config.
  3. If supportsMicrotasks was true and it still threw, file an issue — the reconciler should gate on the flag.

Example fix

// before: hostconfig re-exports the throwing shim
export {scheduleMicrotask} from 'react-reconciler/src/ReactFiberConfigWithNoMicrotasks';

// after: implement it
export const supportsMicrotasks = true;
export function scheduleMicrotask(callback) {
  Promise.resolve().then(callback);
}
Defensive patterns

Strategy: validation

Validate before calling

// Custom renderer config: only claim no-microtasks where none exist
const hasMicrotasks = typeof queueMicrotask === 'function' || typeof Promise === 'function';
export {scheduleMicrotask} from hasMicrotasks
  ? './microtasksImpl'
  : 'react-reconciler/src/ReactFiberConfigWithNoMicrotasks';

Prevention

When it happens

Trigger: A custom renderer's host config re-exports NoMicrotasks while the runtime hits a microtask-scheduling path — e.g. Suspense/retry scheduling in an environment where the renderer declined microtask support.

Common situations: Custom renderer authors copying a no-microtasks config (targeting environments without Promise/microtasks) while the app uses Suspense or sync-update features that schedule microtasks.

Related errors


AI-assisted analysis of facebook/react@eafeac097b (2026-08-21). Data as JSON: /api/errors/69c9618cd7992dc8. Report an issue: GitHub.