A feature flags service written in .NET
The API used to retrieve client-side feature flags has a new response format due to changes in pull request #635. This may affect existing integrations that rely on the previous format.
Old Format
[
{
"id":"hello-world",
"variation":"true",
"variationType":"boolean",
"variationId":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"sendToExperiment":false
}
]
New Format
{
"messageType":"data-sync",
"data":{
"eventType":"full",
"userKeyId":"bot-id",
"featureFlags":[
{
"id":"hello-world",
"variation":"true",
"variationType":"boolean",
"variationId":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"matchReason":"flag disabled",
"variationOptions":[
{
"id":"fafb6319-9270-4a4b-b2c3-12d2be29e69a",
"value":"true"
},
{
"id":"3f02a597-a150-4c3f-83b9-27a2de80c7dc",
"value":"false"
}
],
"sendToExperiment":false,
"timestamp":1712755780494
}
]
}
}
Full Changelog: https://github.com/featbit/featbit/compare/3.3.1...3.3.2
variationId
and sendToExperiment
field to get client feature flags API by @cosmos-explorer in https://github.com/featbit/featbit/pull/614
System.IdentityModel.Tokens.Jwt
package introduces a breaking change.Full Changelog: https://github.com/featbit/featbit/compare/3.3.0...3.3.1
We normalize redis cache keys in PR #603, So after upgrading to v3.3.0, you will need to
As for cleaning up the old Redis cache, check out this comment. If you have any questions, feel free to contact us for assistance.
Full Changelog: https://github.com/featbit/featbit/compare/3.2.1...3.3.0
currentUserProp
method by @deleteLater in https://github.com/featbit/featbit/pull/601
Full Changelog: https://github.com/featbit/featbit/compare/3.2.0...3.2.1
ππ Big thanks to @wss-rbrennan for his contribution to the backend services otel integration in PR #584
Full Changelog: https://github.com/featbit/featbit/compare/3.1.0...3.2.0
Full Changelog: https://github.com/featbit/featbit/compare/3.0.1...3.1.0
Full Changelog: https://github.com/featbit/featbit/compare/3.0.0...3.0.1
Full Changelog: https://github.com/featbit/featbit/compare/2.5.2...2.5.3
Workspace
in PR #534, which is a higher level of organizationIf you're upgrading from version 2.5.x, please run the following script against your MongoDB:
// PR #534
const workspaceId = UUID()
db.Workspaces.deleteMany({})
db.Workspaces.insertOne(
{
_id: workspaceId,
name: "Default Workspace",
key: "default-workspace",
sso: null,
license: null,
createdAt: new Date(),
updatedAt: new Date()
}
);
const orgCursor = db.Organizations.find({});
orgCursor.forEach(doc => {
db.Organizations.updateOne({ _id: doc._id }, { $set: { workspaceId: workspaceId } });
});
const userCursor = db.Users.find({});
userCursor.forEach(doc => {
db.Users.updateOne({ _id: doc._id }, { $set: { workspaceId: workspaceId } });
});
// PR #530
const policyCursor = db.Policies.find({ "statements.resourceType": "account" });
policyCursor.forEach(doc => {
doc.statements.forEach(statement => {
if (statement.resourceType === "account") {
statement.resourceType = "organization";
statement.resources = statement.resources.map(resource => resource.replace(/^account\//, "organization/"));
}
});
db.Policies.updateOne({ _id: doc._id }, { $set: { statements: doc.statements } });
});
Full Changelog: https://github.com/featbit/featbit/compare/2.5.2...3.0.0
Full Changelog: https://github.com/featbit/featbit/compare/2.5.1...2.5.2