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
- Confirm the plugin is enabled and actually emits global data (check the generated globalData.json).
- Drop the failfast option to tolerate absence gracefully.
- Fix typos in the pluginName argument to match the registered plugin id.
- 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
- Omit failfast unless you are certain the plugin is enabled.
- Guard data-consuming components behind the same condition that enables the plugin.
- Verify generated globalData.json during the build for the expected plugin key.
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
- Docusaurus plugin global data not found for "${pluginName}"
- Can't find active docs plugin for "${pathname}" pathname, wh
- You are using a feature of the Docusaurus docs plugin, but t
- Wrong icon: ${icon}
- unexpected color mode ${colorMode}
AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12).
Data as JSON: /api/errors/49495c172def95fd.
Report an issue: GitHub.