AB Tasty and VWO have united, because half the loop was never enough.

Learn about the merger

Blog

How We Made Wingify’s Feature Experimentation SDK OpenFeature-Compatible — And Even Easier to Adopt

3 Min Read
How We Made Wingify’s Feature Experimentation SDK OpenFeature-Compatible — And Even Easier to Adopt

Why We Chose to Adopt OpenFeature

At Wingify, we believe a great product experience starts with smooth feature delivery and personalization. Our Feature Experimentation SDK empowers tech teams to control feature rollout and tailor interfaces to each visitor.

But in today’s complex, fast-moving ecosystems, interoperability is key. That’s where OpenFeature comes in.

What is OpenFeature?

OpenFeature is an open-source specification that defines a standardized API for feature flag management. It lets developers manage feature flags consistently across tools and platforms.

Why it matters:

  • Interoperability: A unified API across providers.
  • No vendor lock-in: Switch tools without rewriting business logic.
  • Thriving community: Backed by CNCF and designed for cloud-native development.

What We Built: The Official Wingify OpenFeature Provider

To ensure our SDK plays well with OpenFeature, we created an official provider:
@flagship.io/openfeature-provider-js

You can now use our feature flags in any OpenFeature-compliant setup, like this simple Node.js example:


JavaSvript
const express = require("express");
const { ABTastyProvider } = require("@flagship.io/openfeature-provider-js");
const { OpenFeature } = require("@openfeature/server-sdk");

const app = express();
app.use(express.json());

const provider = new ABTastyProvider("<ENV_ID>", "<API_KEY>");
await OpenFeature.setProviderAndWait(provider);

app.get("/item", async (req, res) => {
  const evaluationContext = {
    targetingKey: "visitor-id",
    fs_is_vip: true,
  };

  OpenFeature.setContext(evaluationContext);
  const client = OpenFeature.getClient();

  const fsEnableDiscount = await client.getBooleanValue("fs_enable_discount", false, evaluationContext);
  const fsAddToCartBtnColor = await client.getStringValue("fs_add_to_cart_btn_color", "blue", evaluationContext);

  res.json({
    product: {
      name: "Wingify Feature Experimentation T-shirt",
      price: 20,
      discountEnabled: fsEnableDiscount,
      btnColor: fsAddToCartBtnColor,
    },
  });
});

app.listen(3000, () => console.log("Server running on port 3000"));

Even Smarter: Our Built-In Codebase Analyzer

We’ve made onboarding even easier. Our CLI tool, which is also bundled with the Wingify VSCode Extension, includes a powerful codebase analyzer.

What it does:

  • Scans your codebase
  • Detects flags and usage from other providers (e.g., Optimizely, Kameleoon, etc.)
  • Identifies if you’re already using OpenFeature
  • Automatically generates corresponding flags in Flagship

Example: Already using OpenFeature with a competitor? Just plug in our CLI, and Wingify will detect your flags and preconfigure them for you — saving you hours of manual setup.

What This Means for You

By supporting OpenFeature, we offer:

  • Faster integration with your current stack
  • Greater flexibility in your feature flag strategy
  • Portability across cloud platforms
  • Alignment with open, modern dev practices

Quick Integration Guide

1. Install dependencies


Shell
npm install @openfeature/server-sdk
npm install @flagship.io/openfeature-provider-js

2. Initialize the provider


JavaScript
const { ABTastyProvider } = require("@flagship.io/openfeature-provider-js");
const { OpenFeature } = require("@openfeature/server-sdk");

const provider = new ABTastyProvider("<ENV_ID>", "<API_KEY>");
await OpenFeature.setProviderAndWait(provider);

3. Define the evaluation context


JavaScript
const evaluationContext = {
  targetingKey: "visitor-id",
  fs_is_vip: true,
};

OpenFeature.setContext(evaluationContext);

4. Evaluate your flags


JavaScript
const client = OpenFeature.getClient();

const fsEnableDiscount = await client.getBooleanValue(
  "fs_enable_discount",
  false,
  evaluationContext
);

const fsAddToCartBtnColor = await client.getStringValue(
  "fs_add_to_cart_btn_color",
  "blue",
  evaluationContext
);

Want to Learn More?

Check out these resources for more information about Feature Experimentation and OpenFeature.

Julie Dumont

Julie Dumont is the Chief Product Officer at AB Tasty. She leads the product vision and strategy, overseeing the development of new features and is dedicated to ensuring AB Tasty continues to be an innovative and market-leading solution for personalization and experimentation.

You might also love to read these

Pulse vs Hotjar: Which Feedback Tool Is Right for Your Team?
8 Min Read

Pulse vs Hotjar: Which Feedback Tool Is Right for Your Team?

8 Feature Flag Best Practices for Product and Engineering Teams
10 Min Read

8 Feature Flag Best Practices for Product and Engineering Teams

Hyperpersonalization in E-commerce: The Next Step in Product Discovery
4 Min Read

Hyperpersonalization in E-commerce: The Next Step in Product Discovery

The better way to test,
learn and grow

Get a Demo Start Trial