From 757273389845d6478a399a6b9b3d77f1b5e9c52c Mon Sep 17 00:00:00 2001 From: Jae Kim <45045038+jaeopt@users.noreply.github.com> Date: Mon, 4 May 2026 17:20:08 -0700 Subject: [PATCH] [FSSDK-12546] release react-sdk v3.5.0 --- CHANGELOG.md | 16 +++++----- package.json | 85 +++++++++++++++++++++++----------------------------- 2 files changed, 47 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f58836..8f13f54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,17 @@ # Changelog -## [3.4.0] - Mar 9, 2026 +## [3.5.0] +May 4, 2026 ### New Features -- Add a server-safe bundle that is automatically resolved when imported in React Server Components, excluding client-only React APIs ([#318](https://github.com/optimizely/react-sdk/pull/318)) -- Add `qualifiedSegments` prop to `OptimizelyProvider` for passing pre-fetched ODP segments, enabling synchronous ODP-based decisions during SSR ([#318](https://github.com/optimizely/react-sdk/pull/318)) -- Add `getQualifiedSegments` utility for fetching ODP audience segments server-side ([#318](https://github.com/optimizely/react-sdk/pull/318)) -### Enhancements -- Improve `useExperiment`, `useFeature`, and `useDecision` hooks to compute decisions when config and user context (including segments) are available, without waiting for `onReady` ([#318](https://github.com/optimizely/react-sdk/pull/318)) -- Add comprehensive server-side rendering integration guide covering SSR, SSG, and App Router patterns ([#318](https://github.com/optimizely/react-sdk/pull/318)) +**Feature Rollout**: Added support for Feature Rollouts, a new experiment type +combining Targeted Delivery simplicity with A/B test measurement capabilities. +Feature Rollouts enable progressive rollouts with full impact analytics, metric tracking, +and confidence intervals. +See [Feature Rollout docs](https://support.optimizely.com/hc/en-us/articles/45552846481037-Run-Feature-Rollouts-in-Feature-Experimentation) for more information. + +- testapp update ([#323](https://github.com/optimizely/react-sdk/pull/323)) ## [3.3.1] - Dec 8, 2025 diff --git a/package.json b/package.json index d0d0ec4..1c4bfc3 100644 --- a/package.json +++ b/package.json @@ -1,31 +1,24 @@ { "name": "@optimizely/react-sdk", - "version": "3.4.0", + "version": "3.5.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", "license": "Apache-2.0", - "module": "dist/react-sdk.es.js", - "types": "dist/index.d.ts", - "main": "dist/react-sdk.js", - "browser": "dist/react-sdk.js", + "main": "./dist/react-sdk.es.min.mjs", + "types": "./dist/index.d.ts", "exports": { ".": { "react-server": { "types": "./dist/server.d.ts", - "import": "./dist/server.es.js", - "require": "./dist/server.js", - "default": "./dist/server.js" + "import": "./dist/server.es.min.mjs", + "default": "./dist/server.es.min.mjs" }, "types": "./dist/index.d.ts", - "import": "./dist/react-sdk.es.js", - "require": "./dist/react-sdk.js", - "default": "./dist/react-sdk.js" + "import": "./dist/react-sdk.es.min.mjs", + "default": "./dist/react-sdk.es.min.mjs" } }, - "directories": { - "lib": "lib" - }, "files": [ "dist", "LICENSE", @@ -33,62 +26,60 @@ "README.md" ], "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "scripts": { - "tsc": "rm -rf lib/ && tsc", - "build": "rm -rf dist/ && node ./scripts/build.js", - "build:win": "(if exist dist rd /s/q dist) && node ./scripts/winbuild.js", - "lint": "tsc --noEmit && eslint 'src/**/*.{js,ts,tsx}' --quiet --fix", - "test": "jest --silent", - "test-coverage": "jest --coverage --coverageReporters=\"text-summary\" --silent", + "clean": "rm -rf dist .build", + "clean:win": "(if exist dist rd /s/q dist) && (if exist .build rd /s/q .build)", + "prebuild": "npm run clean", + "build": "tsc && rollup -c", + "build:win": "npm run clean:win && tsc && rollup -c", + "lint": "tsc --noEmit && eslint 'src/**/*.{js,ts,tsx}' --fix", + "test": "vitest run", + "test:watch": "vitest", + "test:coverage": "vitest run --coverage", "prepublishOnly": "npm run test && npm run build", - "prepare": "npm run build && husky install" + "prepare": "npm run build && husky" }, "publishConfig": { "access": "public" }, "lint-staged": { - "**/*.{js,ts,tsx}": [ - "yarn run lint", - "yarn run test --findRelatedTests" - ] + "src/**/*.{js,ts,tsx}": "eslint --fix" }, "dependencies": { - "@optimizely/optimizely-sdk": "^5.4.1", - "hoist-non-react-statics": "^3.3.2" + "@optimizely/optimizely-sdk": "^6.3.0", + "tslib": "^2.8.1", + "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": ">=16.8.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^26.0.1", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.7", - "@rollup/plugin-terser": "0.4.2", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-terser": "^0.4.4", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^14.3.0", "@types/hoist-non-react-statics": "^3.3.5", - "@types/jest": "^29.5.12", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6", - "@typescript-eslint/eslint-plugin": "^5.6.2", - "@typescript-eslint/parser": "^5.6.2", + "@types/react": "^18.3.0", + "@types/react-dom": "^18.3.0", + "@types/use-sync-external-store": "^1.5.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "@vitest/coverage-v8": "^4.0.18", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-hooks": "^4.6.2", - "husky": "8.0.3", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "lint-staged": "13.2.3", + "happy-dom": "^20.4.0", + "husky": "^9.0.0", + "lint-staged": "^15.0.0", "prettier": "^3.3.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "rollup": "^3.29.4", - "rollup-plugin-typescript2": "^0.36.0", - "ts-jest": "^29.2.3", - "typescript": "^5.5.4" + "react": "^18.3.0", + "react-dom": "^18.3.0", + "rollup": "^4.55.1", + "typescript": "^5.9.3", + "vitest": "^4.0.18" } }