Files
zeekay 043ac58d3c chore: sweep upstream brand from ALL files; restore LICENSE/NOTICE attribution
Extends the sweep beyond packages/ to the whole repo (178 files): workflows,
.eslintrc, playground, examples, tooling, root docs. Zero upstream-brand refs and
zero such filenames outside the exemptions.

REVERTS A LICENSING ERROR (from earlier rebrand e43ab1af, not this sweep):
- LICENSE had its copyright holder rewritten to 'Insights'. Restored to the real
  holder: 'Copyright 2020 Posthog / Hiberly, Inc.' (+ Mixpanel, Inc.).
- NOTICE credited a non-existent upstream (github.com/getinsights/insights-js).
  Restored to the real one: github.com/PostHog/posthog-js.
Apache-2.0 4(c) requires retaining upstream attribution; rewriting a third
party's copyright line falsifies ownership. Both files are now excluded from the
guard and documented as exempt in LLM.md.

Also:
- Deleted junk: AGENTS.md~upstream_main (merge leftover), the now-obsolete
  rebrand script; renamed upload-*-s3.ts tooling (still used by cli.ts).
- Removed 42 stale playground/example pnpm-lock.yaml files: they pinned upstream
  packages the package.json no longer references. Regenerated on install —
  sed-ing a lockfile would corrupt its integrity hashes.
- Guard renamed no-posthog.yml -> brand-guard.yml and now assembles the pattern
  at runtime, so no filename or file content carries the string (the previous
  guard was swept by its own rule, inverting it to forbid 'insights').
2026-07-16 09:54:05 -07:00

61 KiB
Raw Permalink Blame History

@hanzo/insights-node

5.35.11

Patch Changes

5.35.10

Patch Changes

5.35.9

Patch Changes

5.35.8

Patch Changes

5.35.7

Patch Changes

5.35.6

Patch Changes

5.35.5

Patch Changes

5.35.4

Patch Changes

5.35.3

Patch Changes

5.35.2

Patch Changes

  • #3658 5d7a2d3 Thanks @gustavohstrassburger! - Include group context in the $feature_flag_called deduplication key in _captureFlagCalledEventIfNeeded, so events fire independently per group combination. (2026-05-25)

5.35.1

Patch Changes

5.35.0

Minor Changes

  • #3642 18ea8b5 Thanks @dustinbyrne! - Promote feature flag definition cache provider types to the main insights-node export and deprecate insights-node/experimental imports. (2026-05-21)

Patch Changes

5.34.10

Patch Changes

  • #3643 f42f371 Thanks @dmarticus! - Reject semver values with leading zeros in local flag evaluation. Per semver 2.0.0 §2, numeric identifiers must not include leading zeros — values like 1.07.3 are not valid semver and should not match targeting conditions. Both override values and flag values are now validated; invalid inputs surface as InconclusiveMatchError so the condition does not match. (2026-05-21)

5.34.9

Patch Changes

5.34.8

Patch Changes

  • #3640 12ef3f6 Thanks @hpouillot! - Fix identifyImmediate to await the underlying network request. Previously the returned promise resolved before the $identify event was sent, causing events to be dropped when called from short-lived runtimes (Vercel/Cloudflare Workers, Convex actions) that exit immediately after await. (2026-05-21)

5.34.7

Patch Changes

5.34.6

Patch Changes

  • #3623 e119eec Thanks @richardsolomou! - Fix six edge cases in local feature flag evaluation. gt/gte/lt/lte now compare numerically when both sides parse as finite numbers — previously a string override like "10" against numeric value 9 slipped into lexicographic comparison and returned false, and parseFloat's NaN return value leaked through the old != null guard. is_not_set now resolves locally — true when the property key is absent, false when present — instead of always throwing InconclusiveMatchError and forcing the flag to return undefined. Flag-level condition properties with negation: true are now correctly inverted, matching the existing cohort-path behavior in matchPropertyGroup. An inactive flag (active: false) now short-circuits to false even when ensure_experience_continuity: true — previously it threw InconclusiveMatchError and resolved to undefined. is_set now returns true for properties whose value is null or undefined as long as the key is present — is_set is about key presence, not value. Cohort property groups containing a flag-type property no longer silently skip the dependency; the cohort eval is now marked inconclusive so the flag returns undefined instead of a wrong definitive answer. (2026-05-19)

