gatsbyjs/gatsby · error

Plugin ${pluginName} called unstable_createNodeManifest but

Error message

Plugin ${pluginName} called unstable_createNodeManifest but didn't provide a node.

What it means

Validation inside nodeManifestReducer: unstable_createNodeManifest was called without a node (or a node without an id). The reducer drops the manifest and warns, because a node manifest is meaningless without the node identity used to correlate content updates.

Source

Thrown at packages/gatsby/src/redux/reducers/node-manifest.ts:53

        const shouldCreateNodeManifest =
          Date.now() - nodeLastUpdatedAtUTC <= maxDaysOld * ONE_DAY

        if (!shouldCreateNodeManifest) {
          return state
        }
      }

      if (typeof manifestId !== `string`) {
        reporter.warn(
          `Plugin ${pluginName} called unstable_createNodeManifest with a manifestId that isn't a string.`
        )

        return state
      }

      if (!node?.id) {
        reporter.warn(
          `Plugin ${pluginName} called unstable_createNodeManifest but didn't provide a node.`
        )

        return state
      }

      state.push({
        manifestId,
        pluginName,
        node: {
          id: node.id,
        },
      })

      return state
    }

    case `DELETE_NODE_MANIFESTS`: {

View on GitHub (pinned to e85d62f177)

Solutions

  1. Pass the created/updated node object to unstable_createNodeManifest
  2. Ensure the node has an id before manifesting (guard on node?.id)
  3. Fix plugin call ordering so the manifest is created after node creation
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/gatsby/src/redux/reducers/node-manifest.ts:53 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of gatsbyjs/gatsby@e85d62f177 (2026-08-26). Data as JSON: /api/errors/f700ce60d1091924. Report an issue: GitHub.