facebook/relay · error
Fragment spreads in updatable queries should have TypeCondit
Error message
Fragment spreads in updatable queries should have TypeConditionInfo
What it means
Type-generation invariant in make_prop (relay-typegen visit.rs): a fragment spread inside an @updatable query must carry TypeConditionInfo on its assignable directive data so typegen knows the spread's type condition. Firing means an updatable fragment spread was constructed without that metadata, breaking generation of updatable query typings.
Source
Thrown at compiler/crates/relay-typegen/src/visit.rs:2031
} else {
match typegen_context.project_config.typegen_config.language {
TypegenLanguage::Flow | TypegenLanguage::JavaScript => {
AST::RawType(intern!("null | void"))
}
TypegenLanguage::TypeScript => {
AST::RawType(intern!("null | undefined"))
}
}
}
} else {
let setter_parameter = AST::Union(
SortedASTList::new(
just_fragments
.iter()
.map(|fragment_spread| {
let type_condition_info = fragment_spread
.type_condition_info
.expect("Fragment spreads in updatable queries should have TypeConditionInfo");
let (key, value) = match type_condition_info {
TypeConditionInfo::Abstract => (format!("__is{}", fragment_spread.fragment_name).intern(), AST::String),
TypeConditionInfo::Concrete { concrete_type } => ("__typename".intern(), AST::StringLiteral(StringLiteral(concrete_type))),
};
let fragment_spread_or_concrete_type_marker = Prop::KeyValuePair(KeyValuePairProp {
key,
value,
read_only: true,
optional: false,
});
let assignable_fragment_spread_ref = Prop::KeyValuePair(KeyValuePairProp {
key: *KEY_FRAGMENT_SPREADS,
value: AST::FragmentReference(
SortedStringKeyList::new(vec![fragment_spread.fragment_name.0]),
),
read_only: true,
optional: false,
});View on GitHub (pinned to 668b1b85e0)
Solutions
- Ensure fragment spreads in updatable queries get the assignable directive with TypeConditionInfo data during transforms
- Check the transform that creates @updatable spreads attaches the type condition payload
- Validate spread metadata before invoking typegen and emit a diagnostic
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at compiler/crates/relay-typegen/src/visit.rs:2031 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of facebook/relay@668b1b85e0 (2026-09-02).
Data as JSON: /api/errors/6f063db3a7184b5f.
Report an issue: GitHub.