5.34.5

Patch Changes

5.34.4

Patch Changes

5.34.3

Patch Changes

5.34.2

Patch Changes

5.34.1

Patch Changes

5.34.0

Minor Changes

  • #3599 ad60818 Thanks @turnipdabeets! - Expose UUID and cookie helpers from @insights/core and insights-node for users managing distinct_id outside the browser SDK (e.g. Lambda functions handing out cross-domain redirects). The helpers were already implemented in @insights/next — this change lifts them to core so all SDKs can re-use them. @insights/next now re-exports the same surface from @insights/core to keep existing consumers working without churn. Closes #2143. (2026-05-12)

Patch Changes

5.33.7

Patch Changes

5.33.6

Patch Changes

5.33.5

Patch Changes

5.33.4

Patch Changes

5.33.3

Patch Changes

5.33.2

Patch Changes

5.33.1

Patch Changes

5.33.0

Minor Changes

  • #3476 f8bc02f Thanks @dmarticus! - Add evaluateFlags() and a new flags option on capture() so a single /flags request powers both flag branching and event enrichment per incoming request:

    const flags = await insights.evaluateFlags(distinctId, { personProperties: { plan: 'enterprise' } })
    if (flags.isEnabled('new-dashboard')) {
      renderNewDashboard()
    }
    insights.capture({ distinctId, event: 'page_viewed', flags })
    

    The returned FeatureFlagEvaluations snapshot exposes isEnabled(), getFlag(), getFlagPayload() for branching, plus onlyAccessed() and only([keys]) for filtering which flags get attached to a captured event. Pass flagKeys: [...] to evaluateFlags() to scope the underlying /flags request itself. captureException() / captureExceptionImmediate() accept a flags argument so $exception events carry the same flag context as the rest of your request's events.

    Deprecates isFeatureEnabled(), getFeatureFlag(), getFeatureFlagPayload(), and capture({ sendFeatureFlags }). They continue to work but now log a deduped [Insights] ... is deprecated warning the first time they're used. Removal is planned for the next major version. (2026-05-02)

5.32.1

Patch Changes

5.32.0

Minor Changes

5.31.0

Minor Changes

  • #3491 974e4b2 Thanks @dustinbyrne! - Add Express and NestJS request context support for Insights tracing headers. (2026-04-29)

5.30.8

Patch Changes

5.30.7

Patch Changes

5.30.6

Patch Changes

5.30.5

Patch Changes

5.30.4

Patch Changes

5.30.3

Patch Changes

5.30.2

Patch Changes

5.30.1

Patch Changes

5.30.0

Minor Changes

5.29.7

Patch Changes

5.29.6

Patch Changes

5.29.5

Patch Changes

5.29.4

Patch Changes

  • #3407 b26c57c Thanks @patricio-insights! - fix(flags): switch local evaluation polling from /api/feature_flag/local_evaluation to /flags/definitions (2026-04-21)

5.29.3

Patch Changes

5.29.2

Patch Changes

5.29.1

Patch Changes

5.29.0

Minor Changes

Patch Changes

5.28.11

Patch Changes

5.28.10

Patch Changes

5.28.9

Patch Changes

5.28.8

Patch Changes

5.28.7

Patch Changes

5.28.6

Patch Changes

5.28.5

Patch Changes

5.28.4

Patch Changes

5.28.3

Patch Changes

5.28.2

Patch Changes

5.28.1

Patch Changes

5.28.0

Minor Changes

  • #3197 33e9fb4 Thanks @hpouillot! - Add nestjs integration with interceptor for context propagation (2026-03-05)

5.27.1

