facebook/relay · error
Expected handler_arg to have been previously validated.
Error message
Expected handler_arg to have been previously validated.
What it means
Unwrap guard in extract_values_from_handle_field_directive_helper: handler_arg (the handler name on @handle_field) must be a string literal, guaranteed by the earlier validate_connections validation pass. Firing indicates the handler argument is missing or non-literal because the directive skipped validation.
Source
Thrown at compiler/crates/relay-transforms/src/handle_fields/handle_field_util.rs:225
) -> HandleFieldDirectiveValues {
let HandleFieldDirectiveArgs {
handler_arg,
filters_arg,
key_arg,
dynamic_key_arg,
handle_args_arg,
} = extract_handle_field_directive_args_helper(handle_field_directive, hanlder_arg_name);
// We expect these values to be available since they should've been
// validated first as part of validate_connections validation step.
let key = match key_arg {
Some((_, value)) => value
.get_string_literal()
.expect("Expected key_arg to have been previously validated."),
None => "".intern(),
};
let handle= match handler_arg {
Some((_, value)) => value.get_string_literal().expect("Expected handler_arg to have been previously validated."),
None => default_handler.expect("Expected handler_arg to have been previously validated or a default to have been provided."),
};
let filters = match filters_arg {
Some((_, value)) => match value {
ConstantValue::List(list_val) => Some(
list_val
.iter()
.map(|val| {
val.get_string_literal()
.expect("Expected filters_arg to have been previously validated.")
})
.collect::<Vec<_>>(),
),
ConstantValue::Null() => None,
_ => unreachable!("Expected filters_arg to have been previously validated.",),
},
None => default_filters,
};View on GitHub (pinned to 668b1b85e0)
Solutions
- Run validate_connections before this extraction step
- Ensure hander_arg_name lookup matches the directive argument actually set
- Provide a default_handler fallback when the argument is absent
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at compiler/crates/relay-transforms/src/handle_fields/handle_field_util.rs:225 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/9c99708b692365b0.
Report an issue: GitHub.