{"record":{"id":"6f063db3a7184b5f","repo":"facebook/relay","slug":"fragment-spreads-in-updatable-queries-should-have","errorCode":null,"errorMessage":"Fragment spreads in updatable queries should have TypeConditionInfo","messagePattern":"Fragment spreads in updatable queries should have TypeConditionInfo","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"compiler/crates/relay-typegen/src/visit.rs","lineNumber":2031,"sourceCode":"                    } else {\n                        match typegen_context.project_config.typegen_config.language {\n                            TypegenLanguage::Flow | TypegenLanguage::JavaScript => {\n                                AST::RawType(intern!(\"null | void\"))\n                            }\n                            TypegenLanguage::TypeScript => {\n                                AST::RawType(intern!(\"null | undefined\"))\n                            }\n                        }\n                    }\n                } else {\n                    let setter_parameter = AST::Union(\n                                  SortedASTList::new(\n                                  just_fragments\n                                      .iter()\n                                      .map(|fragment_spread| {\n                                          let type_condition_info =  fragment_spread\n                                              .type_condition_info\n                                              .expect(\"Fragment spreads in updatable queries should have TypeConditionInfo\");\n                                          let (key, value) = match type_condition_info {\n                                              TypeConditionInfo::Abstract => (format!(\"__is{}\", fragment_spread.fragment_name).intern(), AST::String),\n                                              TypeConditionInfo::Concrete { concrete_type } => (\"__typename\".intern(), AST::StringLiteral(StringLiteral(concrete_type))),\n                                          };\n                                          let fragment_spread_or_concrete_type_marker = Prop::KeyValuePair(KeyValuePairProp {\n                                              key,\n                                              value,\n                                              read_only: true,\n                                              optional: false,\n                                          });\n                                          let assignable_fragment_spread_ref = Prop::KeyValuePair(KeyValuePairProp {\n                                              key: *KEY_FRAGMENT_SPREADS,\n                                              value: AST::FragmentReference(\n                                                  SortedStringKeyList::new(vec![fragment_spread.fragment_name.0]),\n                                              ),\n                                              read_only: true,\n                                              optional: false,\n                                          });","sourceCodeStart":2013,"sourceCodeEnd":2049,"githubUrl":"https://github.com/facebook/relay/blob/668b1b85e06261aa3b58dabfc51f8b5524a70955/compiler/crates/relay-typegen/src/visit.rs#L2013-L2049","documentation":"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.","triggerScenarios":"Thrown at compiler/crates/relay-typegen/src/visit.rs:2031 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"668b1b85e06261aa3b58dabfc51f8b5524a70955","analyzedAt":"2026-09-02T19:57:20.783Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}