Article

2min lecture

Comment nous avons adopté OpenFeature pour rendre notre SDK AB Tasty Feature Experimentation encore plus ouvert

Contexte : pourquoi nous avons adopté OpenFeature

Chez AB Tasty, nous sommes convaincus qu’une expérience produit de qualité passe par une intégration fluide de la personnalisation et du feature flagging. Notre SDK AB Tasty Feature Experimentation permet aux équipes tech de contrôler finement l’activation de leurs fonctionnalités et d’adapter leurs interfaces à chaque visiteur.Mais dans un contexte où les écosystèmes techniques se complexifient, il devient crucial de favoriser l’interopérabilité et la flexibilité. C’est là que l’adoption d’OpenFeature prend tout son sens.

OpenFeature : un standard ouvert pour le feature flagging

OpenFeature est une spécification open-source qui fournit une API agnostique pour gérer des feature flags. Elle permet aux développeurs d’intégrer des fonctionnalités de feature flagging de manière cohérente, quel que soit l’outil ou la plateforme utilisée.

Pourquoi c’est utile ?

  • Interopérabilité : une interface de développement (API) unique pour tous les fournisseurs.
  • Évitement du verrouillage fournisseur : changez d’outil sans réécrire votre logique métier.
  • Communauté active : incubé par la CNCF, au cœur des pratiques modernes cloud-native.

Comment ça marche ?

OpenFeature fonctionne avec des providers, qui traduisent ses appels standardisés en appels spécifiques à chaque fournisseur.


? C’est exactement ce que nous avons développé pour AB Tasty Feature Experimentation.

Ce que nous avons fait : un provider OpenFeature pour AB Tasty Feature Experimentation

Notre objectif : rendre notre SDK compatible OpenFeature tout en conservant nos fonctionnalités avancées.Nous avons donc développé un provider officiel :
@flagship.io/openfeature-provider-js

Exemple d’intégration (Node.js)


JavaScript
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: "AB Tasty Feature Experimentation T-shirt",
      price: 20,
      discountEnabled: fsEnableDiscount,
      btnColor: fsAddToCartBtnColor,
    },
  });
});

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

Zoom technique : intégrer Flagship via OpenFeature

1. Installation des dépendances


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

2. Initialisation du 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. Définition du contexte d’évaluation


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

OpenFeature.setContext(evaluationContext);

4. Évaluation des 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
);

5. Exemple complet avec Express.js


JavaScript
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 fsEnableDiscountValue = await client.getBooleanValue(
    "fs_enable_discount",
    false,
    evaluationContext
  );

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

  res.json({
    item: {
      name: "Flagship T-shirt",
      price: 20,
    },
    fsEnableDiscount: fsEnableDiscountValue,
    fsAddToCartBtnColor: fsAddToCartBtnColorValue,
  });
});

const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Bonus : détection automatique des flags grâce à notre codebase analyser

Pour encore plus de rapidité, nous mettons à disposition un codebase analyser directement intégré dans notre CLI (incluse dans notre extension VSCode).

Ce qu’il fait :

  • Il scanne la codebase du client.
  • Il détecte automatiquement l’utilisation de solutions concurrentes (comme Optimizely, Kameleoon…).
  • Il repère les flags déjà implémentés via OpenFeature.
  • Il propose une création automatique de ces flags dans notre plateforme Flagship.

Résultat ?

➡️ Vous migrez en quelques clics, sans ressaisie.
➡️ Vous testez notre outil Feature Experimentation sans effort.
➡️ Vous gagnez un temps précieux.

Pourquoi c’est important pour nos clients

En adoptant OpenFeature, nous offrons à nos clients :

  • Une intégration plus rapide dans leurs architectures existantes.
  • Une portabilité accrue de leurs déploiements cloud.
  • Une flexibilité totale dans leurs choix technologiques.

Et surtout, nous réaffirmons notre engagement vers un écosystème ouvert et interopérable.

Ressources utiles pour aller plus loin

Article

3min lecture

Boostez vos expériences utilisateurs avec un Modification Engine amélioré !