Patch Changes

  • #3186 4601bbc Thanks @dmarticus! - Add semver comparison operators to local feature flag evaluation: semver_eq, semver_neq, semver_gt, semver_gte, semver_lt, semver_lte, semver_tilde, semver_caret, and semver_wildcard (2026-03-05)

5.27.0

Minor Changes

5.26.2

Patch Changes

5.26.1

Patch Changes

  • #3163 0dc03b0 Thanks @gustavohstrassburger! - Improve local feature flag evaluation debugging by adding timestamp tracking. Locally evaluated flags now include timing information in $feature_flag_called events to help debug cache TTL and timing issues, matching what's available for remote evaluation. (2026-03-02)

5.26.0

Minor Changes

  • #3144 d43e90d Thanks @dustinbyrne! - feat: getFeatureFlagResult, getAllFlags, getAllFlagsAndPayloads now have context-sensitive overrides which do not require distinctId as a parameter, instead reading it from the current context. (2026-02-25)

  • #3144 d43e90d Thanks @dustinbyrne! - feat: Add enterContext() to attach a context to the current async execution context (2026-02-25)

5.25.0

Minor Changes

  • #3132 301e75a Thanks @benjackwhite! - Officially adds support for super properties added with .register (it was available as a function but did not actually work previously) (2026-02-23)

5.24.17

Patch Changes

5.24.16

Patch Changes

5.24.15

Patch Changes

5.24.14

Patch Changes

5.24.13

Patch Changes

5.24.12

Patch Changes

5.24.11

Patch Changes

5.24.10

Patch Changes

5.24.9

Patch Changes

5.24.8

Patch Changes

5.24.7

Patch Changes

5.24.6

Patch Changes

5.24.5

Patch Changes

  • #2987 25f4173 Thanks @marandaneto! - fix: before_send in node inferred the type as any instead of EventMessage or null (2026-01-29)

5.24.4

Patch Changes

5.24.3

Patch Changes

5.24.2

Patch Changes

5.24.1

Patch Changes

5.24.0

Minor Changes

  • #2897 b7fa003 Thanks @matheus-vb! - Add $feature_flag_error to $feature_flag_called events to track flag evaluation failures (2026-01-20)

Patch Changes

5.23.0

Minor Changes

  • #2900 23770e9 Thanks @dmarticus! - Renamed evaluationEnvironments to evaluationContexts for clearer semantics. The term "contexts" better reflects that this feature is for specifying evaluation contexts (e.g., "web", "mobile", "checkout") rather than deployment environments (e.g., "staging", "production").

    Deprecated

    • insights.init option evaluationEnvironments is now deprecated in favor of evaluationContexts. The old property will continue to work and will log a deprecation warning. It will be removed in a future major version.

    Migration Guide

    // Before
    insights.init('<ph_project_api_key>', {
        evaluationEnvironments: ['production', 'web', 'checkout'],
    })
    
    // After
    insights.init('<ph_project_api_key>', {
        evaluationContexts: ['production', 'web', 'checkout'],
    })
    ``` (2026-01-19)
    

Patch Changes

5.22.0

Minor Changes

5.21.2

Patch Changes

  • #2920 099ee0c Thanks @haacked! - Add getFeatureFlagResult method to retrieve flag value and payload in a single API call. (2026-01-19)

5.21.1

Patch Changes

5.21.0

Minor Changes

  • #2883 640fcdd Thanks @ordehi! - Add warning when experience continuity flags are detected during local evaluation, and new strictLocalEvaluation option.

    Warning: When using local evaluation with flags that have experience continuity enabled, a warning is now emitted explaining that these flags will cause server requests on every evaluation, negating local evaluation cost savings.

    New option: strictLocalEvaluation: true can be set at client init to prevent all server fallback for flag evaluations. Flags that cannot be evaluated locally will return undefined instead of making a server request. This is useful in high-volume environments where you want to guarantee no unexpected server costs. (2026-01-14)

5.20.0

Minor Changes

  • #2593 fba9fb2 Thanks @daibhin! - track LLMA trace_id on exceptions and exception_id on traces (2026-01-08)

Patch Changes

5.19.0

Minor Changes

  • #2840 84e4140 Thanks @ordehi! - Add overrideFeatureFlags() method for local testing and development (2026-01-06)

5.18.1

Patch Changes

  • #2825 5a4a8e2 Thanks @haacked! - getFeatureFlag() respects exponential backoff for HTTP 401, 403, and 429 responses. (2025-12-30)

5.18.0

Minor Changes

  • #2782 04065b9 Thanks @haacked! - Add $feature_flag_error to $feature_flag_called events when an error occurred while trying evaluate a flag (2025-12-22)

Patch Changes

5.17.4

Patch Changes

5.17.3

Patch Changes

5.17.2

Patch Changes

  • #2678 ca4436e Thanks @haacked! - Local evaluation polling sends If-None-Match header with latest etag to reduce bandwidth when no flags have changed. (2025-12-04)

5.17.1

Patch Changes

5.17.0

Minor Changes

5.16.0

Minor Changes

  • #2603 e1617d9 Thanks @dmarticus! - add $feature_flag_evaluated_at properties to $feature_flag_called events (2025-12-03)

Patch Changes

5.15.0

Minor Changes

5.14.1

Patch Changes

5.14.0

Minor Changes

Patch Changes

5.13.3

Patch Changes

5.13.2

Patch Changes

5.13.1

Patch Changes

5.13.0

Minor Changes

  • #2600 8972000 Thanks @dustinbyrne! - fix: fetch is called without a bound context

    This prevents issues in edge runtimes such as Cloudflare (2025-11-19)

Patch Changes

5.12.0

Minor Changes

5.11.2

Patch Changes

5.11.1

Patch Changes

5.11.0

Minor Changes

  • #2520 068d55e Thanks @lricoy! - Add bot pageview collection behind preview flag. Enables tracking bot traffic as $bot_pageview events when the __preview_capture_bot_pageviews flag is enabled.

Patch Changes

5.10.4

Patch Changes

5.10.3

Patch Changes

5.10.2

Patch Changes

  • #2470 a581328 Thanks @luke-belton! - Fix crash caused by calling getFeatureFlagPayloads for a flag that depends on a static cohort

5.10.1

Patch Changes

  • #2465 1721aba Thanks @haacked! - Fix bug where flag doesn't fallback to the server correctly when one condition is a static cohort condition but a later condition matches.

5.10.0

Minor Changes

  • #2417 daf919b Thanks @dmarticus! - feat: Add evaluation environments support for feature flags

    This PR implements support for evaluation environments in the @hanzo/insights-node SDK, allowing users to specify which environment tags their SDK instance should use when evaluating feature flags.

    Users can now configure the SDK with an evaluationEnvironments option:

    const client = new Insights('api-key', {
      host: 'https://app.insights.hanzo.ai',
      evaluationEnvironments: ['production', 'backend', 'api'],
    })
    

    When set, only feature flags that have at least one matching evaluation tag will be evaluated for this SDK instance. Feature flags with no evaluation tags will always be evaluated.

Patch Changes

5.9.5

Patch Changes

5.9.4

Patch Changes

5.9.3

Patch Changes

  • #2406 ea58d34 Thanks @dmarticus! - Use SubtleCrypto directly to compute SHA-1 hashes, fix "module not found" warning in edge runtimes.

5.9.2

Patch Changes

5.9.1

Patch Changes

5.9.0

Minor Changes

Patch Changes

5.8.8

Patch Changes

  • #2350 a1ae750 Thanks @andyzzhao! - feature flag local evaluation will not sort condition sets with variant overrides to the top

5.8.7

Patch Changes

  • fix: don't sort condition sets with variant overrides to the top - conditions are now evaluated in their original order to match server-side logic

5.8.6

Patch Changes

5.8.5

Patch Changes

5.8.4

Patch Changes

  • #2312 dff84c6 Thanks @daibhin! - chore: allow Insights exception capture to be skipped in Sentry integration

5.8.3

Patch Changes

  • #2306 30873bc Thanks @haacked! - Fix memory leak when calling getAllFlags and getAllFlagsAndPayloads

5.8.2

Patch Changes

  • #2285 20c1b38 Thanks @dustinbyrne! - getFeatureFlag and isFeatureEnabled now respect the sendFeatureFlagEvent client option if not explicitly specified when called.

  • #2285 20c1b38 Thanks @dustinbyrne! - The sendFeatureFlagEvents option for getFeatureFlagPayload is now marked as deprecated as it is not used.

5.8.1

Patch Changes

5.8.0

Minor Changes

Patch Changes

5.7.0

Minor Changes

5.6.0 – 2025-07-15

  1. Added support for filtering feature flags with flagKeys parameter in sendFeatureFlags options

5.5.1 – 2025-07-15

  1. wrap InconclusiveMatchErrors in logMsgIfDebug for local flag evaluations on sendFeatureFlags

5.5.0 – 2025-07-10

  1. feat: make the sendFeatureFlags parameter more declarative and ergonomic. Implementation notes below:

Modified sendFeatureFlags to be type boolean | SendFeatureFlagsOptions, (which is defined thusly)

export interface SendFeatureFlagsOptions {
  onlyEvaluateLocally?: boolean
  personProperties?: Record<string, any>
  groupProperties?: Record<string, Record<string, any>>
}

This lets users declare (1) whether to use local evaluation, and (2) which properties to supply explicitly for that evaluation, every time they want to send feature flags. It also supports the old boolean behavior if folks don't care and would rather the SDK infer it.

Now, you can make calls like this

insights.captureImmediate({
  distinctId: 'user123',
  event: 'test event',
  sendFeatureFlags: {
    onlyEvaluateLocally: true,
    personProperties: {
      plan: 'premium',
    },
  },
  properties: {
    foo: 'bar',
  },
})

or simply

insights.captureImmediate({
  distinctId: "user123",
  event: "test event",
  sendFeatureFlags: true // this will still infer local evaluation if it appears to be configured, but it won't try to pull properties from the event message
  properties: {
    foo: "bar",
  },
});

5.4.0 – 2025-07-09

feat: respect local evaluation preferences with sendFeatureFlags; add property overrides from the event to those local computations so that the locally evaluated flags can be more accuratee. NB: this change chagnes the default behavior of capture and captureImmediately – we will now only send feature flag data along with those events if sendFeatureFlags is explicitly specified, instead of optimistically sending along locally evaluated flags by default.

5.3.1 - 2025-07-07

  1. feat: decouple feature flag local evaluation from personal API keys; support decrypting remote config payloads without relying on the feature flags poller

5.2.1 - 2025-07-07

  1. feat: add captureExceptionImmediate method on insights client

5.1.1 - 2025-06-16

  1. fix: Handle double-encoded JSON payloads from the remote config endpoint

5.1.0 - 2025-06-12

  1. chore: use /flags?v=2&config=true instead of /decide?v=4 for the flag evaluation backend

5.0.0 - 2025-06-10

Removed

  1. Remove is_simple_flag from InsightsFeatureFlag type
  2. Remove captureMode in favor of json capture mode only
  3. Remove deprecated personProperties and groupProperties in favor of setPersonPropertiesForFlags and setGroupPropertiesForFlags

Breaking changes

  1. feat: migrate to native fetch, Node 20+ required
  2. Insights Node now compresses messages with GZip before sending them to our servers when the runtime supports compression. This reduces network bandwidth and improves performance. Network traffic interceptors and test assertions on payloads must handle GZip decompression to inspect the data. Alternatively, you can disable compression by setting disableCompression: true in the client configuration during tests.

5.0.0-alpha.1 - 2025-04-29

Breaking changes

  1. feat: migrate to native fetch, Node 18+ required

Added

  1. rotate session id if expired after 24 hours

4.17.2 - 2025-05-22

  1. chore: improve event prop types
  2. fix: no throw in sendImmediate

4.17.1 - 2025-05-02

  1. fix: fix imports for old node.js version

4.17.0 - 2025-05-02

  1. fix: specific exports for edge environments

4.16.0 - 2025-05-01

  1. chore: improve flush event

4.15.0 - 2025-04-30

  1. chore: add immediate-mode
  2. chore: better error logging when flushing events

4.14.0 - 2025-04-24

  1. feat: Add super properties as a concept to the Node SDK

4.13.0 - 2025-04-21

  1. feat: Add method to wait for local evaluation feature flag definitions to be loaded

4.12.0 – 2025-04-17

  1. chore: roll out new feature flag evaluation backend to majority of customers

4.11.7 - 2025-04-16

  1. fix: do not reference node: prefix as it is not supported by Next.js edge runtime

4.11.6 - 2025-04-15

Fixed

  1. move survey export top-level declarations

4.11.5 - 2025-04-14

Fixed

  1. export and declare top-level declarations for surveys

4.11.4 - 2025-04-14

Fixed

  1. export top-level declarations for surveys

4.11.3 - 2025-04-08

Fixed

  1. do not access fs or readline in when not available e.g. edge environments

4.11.2 - 2025-04-07

Fixed

  1. chore: bump axios to 1.8.2 (fixes CVE-2025-27152)

4.11.1 - 2025-03-28

Fixed

  1. getFeatureFlag, isFeatureEnabled, and getAllFlagsAndPayloads now return undefined if the flag is not found.

4.11.0 - 2025-03-28

Added

  1. $feature_flag_called event now includes additional properties such as feature_flag_id, feature_flag_version, feature_flag_reason, and feature_flag_request_id.

Fixed

  1. apiKey cannot be empty.

4.10.2 - 2025-03-06

  1. Add: log error message when feature flags have computation errors.

4.10.1 – 2025-03-06

  1. Fix: only set platform on Insights exception frame properties
  2. Fix: prevent fetch floods when rate-limited.

4.10.0 – 2025-03-06

  1. Attach requestId to $feature_flag_called if present in /decide response

4.9.0 – 2025-03-04

  1. Allow feature flags to be evaluated individually when local evaluation is not being used

4.8.1 – 2025-02-26

  1. Supports gracefully handling quotaLimited responses from the Insights API for feature flag evaluation

4.8.0 - 2025-02-26

  1. Add guardrails and exponential error backoff in the feature flag local evaluation poller to prevent high rates of 401/403 traffic towards /local_evaluation

4.7.0 - 2025-02-20

Added

  1. Adds the ability to capture user feedback in LLM Observability using the captureTraceFeedback and captureTraceMetric methods.

4.6.0 - 2025-02-12

Added

  1. Adds ability to fetch decrypted remote config flag payloads via getRemoteConfigPayload

4.5.2 - 2025-02-12

Fixed

  1. fix: Fixed edge case where $feature_flag_called events were enriched with additional feature flag data when they shouldn't be.

4.5.1 - 2025-02-12

Fixed

  1. Do not require a distinctId as an argument to captureException

4.5.0 - 2025-02-06

Added

  1. Adds manual exception capture with full stack trace processing via captureException function
  2. Adds ability to enable exception autocapture via the enableExceptionAutocapture init option

4.4.1 - 2025-01-21

  • Add option privacyMode to remove input and output from LLM Observability

4.4.0 - 2025-01-15

Switch from rusha to native (node:crypto) sha1 implementation

4.3.2 - 2024-12-11

  1. REVERT: Fix bug where this SDK incorrectly sent $feature_flag_called events with null values when using getFeatureFlagPayload.

4.3.1 - 2024-11-26

  1. Fix bug where this SDK incorrectly sent $feature_flag_called events with null values when using getFeatureFlagPayload.

4.3.0 - 2024-11-25

  1. Add Sentry v8 support to the Sentry integration

4.2.3 - 2024-11-21

  1. fix: identify method allows passing a $set_once object

4.2.2 - 2024-11-18

  1. fix: Shutdown will now respect the timeout and forcefully return rather than returning after the next fetch.

4.2.1 - 2024-10-14

  1. fix: only log messages if debug is enabled

4.2.0 - 2024-08-26

  1. Added historicalMigration option for use in tools that are migrating large data to Insights

4.1.1 - 2024-08-20

  1. Local evaluation returns correct results on undefined/null values

4.1.0 - 2024-08-14

  1. chore: change host to new address.
  2. chore: bump axios to 1.7.4 (fixes CVE-2024-39338)

4.0.1 - 2024-04-25

  1. Prevent double JSON parsing of feature flag payloads, which would convert the payload [1] into 1.

4.0.0 - 2024-03-18

Added

  1. Adds a disabled option and the ability to change it later via insights.disabled = true. Useful for disabling Insights tracking for example in a testing environment without having complex conditional checking
  2. Adds a new featureFlagsRequestTimeoutMs timeout parameter for feature flags which defaults to 3 seconds, updated from the default 10s for all other API calls.
  3. shutdown takes a shutdownTimeoutMs param with a default of 30000 (30s). This is the time to wait for flushing events before shutting down the client. If the timeout is reached, the client will be shut down regardless of pending events.
  4. Flushes will now try to flush up to maxBatchSize (default 100) in one go
  5. Queued events are limited up to maxQueueSize (default 1000) and the oldest events are dropped when the limit is reached
  6. Sets User-Agent headers with SDK name and version for RN

Removed

  1. flushAsync and shutdownAsync are removed with flush and shutdown now being the async methods.

Changed

  1. flush and shutdown now being async methods.

Fixed

  1. Fixed an issue where shutdown would potentially exit early if a flush was already in progress
  2. Fixes some typos in types

4.0.0-beta.3 - 2024-03-13

  1. Sets User-Agent headers with SDK name and version for RN

4.0.0-beta.2 - 2024-03-12

  1. flushAsync and shutdownAsync are removed with flush and shutdown now being the async methods.
  2. Fixed an issue where shutdown would potentially exit early if a flush was already in progress
  3. Flushes will now try to flush up to maxBatchSize (default 100) in one go

4.0.0-beta.1 - 2024-03-04

  1. Adds a disabled option and the ability to change it later via insights.disabled = true. Useful for disabling Insights tracking for example in a testing environment without having complex conditional checking
  2. Fixes some typos in types
  3. shutdown and shutdownAsync takes a shutdownTimeoutMs param with a default of 30000 (30s). This is the time to wait for flushing events before shutting down the client. If the timeout is reached, the client will be shut down regardless of pending events.
  4. Adds a new featureFlagsRequestTimeoutMs timeout parameter for feature flags which defaults to 3 seconds, updated from the default 10s for all other API calls.

3.6.3 - 2024-02-15

  1. fix: using captureMode=form won't throw an error and retry unnecessarily

3.6.2 - 2024-02-06

  1. Swapped to uuidv7 for unique ID generation

3.6.1 - 2024-01-26

  1. Remove new relative date operators, combine into regular date operators

3.6.0 - 2024-01-18

  1. Adds support for overriding the event uuid

3.5.0 - 2024-01-09

  1. When local evaluation is enabled, we automatically add flag information to all events sent to Insights, whenever possible. This makes it easier to use these events in experiments.
  2. Fixes a bug where in some rare cases we may drop events when send_feature_flags is enabled on capture.

3.4.0 - 2024-01-09

  1. Numeric property handling for feature flags now does the expected: When passed in a number, we do a numeric comparison. When passed in a string, we do a string comparison. Previously, we always did a string comparison.
  2. Add support for relative date operators for local evaluation.

3.3.0 - 2024-01-02

  1. Adds InsightsSentryIntegration to allow automatic capturing of exceptions reported via the @sentry/node package

3.2.1 - 2023-12-15

  1. Fixes issue where a background refresh of feature flags could throw an unhandled error. It now emits to be detected by .on('error', ...)

3.2.0 - 2023-12-05

  1. Fixes issues with Axios imports for non-node environments like Cloudflare workers
  2. Uses the globally defined fetch if available, otherwise imports and uses axios as a polyfill

3.1.3 - 2023-10-27

  1. Updates axios dependency

3.1.2 - 2023-08-17

  1. Returns the current flag property with $feature_flag_called events, to make it easier to use in experiments

3.1.1 - 2023-04-26

  1. Replace crypto library with pure-js rusha library which makes @hanzo/insights-node work with Cloudflare Workers in Next.js edge runtime.

3.1.0 - 2023-04-19

  1. Some small fixes to incorrect types
  2. Fixed fetch compatibility by aligning error handling
  3. Added two errors: InsightsFetchHttpError (non-2xx status) and InsightsFetchNetworkError (fetch network error)
  4. Added .on('error', (err) => void)
  5. shutdownAsync now ignores fetch errors. They should be handled with .on('error', ...) from now on.

3.0.0 - 2023-04-14

Breaking change:

All events by default now send the $geoip_disable property to disable geoip lookup in app. This is because usually we don't want to update person properties to take the server's location.

The same now happens for feature flag requests, where we discard the IP address of the server for matching on geoip properties like city, country, continent.

To restore previous behaviour, you can set the default to False like so:

const insights = new Insights(PH_API_KEY, {
  host: PH_HOST,
  disableGeoip: false,
})

2.6.0 - 2023-03-14

  1. Add support for all cohorts local evaluation in feature flags.

2.5.4 - 2023-02-27

  1. Fix error log for local evaluation of feature flags (InconclusiveMatchError(s)) to only show during debug mode.

2.5.3 - 2023-02-21

  1. Allow passing in a distinctId to groupIdentify().
  2. Fix a bug with active feature flags on capture events, where non-active flags would be added to the list as well.

2.5.2 - 2023-02-17

  1. Fix issue where properties passed to .identify were not set correctly

2.5.1 - 2023-02-16

  1. Make sure shutdown waits for pending promises to resolve. Fixes a problem with using Insights Node in serverless environments.

2.5.0 - 2023-02-15

  1. Removes shared client from @hanzo/insights-node, getting rid of some race condition bugs when capturing events.
  2. Sets minimum version of node.js to 15

2.4.0 - 2023-02-02

  1. Adds support for overriding timestamp of capture events

2.3.0 - 2023-1-26

  1. uses v3 decide endpoint
  2. JSON payloads will be returned with feature flags
  3. Feature flags will gracefully fail and optimistically save evaluated flags if server is down

2.2.3 - 2022-12-01

  1. Fix issues with timeouts for local evaluation requests

2.2.2 - 2022-11-28

  1. Fix issues with timeout

2.2.1 - 2022-11-24

  1. Add standard 10 second timeout

2.2.0 - 2022-11-18

  1. Add support for variant overrides for feature flag local evaluation.
  2. Add support for date operators in feature flag local evaluation.

2.1.0 - 2022-09-08

  1. Swaps unidici for axios in order to support older versions of Node
  2. The fetch implementation can be overridden as an option for those who wish to use an alternative implementation
  3. Fixes the minimum Node version to >=14.17.0

2.0.2 - 2022-08-23

  1. Removes references to cli.js
  2. Removes default InsightsGlobal export, and unifies import signature for typescript, commonjs and esm builds.

2.0.1 - 2022-08-15

Breaking changes:

  1. Feature flag defaults are no more. When we fail to compute any flag, we return undefined. All computed flags return either true, false or String.
  2. Minimum Insights version requirement is 1.38
  3. Default polling interval for feature flags is now set at 30 seconds. If you don't want local evaluation, don't set a personal API key in the library.
  4. The callback parameter passed as an optional last argument to most of the methods is no longer supported
  5. The CLI is no longer supported

What's new:

  1. You can now evaluate feature flags locally (i.e. without sending a request to your Insights servers) by setting a personal API key, and passing in groups and person properties to isFeatureEnabled and getFeatureFlag calls.
  2. Introduces a getAllFlags method that returns all feature flags. This is useful for when you want to seed your frontend with some initial flags, given a user ID.