gatsbyjs/gatsby · error

Plugin `${plugin.name}` has customized the built-in Gatsby G

Error message

Plugin `${plugin.name}` has customized the built-in Gatsby GraphQL type `${typeComposer.getTypeName()}`. This is allowed, but could potentially cause conflicts.

What it means

Fires in mergeTypes when a plugin customizes a built-in Gatsby type (e.g. Query, File) that has no owning plugin but is on the overridableBuiltInTypeNames list. It is an advisory warning: the merge is allowed, but Gatsby cannot guarantee no field-level conflicts will result, so the plugin is told its changes may clash with future or concurrent customizations.

Source

Thrown at packages/gatsby/src/schema/schema.js:379

    !typeOwner && overridableBuiltInTypeNames.has(typeComposer.getTypeName())

  const isSafeMerge =
    !plugin ||
    plugin.name === `default-site-plugin` ||
    plugin.name === typeOwner ||
    typeComposer.hasExtension(`isPlaceholder`) ||
    isOverridableBuiltInType

  if (!isSafeMerge) {
    if (typeOwner) {
      report.warn(
        `Plugin \`${plugin.name}\` has customized the GraphQL type ` +
          `\`${typeComposer.getTypeName()}\`, which has already been defined ` +
          `by the plugin \`${typeOwner}\`. ` +
          `This could potentially cause conflicts.`
      )
    } else {
      report.warn(
        `Plugin \`${plugin.name}\` has customized the built-in Gatsby GraphQL type ` +
          `\`${typeComposer.getTypeName()}\`. ` +
          `This is allowed, but could potentially cause conflicts.`
      )
    }
  }

  if (
    type instanceof ObjectTypeComposer ||
    type instanceof InterfaceTypeComposer ||
    type instanceof GraphQLObjectType ||
    type instanceof GraphQLInterfaceType
  ) {
    mergeFields({ typeComposer, fields: type.getFields() })
    type.getInterfaces().forEach(iface => typeComposer.addInterface(iface))
  }

  if (

View on GitHub (pinned to e85d62f177)

Solutions

  1. Avoid customizing built-in types; define a new type or extend types you own instead
  2. If overriding the built-in type is intentional, acknowledge the warning and verify the merged schema contains the expected fields
  3. Override the field in question with createResolvers instead of redefining the whole type
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at packages/gatsby/src/schema/schema.js:379 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/cbc87285487f7ee4. Report an issue: GitHub.