@kameleoon/react-sdk 10.10.0 → 10.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,13 +1,31 @@
1
1
  # Change Log
2
2
 
3
+ ## 10.10.2 (2025-05-15)
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed an issue with the [session merging][SessionMerging] feature that could prevent registered users from being correctly included in experiment results when they were linked to an anonymous user during the same visitor session.
8
+ - Updated dependencies
9
+ - @kameleoon/javascript-sdk@4.9.2
10
+
11
+ [SessionMerging]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/react-js-sdk/#using-custom-data-for-session-merging
12
+
13
+ ## 10.10.1 (2025-04-08)
14
+
15
+ ### Patch Changes
16
+
17
+ - Changed the order in which **conversion** and **experiment** events are sent. This may lead to more accurate **visit**-level experiment reporting.
18
+ - Updated dependencies
19
+ - @kameleoon/javascript-sdk@4.9.1
20
+
3
21
  ## 10.10.0 (2025-04-04)
4
22
 
5
23
  ### Features
6
24
 
7
- - We've introduced a new [`KameleoonProviderSSR`](KameleoonProviderSSR), which is now the **recommended way** to use React with any server-side rendering (SSR) framework.
8
- Instead of requiring a manually created [`KameleoonClient`](createClient), this new provider accepts [`SDKParameters`](SDKParameters) and **automatically creates** a `KameleoonClient` instance upon first use.
9
- To avoid unexpected issues, make sure that all calls to `KameleoonClient` methods happen inside a `useEffect` (or an equivalent hook) — check our code examples for guidance.
10
- We strongly recommend migrating to this new provider to ensure compatibility with both Next.js routing systems: the **Pages Router** and the **App Router**.
25
+ - We've introduced a new [`KameleoonProviderSSR`](KameleoonProviderSSR), which is now the **recommended way** to use React with any server-side rendering (SSR) framework:
26
+ - Instead of requiring a manually created [`KameleoonClient`](createClient), this new provider accepts [`SDKParameters`](SDKParameters) and **automatically creates** a `KameleoonClient` instance upon first use.
27
+ - To avoid unexpected issues, make sure that all calls to `KameleoonClient` methods happen inside a `useEffect` (or an equivalent hook) — check our code examples for guidance.
28
+ - We strongly recommend migrating to this new provider to ensure compatibility with both Next.js routing systems: the **Pages Router** and the **App Router**.
11
29
 
12
30
  [KameleoonProviderSSR]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/react-js-sdk/#kameleoonproviderssr
13
31
  [createClient]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/react-js-sdk/#create-the-kameleoon-client
@@ -1 +1 @@
1
- "use strict";var _javascriptSdk=require("@kameleoon/javascript-sdk");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createClient=createClient;function createClient(a){let{siteCode:b,configuration:c,externals:d,stubMode:e}=a;const f=new _javascriptSdk.KameleoonClient({siteCode:b,configuration:c,externals:d,_internals:{packageInfo:{type:_javascriptSdk.SdkLanguageType.REACT,version:"10.10.0",isServer:!1},prng:null===d||void 0===d?void 0:d.prng},stubMode:e});return f}
1
+ "use strict";var _javascriptSdk=require("@kameleoon/javascript-sdk");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createClient=createClient;function createClient(a){let{siteCode:b,configuration:c,externals:d,stubMode:e}=a;const f=new _javascriptSdk.KameleoonClient({siteCode:b,configuration:c,externals:d,_internals:{packageInfo:{type:_javascriptSdk.SdkLanguageType.REACT,version:"10.10.2",isServer:!1},prng:null===d||void 0===d?void 0:d.prng},stubMode:e});return f}
package/dist/useData.js CHANGED
@@ -1 +1 @@
1
- "use strict";"use client";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useData=useData;var _react=require("react"),_useKameleoonContext=require("./useKameleoonContext");function useData(){const a=(0,_useKameleoonContext.useKameleoonContext)();let b=a?a.kameleoonClient:null;const c=(0,_react.useCallback)(function(c){b=(0,_useKameleoonContext.fetchClientFromContext)(a);for(var d=arguments.length,e=Array(1<d?d-1:0),f=1;f<d;f++)e[f-1]=arguments[f];b.addData(c,...e)},[a]),d=(0,_react.useCallback)(c=>{b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.flush(c)},[a]),e=(0,_react.useCallback)(c=>{let{visitorCode:d,goalId:e,revenue:f,negative:g,metadata:h}=c;b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.trackConversion({visitorCode:d,goalId:e,revenue:f,negative:g,metadata:h})},[b]),f=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getRemoteData(c)),[a]),g=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getRemoteVisitorData(c)),[a]),h=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getVisitorWarehouseAudience(c)),[a]);return{getRemoteData:f,getRemoteVisitorData:g,getVisitorWarehouseAudience:h,trackConversion:e,addData:c,flush:d}}
1
+ "use strict";"use client";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useData=useData;var _react=require("react"),_useKameleoonContext=require("./useKameleoonContext");function useData(){const a=(0,_useKameleoonContext.useKameleoonContext)();let b=a?a.kameleoonClient:null;const c=(0,_react.useCallback)(function(c){b=(0,_useKameleoonContext.fetchClientFromContext)(a);for(var d=arguments.length,e=Array(1<d?d-1:0),f=1;f<d;f++)e[f-1]=arguments[f];b.addData(c,...e)},[a]),d=(0,_react.useCallback)(c=>{b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.flush(c)},[a]),e=(0,_react.useCallback)(c=>{let{visitorCode:d,goalId:e,revenue:f,negative:g,metadata:h}=c;b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.trackConversion({visitorCode:d,goalId:e,revenue:f,negative:g,metadata:h})},[a]),f=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getRemoteData(c)),[a]),g=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getRemoteVisitorData(c)),[a]),h=(0,_react.useCallback)(async c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),await b.getVisitorWarehouseAudience(c)),[a]);return{getRemoteData:f,getRemoteVisitorData:g,getVisitorWarehouseAudience:h,trackConversion:e,addData:c,flush:d}}
@@ -1 +1 @@
1
- "use strict";"use client";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useFeatureFlag=useFeatureFlag;var _react=require("react"),_useKameleoonContext=require("./useKameleoonContext");function useFeatureFlag(){const a=(0,_useKameleoonContext.useKameleoonContext)();let b=a?a.kameleoonClient:null;const c=(0,_react.useCallback)((c,d)=>{if(b=(0,_useKameleoonContext.fetchClientFromContext)(a),"string"==typeof c){if(!d)throw new Error("[Kameleoon React SDK Error]: Overload is not used correctly. The second parameter must be provided when the first parameter is a string");return b.isFeatureFlagActive(c,d)}return b.isFeatureFlagActive(c)},[a]),d=(0,_react.useCallback)(c=>{let{visitorCode:d,featureKey:e,track:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVariation({visitorCode:d,featureKey:e,track:f})},[a]),e=(0,_react.useCallback)(c=>{let{visitorCode:d,onlyActive:e,track:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVariations({visitorCode:d,onlyActive:e,track:f})},[b]),f=(0,_react.useCallback)((c,d)=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariationKey(c,d)),[a]),g=(0,_react.useCallback)(c=>{let{visitorCode:d,featureKey:e,variableKey:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariable({visitorCode:d,featureKey:e,variableKey:f})},[a]),h=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVisitorFeatureFlags(c)),[a]),i=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getActiveFeatureFlags(c)),[a]),j=(0,_react.useCallback)(()=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlags()),[a]),k=(0,_react.useCallback)((c,d)=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariables(c,d)),[a]),l=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getEngineTrackingCode(c)),[a]),m=(0,_react.useCallback)(c=>{let{visitorCode:d,experimentId:e,variationKey:f,forceTargeting:g}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.setForcedVariation({visitorCode:d,experimentId:e,variationKey:f,forceTargeting:g})},[a]);return{getActiveFeatureFlags:i,getVariation:d,getVariations:e,getFeatureFlags:j,isFeatureFlagActive:c,getEngineTrackingCode:l,getVisitorFeatureFlags:h,getFeatureFlagVariable:g,getFeatureFlagVariables:k,getFeatureFlagVariationKey:f,setForcedVariation:m}}
1
+ "use strict";"use client";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useFeatureFlag=useFeatureFlag;var _react=require("react"),_useKameleoonContext=require("./useKameleoonContext");function useFeatureFlag(){const a=(0,_useKameleoonContext.useKameleoonContext)();let b=a?a.kameleoonClient:null;const c=(0,_react.useCallback)((c,d)=>{if(b=(0,_useKameleoonContext.fetchClientFromContext)(a),"string"==typeof c){if(!d)throw new Error("[Kameleoon React SDK Error]: Overload is not used correctly. The second parameter must be provided when the first parameter is a string");return b.isFeatureFlagActive(c,d)}return b.isFeatureFlagActive(c)},[a]),d=(0,_react.useCallback)(c=>{let{visitorCode:d,featureKey:e,track:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVariation({visitorCode:d,featureKey:e,track:f})},[a]),e=(0,_react.useCallback)(c=>{let{visitorCode:d,onlyActive:e,track:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVariations({visitorCode:d,onlyActive:e,track:f})},[a]),f=(0,_react.useCallback)((c,d)=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariationKey(c,d)),[a]),g=(0,_react.useCallback)(c=>{let{visitorCode:d,featureKey:e,variableKey:f}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariable({visitorCode:d,featureKey:e,variableKey:f})},[a]),h=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getVisitorFeatureFlags(c)),[a]),i=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getActiveFeatureFlags(c)),[a]),j=(0,_react.useCallback)(()=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlags()),[a]),k=(0,_react.useCallback)((c,d)=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getFeatureFlagVariables(c,d)),[a]),l=(0,_react.useCallback)(c=>(b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.getEngineTrackingCode(c)),[a]),m=(0,_react.useCallback)(c=>{let{visitorCode:d,experimentId:e,variationKey:f,forceTargeting:g}=c;return b=(0,_useKameleoonContext.fetchClientFromContext)(a),b.setForcedVariation({visitorCode:d,experimentId:e,variationKey:f,forceTargeting:g})},[a]);return{getActiveFeatureFlags:i,getVariation:d,getVariations:e,getFeatureFlags:j,isFeatureFlagActive:c,getEngineTrackingCode:l,getVisitorFeatureFlags:h,getFeatureFlagVariable:g,getFeatureFlagVariables:k,getFeatureFlagVariationKey:f,setForcedVariation:m}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kameleoon/react-sdk",
3
- "version": "10.10.0",
3
+ "version": "10.10.2",
4
4
  "description": "Kameleoon React SDK",
5
5
  "files": [
6
6
  "dist"
@@ -40,7 +40,7 @@
40
40
  ],
41
41
  "license": "ISC",
42
42
  "dependencies": {
43
- "@kameleoon/javascript-sdk": "4.9.0"
43
+ "@kameleoon/javascript-sdk": "4.9.2"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0"