Chez AB Tasty, nous avons toujours à cœur d’offrir à nos clients la meilleure expérience possible en facilitant la création et l’exécution de leurs campagnes d’optimisation. C’est pourquoi nous avons récemment apporté des améliorations significatives à notre « Modification Engine », le moteur de notre éditeur visuel.

Cette mise à jour apporte deux grandes avancées majeures :

  • Une compatibilité maximale avec les sites de nos clients, notamment via le support du Shadow DOM et des iFrames.
  • Des performances optimisées pour un chargement plus rapide et une exécution plus fluide des modifications, améliorant ainsi l’expérience des visiteurs des sites de nos clients.

Une Compatibilité Renforcée avec les Technologies Modernes

Nos clients développent des sites de plus en plus complexes, utilisant des technologies comme le Shadow DOM et les iFrames pour structurer leurs applications web. Jusqu’à présent, ces implémentations pouvaient poser des problèmes de compatibilité avec notre éditeur visuel. Avec cette mise à jour, notre Modification Engine est maintenant entièrement compatible avec ces technologies, permettant aux utilisateurs d’appliquer des modifications sans friction, quels que soient les choix technologiques de leur site.

Des Performances en Nette Amélioration

Nos équipes ont travaillé en profondeur pour optimiser le temps de chargement et d’exécution du Modification Engine, ce qui se traduit par des améliorations concrètes sur les performances globales des sites de nos clients.

Réduction de l’Impact sur la Performance des Sites

  • Un tag JavaScript plus léger : L’impact global d’AB Tasty a déjà été réduit de 2,3 KB, avec d’autres optimisations à venir.
  • Moins d’impact sur les performances globales : Nous avons observé une amélioration de 1% à 11% sur les performances des sites de nos clients, en fonction du volume de modifications appliquées.

Temps de Chargement et d’Exécution Optimisés

  • Temps de requête réduit : Le « Network Request Time » est maintenant 2 à 3 fois plus court, ce qui signifie que notre moteur est chargé bien plus rapidement.
  • Exécution JavaScript plus efficace : Le temps d’exécution moyen des modifications est 30 à 55% plus rapide.
  • Diminution du « Render Blocking Time » : Entre 11% et 50% de gain, avec une amélioration encore plus marquée sur les campagnes les plus lourdes.
  • Suppression du statut de « Long main-thread task » : ME2 n’est plus considéré comme une tâche longue, ce qui signifie une meilleure réactivité globale.

Application et Réapplication des Modifications

Un autre point fort de cette mise à jour concerne la vitesse d’application et de réapplication des modifications :

  • Application des modifications 2,2 à 2,75 fois plus rapide.
  • Réapplication des modifications 4 à 5,7 fois plus rapide, un atout majeur pour les tests A/B dynamiques.

Quelques Cas Concrets

Nous avons mené des tests sur différentes campagnes pour mesurer concrètement ces améliorations :

Campagne avec 19 modifications :

  • Temps d’exécution total : 1,79ms (contre 3,96ms auparavant, soit 2,2 fois plus rapide).
  • Temps de réapplication après suppression d’une modification : 0,58ms (contre 3,34ms, soit 5,7 fois plus rapide).
  • Gain de 1% à 5% sur la performance globale du site.

Campagne avec 64 modifications :

  • Temps d’application total : 4ms (contre 10-11ms, soit 2,5 à 2,75 fois plus rapide).
  • Temps de réapplication après suppression d’une modification : 2,7ms (contre 11-12ms, soit 4 à 4,4 fois plus rapide).
  • Gain de 1% à 11% sur la performance globale du site.

Conclusion

Avec ces améliorations, notre Modification Engine devient plus robuste, plus rapide et plus adapté aux sites web modernes. Nos clients bénéficient d’une expérience plus fluide et leurs visiteurs profitent d’un temps de chargement réduit, sans compromis sur l’expérience utilisateur.

Et ce n’est qu’un début : notre équipe continue de travailler sur des optimisations pour rendre notre solution encore plus performante dans les mois à venir.

N’hésitez pas à tester ces améliorations et à nous faire part de vos retours !

Article

2min lecture

AB Tasty dévoile son extension Visual Studio Code : expérimentation et personnalisation en mode Dev-Friendly

