Skip to content
This repository was archived by the owner on Dec 12, 2025. It is now read-only.
This repository was archived by the owner on Dec 12, 2025. It is now read-only.

Feature Flag evaluation not working as expected #52

Open

Description

@hect1c

Hey,

I'm testing out Happykit Feature flags and ran into an issue or possibly I have a misunderstanding of how the feature flag evaluation works.

I have the following rules setup.

image

In my getServerSideProps I have the following code

    const { initialFlagState } = await getFlags({
      context,
      user: {
        // key: 'manager',
        key: '',
      },
    })

    console.log('initialFlagState', initialFlagState)

When I alternate between both key with manager and empty string it seems my feature flag key is always true. I'm assuming this is because my default when active is true is using variant 1 of true. But it says under Variant 1 option the following

This flag is currently active. It will respect individual user targeting and evaluate all rules. If none of these match, it will fall back to the value you configure here.

My understanding is that because of rule number 2 I set on the user where Key is not equal to the string I'm expecting then it will return variant 2 or false. Again this isn't working so not sure if I misunderstood how this should work, or I am doing something wrong.

Happy to create a reproduction if that helps but should be easy to replicate I think.

Activity

  1. dferber90 commented on May 18, 2023

    @dferber90
    Contributor

    Hey, thanks for the super detailed report!

    HappyKit currently accepts three forms of inputs:

    • visitorKey: this is an automatically created key per visitor of your page. it's generated per device and might chance if cookies are lost
    • user: this identifies a specific user that exists in your application. you can provide a user and would typically supply your user's id as the user key. a user always needs to have at least a key. happykit supports a specific set of known attributes for users.
    • traits: this is any key-value pair you want to provide

    You might be running into trouble as happykit doesn't expect an empty user key

    • Could you try using a trait instead? That would be recommended here
    • Could you try using a non-empty user key? Just for debugging purposes
  2. hect1c commented on May 18, 2023

    @hect1c
    Author

    Hey thanks for the reply.

    So I have tried with traits and same issue it always resolves to true.

        const { initialFlagState } = await getFlags({
          context,
          traits: [{
            // key: 'manager', // this should be true
            key: 'test', // this should be false
          }],
        })
    
        console.log('initialFlagState', initialFlagState)
    

    screenshot of the rules
    image

    screenshot of the initialFlagState output
    Screenshot 2023-05-18 at 11 37 04 am

  3. dferber90 commented on May 18, 2023

    @dferber90
    Contributor

    Looks like the error is here:

        traits: [{
            // key: 'manager', // this should be true
            key: 'test', // this should be false
          }],
    

    traits expects an object, but you are providing an array. Could you try with this?

        traits: {
            // key: 'manager', // this should be true
            key: 'test', // this should be false
          },
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions