gatsbyjs/gatsby · error

Plugin ${pluginName} called unstable_createNodeManifest with

Error message

Plugin ${pluginName} called unstable_createNodeManifest with an updatedAtUTC that isn't a proper value to instantiate a Date.

What it means

Validation inside the nodeManifestReducer when handling CREATE_NODE_MANIFEST: a source plugin called unstable_createNodeManifest with an updatedAtUTC value that cannot instantiate a valid Date (NaN). The manifest is discarded (state returned unchanged) and the plugin is warned, protecting the reducer from bad timestamps.

Source

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

export const nodeManifestReducer = (
  state: IGatsbyState["nodeManifests"] = [],
  action: ICreateNodeManifest | IDeleteNodeManifests
): IGatsbyState["nodeManifests"] => {
  switch (action.type) {
    case `CREATE_NODE_MANIFEST`: {
      const { manifestId, pluginName, node, updatedAtUTC } = action.payload

      const maxDaysOld =
        Number(process.env.NODE_MANIFEST_MAX_DAYS_OLD) || DEFAULT_MAX_DAYS_OLD

      if (updatedAtUTC) {
        const nodeLastUpdatedAtUTC: number = new Date(updatedAtUTC).getTime()
        if (
          (nodeLastUpdatedAtUTC as any) instanceof Date &&
          !isNaN(nodeLastUpdatedAtUTC)
        ) {
          reporter.warn(
            `Plugin ${pluginName} called unstable_createNodeManifest with an updatedAtUTC that isn't a proper value to instantiate a Date.`
          )

          return state
        }

        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.`
        )

View on GitHub (pinned to e85d62f177)

Solutions

  1. Fix the plugin to pass a valid ISO date string or epoch-ms number for updatedAtUTC
  2. Omit updatedAtUTC entirely if the source has no update timestamps
  3. Verify the remote CMS field mapped to updatedAtUTC isn't null/garbage
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/gatsby/src/redux/reducers/node-manifest.ts:29 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/61a87f7727a02d40. Report an issue: GitHub.