Skip to content

Evaluation reasons and error codes

When you evaluate a flag using the binding's *Details methods or the OpenFeature SDK, the response includes a reason field that explains why a particular value was returned. If an error occurs, the response includes an errorCode field.

Evaluation reasons

ReasonDescription
TARGETING_MATCHA targeting rule's conditions matched the evaluation context, and the rule's variation was returned.
SPLITA targeting rule with a percentage rollout matched. The user fell within the rollout percentage and received the rule's variation.
DEFAULTNo targeting rule matched the evaluation context. The flag's default variation was returned.
DISABLEDThe flag is disabled. The default variation was returned regardless of targeting rules.

Error codes

When an evaluation error occurs, the method returns the default value you provided. The *Details methods include additional metadata about the error.

Error codeDescription
TYPE_MISMATCHThe flag's variation type does not match the requested type. For example, calling getBooleanValue on a flag whose variation is a string. The default value is returned.
GENERALAn unexpected error occurred during evaluation (for example, a network failure). The default value is returned.
FLAG_NOT_FOUNDThe specified flag key does not exist in the app. The default value is returned.

Example

The following example inspects evaluation details returned by getBooleanDetails:

JavaScript
const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
userId: "user-42",
});
switch (details.reason) {
case "TARGETING_MATCH":
console.log(`Matched targeting rule, variant: ${details.variant}`);
break;
case "SPLIT":
console.log(`Included in rollout, variant: ${details.variant}`);
break;
case "DEFAULT":
console.log("No rule matched, using default variation");
break;
case "DISABLED":
console.log("Flag is disabled");
break;
}
if (details.errorCode) {
console.error(
`Evaluation error: ${details.errorCode} - ${details.errorMessage}`,
);
}