From ac8526c1bcf60321d95b5949288409f9f1d6473e Mon Sep 17 00:00:00 2001 From: Raju Ahmed Date: Fri, 10 Jul 2026 16:54:46 +0600 Subject: [PATCH] [FSSDK-12869] prepare release 4.1.0 --- CHANGELOG.md | 16 ++++++++++++++++ package-lock.json | 22 +++++++++++----------- package.json | 4 ++-- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 002f4c1..c556cc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [4.1.0] - July 10, 2026 + +### New Features +- **Local Holdouts**: Added support for Local Holdouts, enabling holdout experiments +to be scoped to specific feature flag rules rather than applied globally. +Local Holdouts let you measure the true incremental impact of individual features +by holding out a subset of users from specific rollouts while still serving them other experiences. +See [Holdouts docs](https://support.optimizely.com/hc/en-us/articles/38941939408269-Global-holdouts) for more information. + +### Changed +- Don't send ODP identify event for single identifier + +### Bug Fixes +- Use attribute id instead of key for CMAB prediction requests +- Normalize decision event campaign_id, variation_id, and entity_id + ## [4.0.0] - May 18, 2026 v4 is a ground-up rewrite of the React SDK. For a detailed upgrade guide, see [MIGRATION.md](MIGRATION.md). For the official documentation, see the [React SDK Developer Docs](https://docs.developers.optimizely.com/feature-experimentation/docs/javascript-react-sdk). diff --git a/package-lock.json b/package-lock.json index 4731a26..bf17ee1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@optimizely/react-sdk", - "version": "4.0.0", + "version": "4.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@optimizely/react-sdk", - "version": "4.0.0", + "version": "4.1.0", "license": "Apache-2.0", "dependencies": { - "@optimizely/optimizely-sdk": "^6.4.0", + "@optimizely/optimizely-sdk": "^6.5.0", "tslib": "^2.8.1", "use-sync-external-store": "^1.6.0" }, @@ -761,15 +761,15 @@ } }, "node_modules/@optimizely/optimizely-sdk": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@optimizely/optimizely-sdk/-/optimizely-sdk-6.4.0.tgz", - "integrity": "sha512-fiauwbs9fBsxfUqSou4y5cwnwhrMa37wv4L7ANCnAMzf4lA2xg+innmYGzbBf7jHjcDZiaWiky5+75a6PSO4Mg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@optimizely/optimizely-sdk/-/optimizely-sdk-6.5.0.tgz", + "integrity": "sha512-tHGJxRo/ZmRpTQcI0L2S4sm/SBPnfF52lBRLwt2vFxWXCrAM61zRor06lR6foySnx0jRhP7H//6a03QGcCIuZw==", "license": "Apache-2.0", "dependencies": { "decompress-response": "^7.0.0", "json-schema": "^0.4.0", "murmurhash": "^2.0.1", - "uuid": "^10.0.0" + "uuid": "^13.0.2" }, "engines": { "node": ">=18.0.0" @@ -6659,16 +6659,16 @@ } }, "node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.2.tgz", + "integrity": "sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/vite": { diff --git a/package.json b/package.json index 722fdbc..54869c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@optimizely/react-sdk", - "version": "4.0.0", + "version": "4.1.0", "description": "React SDK for Optimizely Feature Experimentation, Optimizely Full Stack (legacy), and Optimizely Rollouts", "homepage": "https://github.com/optimizely/react-sdk", "repository": "https://github.com/optimizely/react-sdk", @@ -48,7 +48,7 @@ "src/**/*.{js,ts,tsx}": "eslint --fix" }, "dependencies": { - "@optimizely/optimizely-sdk": "^6.4.0", + "@optimizely/optimizely-sdk": "^6.5.0", "tslib": "^2.8.1", "use-sync-external-store": "^1.6.0" },