gatsbyjs/gatsby · error

Plugin `${plugin.name}` has customized the GraphQL type `${t

Error message

Plugin `${plugin.name}` has customized the GraphQL type `${typeComposer.getTypeName()}`, which has already been defined by the plugin `${typeOwner}`. This could potentially cause conflicts.

What it means

Error "Plugin `${plugin.name}` has customized the GraphQL type `${typeComposer.getTypeName()}`, which has already been defined by the plugin `${typeOwner}`. This could potentially cause conflicts." thrown in gatsbyjs/gatsby.

Source

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

  createdFrom,
  parentSpan,
}) => {
  // The merge is considered safe when a user or a plugin owning the type extend this type
  // TODO: add proper conflicts detection and reporting (on the field level)
  const typeOwner = typeComposer.getExtension(`plugin`)
  const isOverridableBuiltInType =
    !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 ||

View on GitHub (pinned to e85d62f177)

Solutions

  1. Have each plugin customize its own types only, or own the type exclusively so merges are considered safe
  2. Rename your custom type so it does not collide with a type owned by another plugin
  3. If the merge is intentional, suppress by defining the type from the default-site-plugin or by making the plugin the type owner
Defensive patterns

Strategy: validation

When it happens

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