AB Tasty lance une extension pour Visual Studio Code permettant aux développeurs de gérer leurs campagnes d’expérimentation et de personnalisation directement depuis leur IDE. Une avancée qui fluidifie le workflow des équipes techniques et simplifie l’adoption de l’expérimentation en entreprise.

Chez AB Tasty, nous avons toujours mis un point d’honneur à faciliter la mise en œuvre de l’expérimentation et de la personnalisation. Nos interfaces sont conçues pour être intuitives, mais nous savons que de nombreux développeurs préfèrent travailler directement dans leur IDE.

C’est là qu’intervient notre extension Visual Studio Code. Inspirée par les retours de nos utilisateurs et portée par notre volonté de simplifier l’expérience dev, cette extension permet :

  • Éviter les allers-retours entre l’IDE et l’interface web d’AB Tasty.
  • Profiter de la puissance de VS Code : autocomplétion intelligente, linters intégrés, colorisation syntaxique, validation en temps réel, etc.

Sur notre interface server-side (Feature Experimentation & Roll-outs)

✅ Gérer les feature flags et l’expérimentation produit en mode « code-first »
✅ Manipuler les ressources clés des campagnes (flags, targeting keys, goals)
✅ Identifier et créer facilement les feature flags détectés dans votre codebase 

Sur notre interface client-side (Web Experimentation & Personalization)

✅ Gérer l’expérimentation produit en mode « code-first »
✅ Lister et accéder aux segments, triggers et favorite-URLs liés à un compte
✅ Lister et accéder aux campagnes (variation, targeting, modification) liées à un compte
✅ Manipuler les scripts JS liés à un compte, campagne, variation et modification

AB Tasty rejoint le mouvement « Dev-Friendly »

Notre ambition : faire d’AB Tasty une plateforme qui s’adapte aux développeurs, et non l’inverse. Cette extension est une première étape, et nous avons encore de nombreuses améliorations en préparation.

Essayez-la et donnez-nous votre avis !

? L’extension est disponible en bêta sur la marketplace Visual Studio Code :

? Alors, prêt(e) à expérimenter autrement ?

Article

6min lecture

Gémo développe sa stratégie digitale pour consolider sa relation client

Gémo (Groupe Eram), conçoit et propose depuis 25 ans une large gamme de chaussures, vêtements et accessoires au prix juste pour toute la famille. Gémo a su devenir un acteur incontournable de mode française avec 460 points de vente en France et 15 magasins à l’international. En 2011, Gémo devient le deuxième distributeur de chaussures et textiles en périphérie des villes.

Mais l’enseigne ne s’arrête pas là et compte bien développer sa stratégie au delà de ses points de vente. Depuis quelques temps, la marque a initié une stratégie digitale afin de consolider ses relations client, accroître sa visibilité et recruter de nouveaux adeptes.

 

Claire FREULON, Responsable e-Marketing et Damien BIGOT, UX Designer, reviennent sur leur démarche d’optimisation avec AB Tasty.

Pouvez-vous nous présenter les enjeux actuels de votre secteur ?

[Claire FREULON]

L’enjeu principal de notre secteur est de développer la stratégie digitale d’une manière générale. Le défi est de taille lorsqu’il s’agit d’une enseigne telle que Gémo dont le business est très centré sur son réseau de magasins.

Pour nous, l’objectif principal est d’accroître la visibilité de GÉMO sur un marché à forte concurrence. Les acteurs sont à la fois nombreux et variés si nous tenons compte des enseignes traditionnelles mais il y a aussi les pure players, les ventes à distance (VAD) ou encore les marketplaces. Tout cet environnement constitue un vaste choix pour le client potentiel … Nous savons que si nous ne répondons pas à ses attentes, il ne tardera pas à aller dans une autre enseigne.

Nous avons développé une vraie confiance avec nos clients en magasin, l’idée est de retranscrire cette relation privilégiée sur notre site web et mobile.

Pouvez-vous nous expliquer les raisons pour entreprendre une démarche d’optimisation sur votre site ?

[Claire FREULON]

Nous avons souhaité débuter une démarche d’optimisation sur notre site web avec pour objectif principal d’augmenter le chiffre d’affaire.

