facebook/docusaurus · error

Docusaurus plugin global data not found for "${pluginName}"

Error message

Docusaurus plugin global data not found for "${pluginName}" plugin.

What it means

Thrown by useAllPluginInstancesData when the named plugin has no entry in global data AND options.failfast is true. Without failfast it silently returns undefined. Global data is populated by plugins during the build and serialized for the browser, so absence means the plugin did not run or did not emit global data.

Source

Thrown at packages/docusaurus/src/client/exports/useGlobalData.ts:24

 */

import useDocusaurusContext from './useDocusaurusContext';
import {DEFAULT_PLUGIN_ID} from './constants';
import type {GlobalData, UseDataOptions} from '@docusaurus/types';

export default function useGlobalData(): GlobalData {
  const {globalData} = useDocusaurusContext();
  return globalData;
}

export function useAllPluginInstancesData(
  pluginName: string,
  options: UseDataOptions = {},
): GlobalData[string] | undefined {
  const globalData = useGlobalData();
  const pluginGlobalData = globalData[pluginName];
  if (!pluginGlobalData && options.failfast) {
    throw new Error(
      `Docusaurus plugin global data not found for "${pluginName}" plugin.`,
    );
  }
  return pluginGlobalData;
}

export function usePluginData(
  pluginName: string,
  pluginId: string = DEFAULT_PLUGIN_ID,
  options: UseDataOptions = {},
): GlobalData[string][string] {
  const pluginGlobalData = useAllPluginInstancesData(pluginName);
  const pluginInstanceGlobalData = pluginGlobalData?.[pluginId];
  if (!pluginInstanceGlobalData && options.failfast) {
    throw new Error(
      `Docusaurus plugin global data not found for "${pluginName}" plugin with id "${pluginId}".`,
    );
  }

View on GitHub (pinned to 3f483e80e3)

Solutions

  1. Confirm the plugin is enabled and actually emits global data (check the generated globalData.json).
  2. Drop the failfast option to tolerate absence gracefully.
  3. Fix typos in the pluginName argument to match the registered plugin id.
  4. If conditionally enabling the plugin, guard the component that consumes its data behind the same condition.

Example fix

// before
const data = useAllPluginInstancesData('myplugin', {failfast: true});
// after
const data = useAllPluginInstancesData('myplugin');
if (!data) return null;
Defensive patterns

Strategy: validation

Validate before calling

const data = useGlobalData();
const exists = Boolean(data[pluginName]);
// only call with failfast once `exists` is true

Type guard

function pluginHasGlobalData(all: GlobalData, name: string): all is GlobalData & Record<typeof name, unknown> {
  return Boolean(all[name]);
}

Prevention

When it happens

Trigger: Calling useAllPluginInstancesData('foo', {failfast: true}) where 'foo' is not an enabled plugin or has not yet produced global data at render time.

Common situations: Theme override reading data from a plugin that was disabled in config, typo'd plugin name, or component rendered during SSR before plugin global data is attached.

Related errors


AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12). Data as JSON: /api/errors/49495c172def95fd. Report an issue: GitHub.