gatsbyjs/gatsby · error · Error
Nodes can only be updated by their owner. Node "${node.id}"
Error message
Nodes can only be updated by their owner. Node "${node.id}" is
owned by "${oldNode.internal.owner}" and another plugin "${owner}"
tried to update it. What it means
typeOwnersReducer CREATE_NODE branch: the node id already exists with a different internal.owner than the plugin now creating it. Gatsby enforces node ownership — only the plugin that created a node may update it — so this cross-plugin update is rejected with both owner names.
Source
Thrown at packages/gatsby/src/redux/reducers/type-owners.ts:115
The plugin deleting the node:
${JSON.stringify(plugin, null, 4)}
`)
}
}
return typeOwners
}
case `CREATE_NODE`: {
const { plugin, oldNode, payload: node } = action
const { owner, type } = node.internal
setTypeOwner(type, plugin, typeOwners, node)
// If the node has been created in the past, check that
// the current plugin is the same as the previous.
if (oldNode && oldNode.internal.owner !== owner) {
throw new Error(
stripIndent`
Nodes can only be updated by their owner. Node "${node.id}" is
owned by "${oldNode.internal.owner}" and another plugin "${owner}"
tried to update it.
`
)
}
return typeOwners
}
default:
return typeOwners
}
}
View on GitHub (pinned to e85d62f177)
Solutions
- Move the createNode/updateNode call into the plugin that owns the node type
- Use a distinct node type instead of writing to another plugin's nodes
- Check for two sourcing plugins configured to write the same type
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/gatsby/src/redux/reducers/type-owners.ts:115 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/541857b6283a74bb.
Report an issue: GitHub.