Rapidement, d’autres objectifs se sont dessinés et nous nous sommes rendus compte que des objectifs secondaires pouvaient également contribuer à l’augmentation du chiffre d’affaire comme : l’optimisation du taux de conversion, le recrutement de nouveaux clients (par exemple, la nouvelle génération de parents beaucoup plus connectés que les précédentes), l’augmentation de la visibilité de GÉMO, etc.

Et enfin, nous avons souhaité avoir la possibilité de tester et valider toutes les évolutions ou refontes avant de lancer les développements sur le site.

Quels étaient vos critères de sélection pour définir votre outil CRO ?

[Claire FREULON]

Comme nous sommes une structure importante en termes de ressources humaines, il nous fallait un outil facile à mettre en place pour gagner en agilité. Avant de choisir notre outil, nous avons pris soin de regarder les références clients des acteurs du marché. C’était important pour nous de travailler avec une solution qui comprenne et intègre nos enjeux et nos problématiques.

Autre critère qui a fait pencher la balance, c’est l’accompagnement. Nous étions véritablement intéressés pour être accompagnés et suivi dans notre stratégie d’optimisation.

Enfin, il était évident pour nous d’avoir une solution qui puisse s’intégrer simplement dans notre écosystème de solutions techniques existant. Comme nous sommes dotés d’un outil de gestionnaire de tags, la mise en place de l’outil AB Tasty a été facilitée.

Vous travaillez à deux sur vos projets d’optimisation : comment vous gérez votre complémentarité ?

[Claire FREULON]

Pour ma partie marketing et analytics, mes missions sont les suivantes :

  • je gère la roadmap avec le consultant AB Tasty
  • je soumets des propositions de tests en fonction des statistiques Analytics ou des benchmarks
  • je gère le rétroplanning et la tenue des délais de mise en place
  • je participe également à la recette des tests avant leur mise en ligne.

[Damien BIGOT]

De mon côté, je gère la mise en place opérationnelle des tests, de la maquette graphique à la programmation dans l’outil AB Tasty, ainsi que la recette et la planification.

Après la mise en place de la roadmap, on intègre les tests en fonction de leur niveau de priorisation. Nous utilisons l’outil de manière quasi-quotidienne, en particulier la brique Personnalisation, afin de mettre en avant nos services ou nos offres commerciales contextualisées grâce aux différentes possibilités de segmentation.

Le fait de pouvoir programmer le jour et la date de lancement ainsi que les arrêts des campagnes, c’est un grand plus pour les offres éphémères (comme par exemple, les ventes flash).

 

Pour continuer d’évoquer votre complémentarité : comment se déroule l’accompagnement par les équipes AB Tasty ?

[Claire FREULON]

L’équipe d’AB Tasty nous accompagne de manière régulière sur le sujet et ils sont très réactifs. Nous avons mis en place des points bimensuels. Nous suivons la planification des tests, et le respect de la roadmap. Enfin, ils nous accompagnent de manière opérationnelle lorsque nous avons des besoins développement plus complexes.

[Damien BIGOT]

Au début, j’utilisais principalement l’interface WYSIWYG (what you see is what you get : l’éditeur contextuel AB Tasty), à l’aide des modules disponibles dans l’outil. Puis rapidement, j’ai commencé à développer mes propres scripts afin de répondre au mieux à nos besoins et d’optimiser au maximum leurs exécution.

Bien-sûr, l’équipe d’AB Tasty est toujours disponible pour m’aider dans la configuration ou me faire découvrir de nouvelles fonctionnalités.

Dans quelle mesure notre solution répond-elle à votre besoin ?

[Damien BIGOT]

AB Tasty nous permet de tester des maquettes, de trouver des quick-wins, et de personnaliser notre site pour nos clients. Nous sommes bien sûr au tout début de notre partenariat et il nous reste de nombreux chantiers à mettre en place.

En termes d’organisation, nous essayons de respecter les bonnes pratiques pour gagner en efficacité. Par exemple, après chaque test, nous débriefons sur les données obtenues afin de valider, ou non, la mise en place de cette feature en production. Aussi chaque trimestre, nous organisons une réunion afin de faire le bilan sur le trimestre passé et de brainstormer sur les prochains tests à mettre en place.

Si vous devez décrire AB Tasty en 3 mots ?

Efficace, réactif et innovant !