Relax @interfaceObject validation for Fed 1 subgraphs. (#3392)
Previously, any use of @interfaceObject in a Fed 2 subgraph caused an INTERFACE_OBJECT_USAGE_ERROR if any Fed 1 subgraph was present in the composition, regardless of whether the types conflicted.
The check is now per-type: an error is only raised when a Fed 2 subgraph uses @interfaceObject on type T and a Fed 1 subgraph has @key on an interface also named T. @key on an interface in a Fed 1 subgraph does not mean it can fulfill the __typename-resolution requirement that @interfaceObject depends on — but they are otherwise compatible with @interfaceObject usage on unrelated types.
Add validations for @link usages to prevent name conflicts. (#3430)
This change helps to avoid ambiguity for downstream @link-consuming code, which previously may have found different results for a spec schema element depending on search order. If your composition fails after this change, please rename conflicting elements via @link(import:) and conflicting specs/features via @link(as:).
Note that if you were declaring @links for the https://specs.apollo.dev/tag or https://specs.apollo.dev/inaccessible specs in your subgraph schema, you will need to instead import @tag and @inaccessible from the https://specs.apollo.dev/federation spec. This previous pattern only succeeded due to a now-fixed bug and is fragile/may lead to undesirable behavior.
Fetched April 30, 2026