Skip to content

Conversation

@marcozabel
Copy link
Contributor

This PR

Makes the resolution value optional. If no targeting rules match and no defaultVariant is set it should be possible to return reason DEFAULT and no value to fall back to the code default.

Related Issues

open-feature/flagd#1856

Notes

Follow-up Tasks

How to test

@marcozabel marcozabel requested review from a team as code owners January 30, 2026 10:40
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @marcozabel, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the flexibility of flag evaluation by making the value field in ResolutionDetails optional. This change enables flagd to return a DEFAULT reason without a concrete value when no targeting rules are met and no default variant is specified, allowing client-side applications to implement their own fallback logic.

Highlights

  • Optional Value in ResolutionDetails: The value property within the ResolutionDetails type has been changed from required to optional (value?: U). This allows for scenarios where a flag evaluation might not return a specific value, such as when no targeting rules match and no default variant is set.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request makes the value property on ResolutionDetails optional. This is a significant breaking change that allows providers to not return a value when no targeting rule matches and no default variant is set. While this is a valid feature, the pull request is incomplete as it doesn't update any of the consuming code to handle this change. This will lead to build failures and runtime errors in various parts of the SDKs, such as the React and Angular packages. The necessary follow-up changes to handle the optional value should be included in this PR.


export type ResolutionDetails<U> = {
value: U;
value?: U;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

Making value optional is a significant breaking change that will affect consumers of ResolutionDetails and EvaluationDetails. For example, in packages/react/src/evaluation/use-feature-flag.ts, functions like useBooleanFlagValue will no longer be type-safe:

// packages/react/src/evaluation/use-feature-flag.ts:110
export function useBooleanFlagValue(
  flagKey: string,
  defaultValue: boolean,
  options?: ReactFlagEvaluationOptions,
): boolean {
  return useBooleanFlagDetails(flagKey, defaultValue, options).value;
}

With value being optional (boolean | undefined), this function will fail to compile as it's typed to return boolean. This will be the case for all use*FlagValue hooks in the React package. Similar issues will arise in other packages like the Angular SDK.

To address this, all call sites that access .value directly and expect a non-undefined value must be updated to handle the optionality. For example, by using the provided defaultValue:

// in packages/react/src/evaluation/use-feature-flag.ts:115
return useBooleanFlagDetails(flagKey, defaultValue, options).value ?? defaultValue;

This pull request should be expanded to include the necessary changes across the entire codebase to correctly handle this new optional property.

@marcozabel marcozabel marked this pull request as draft January 30, 2026 12:55
@marcozabel marcozabel closed this Jan 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant