posthog-js-lite 3.1.0 → 3.2.0

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/lib/index.d.ts CHANGED
@@ -48,6 +48,8 @@ declare enum PostHogPersistedProperty {
48
48
  Props = "props",
49
49
  FeatureFlags = "feature_flags",
50
50
  FeatureFlagPayloads = "feature_flag_payloads",
51
+ BootstrapFeatureFlags = "bootstrap_feature_flags",
52
+ BootstrapFeatureFlagPayloads = "bootstrap_feature_flag_payloads",
51
53
  OverrideFeatureFlags = "override_feature_flags",
52
54
  Queue = "queue",
53
55
  OptedOut = "opted_out",
@@ -57,7 +59,8 @@ declare enum PostHogPersistedProperty {
57
59
  GroupProperties = "group_properties",
58
60
  InstalledAppBuild = "installed_app_build",
59
61
  InstalledAppVersion = "installed_app_version",
60
- SessionReplay = "session_replay"
62
+ SessionReplay = "session_replay",
63
+ DecideEndpointWasHit = "decide_endpoint_was_hit"
61
64
  }
62
65
  type PostHogFetchOptions = {
63
66
  method: 'GET' | 'POST' | 'PUT' | 'PATCH';
package/lib/index.esm.js CHANGED
@@ -5,6 +5,8 @@ var PostHogPersistedProperty;
5
5
  PostHogPersistedProperty["Props"] = "props";
6
6
  PostHogPersistedProperty["FeatureFlags"] = "feature_flags";
7
7
  PostHogPersistedProperty["FeatureFlagPayloads"] = "feature_flag_payloads";
8
+ PostHogPersistedProperty["BootstrapFeatureFlags"] = "bootstrap_feature_flags";
9
+ PostHogPersistedProperty["BootstrapFeatureFlagPayloads"] = "bootstrap_feature_flag_payloads";
8
10
  PostHogPersistedProperty["OverrideFeatureFlags"] = "override_feature_flags";
9
11
  PostHogPersistedProperty["Queue"] = "queue";
10
12
  PostHogPersistedProperty["OptedOut"] = "opted_out";
@@ -15,6 +17,7 @@ var PostHogPersistedProperty;
15
17
  PostHogPersistedProperty["InstalledAppBuild"] = "installed_app_build";
16
18
  PostHogPersistedProperty["InstalledAppVersion"] = "installed_app_version";
17
19
  PostHogPersistedProperty["SessionReplay"] = "session_replay";
20
+ PostHogPersistedProperty["DecideEndpointWasHit"] = "decide_endpoint_was_hit";
18
21
  })(PostHogPersistedProperty || (PostHogPersistedProperty = {}));
19
22
 
20
23
  function assert(truthyValue, message) {
@@ -1438,12 +1441,14 @@ class PostHogCore extends PostHogCoreStateless {
1438
1441
  .filter((flag) => !!bootstrapfeatureFlags[flag])
1439
1442
  .reduce((res, key) => ((res[key] = bootstrapfeatureFlags[key] || false), res), {});
1440
1443
  if (Object.keys(bootstrapFlags).length) {
1444
+ this.setPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlags, bootstrapFlags);
1441
1445
  const currentFlags = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlags) || {};
1442
1446
  const newFeatureFlags = { ...bootstrapFlags, ...currentFlags };
1443
1447
  this.setKnownFeatureFlags(newFeatureFlags);
1444
1448
  }
1445
1449
  const bootstrapFlagPayloads = bootstrap.featureFlagPayloads;
1446
1450
  if (bootstrapFlagPayloads && Object.keys(bootstrapFlagPayloads).length) {
1451
+ this.setPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagPayloads, bootstrapFlagPayloads);
1447
1452
  const currentFlagPayloads = this.getPersistedProperty(PostHogPersistedProperty.FeatureFlagPayloads) || {};
1448
1453
  const newFeatureFlagPayloads = { ...bootstrapFlagPayloads, ...currentFlagPayloads };
1449
1454
  this.setKnownFeatureFlagPayloads(newFeatureFlagPayloads);
@@ -1759,6 +1764,8 @@ class PostHogCore extends PostHogCoreStateless {
1759
1764
  }
1760
1765
  this.setKnownFeatureFlags(newFeatureFlags);
1761
1766
  this.setKnownFeatureFlagPayloads(Object.fromEntries(Object.entries(newFeatureFlagPayloads || {}).map(([k, v]) => [k, this._parsePayload(v)])));
1767
+ // Mark that we hit the /decide endpoint so we can capture this in the $feature_flag_called event
1768
+ this.setPersistedProperty(PostHogPersistedProperty.DecideEndpointWasHit, true);
1762
1769
  const sessionReplay = res?.sessionRecording;
1763
1770
  if (sessionReplay) {
1764
1771
  this.setPersistedProperty(PostHogPersistedProperty.SessionReplay, sessionReplay);
@@ -1805,6 +1812,10 @@ class PostHogCore extends PostHogCoreStateless {
1805
1812
  this.capture('$feature_flag_called', {
1806
1813
  $feature_flag: key,
1807
1814
  $feature_flag_response: response,
1815
+ $feature_flag_bootstrapped_response: this.getPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlags)?.[key],
1816
+ $feature_flag_bootstrapped_payload: this.getPersistedProperty(PostHogPersistedProperty.BootstrapFeatureFlagPayloads)?.[key],
1817
+ // If we haven't yet received a response from the /decide endpoint, we must have used the bootstrapped value
1818
+ $used_bootstrap_value: !this.getPersistedProperty(PostHogPersistedProperty.DecideEndpointWasHit),
1808
1819
  });
1809
1820
  }
1810
1821
  // If we have flags we either return the value (true or string) or false
@@ -1902,7 +1913,7 @@ class PostHogCore extends PostHogCoreStateless {
1902
1913
  }
1903
1914
  }
1904
1915
 
1905
- var version = "3.1.0";
1916
+ var version = "3.2.0";
1906
1917
 
1907
1918
  function getContext(window) {
1908
1919
  let context = {};