Skip to content

Feature values always have type string when using local evaluation mode #146

@AceFire6

Description

@AceFire6

We've started seeing an issue where number values like this one are being returned as type string when enableLocalEvaluation is set to true.
Screenshot 2024-03-01 at 11 38 49

Using this test script I've validated that the local evaluation causes the change in behaviour (thanks Matt for the help 🙌 )

This has been tested on flagsmith-nodejs versions 2.5.1 and 3.2.0

import Flagsmith from 'flagsmith-nodejs';

async function main(): Promise<void> {
    const flagClient = new Flagsmith({
        environmentKey: 'ser.key',
        enableLocalEvaluation: true,
        enableAnalytics: false,
    });

    const environmentFlags = await flagClient.getEnvironmentFlags();
    const flag = environmentFlags.getFlag('daisy.settlements.timeout');
    console.log(`flagClient.apiUrl=${flagClient.apiUrl}`);
    console.log(`flagClient.enableLocalEvaluation=${flagClient.enableLocalEvaluation}`);
    console.log(JSON.stringify(flag));
    console.log(`typeof flag.value=${typeof flag.value}`);

    await flagClient.close();
}

void main();

enableLocalEvaluation=true

flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=true
{"value":"60000","enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=string

enableLocalEvaluation=false

flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=false
{"value":60000,"enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=number

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