Skip to content

posthog-js@1.423.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 10:50
Immutable release. Only release title and notes can be modified.
b99bf99

1.423.0

Minor Changes

  • #4663 6ae173f Thanks @pauldambra! - Detect the Claude, Codex, and ChatGPT apps from their user agent markers: $browser now reports the app name instead of Chrome.

    ChatGPT versions its apps differently per platform, so its $browser_version is not comparable across platforms. (2026-09-01)

  • #4659 1406e04 Thanks @marandaneto! - Synchronize feature flag and early access enrollment persistence across browser tabs. Keep successful partial evaluations authoritative for payload updates and removals, including falsy payload values, while retaining cached state for failed evaluations.
    (2026-09-01)

Patch Changes

  • #4696 aa72a36 Thanks @github-actions! - Prefer data-ph-capture-attribute-* values from the closest element when the same property is defined on multiple ancestors.
    (2026-09-01)

  • #4683 6309cb2 Thanks @posthog! - Harden the directly importable getElementsChainString utility against runtime JavaScript callers that pass a non-array value. It now returns an empty string instead of calling .map on malformed input.
    (2026-09-01)

  • #4708 6723395 Thanks @turnipdabeets! - Change bigint attributes on logs, metrics and spans to send as an int64 rather than as a string.
    (2026-09-01)

  • #4692 ec550b8 Thanks @mhornbacher! - Respect navigator.globalPrivacyControl when respect_dnt is enabled
    (2026-09-01)

  • #4697 6d6091e Thanks @yfwmaniish! - Fix a memory leak in Session Replay recording: MutationBuffer skipped its own cleanup whenever a mutation batch normalized to an empty payload (e.g. a node added and removed within the same task), leaving the buffer holding strong references to DOM nodes indefinitely.
    (2026-09-01)

  • #4672 0cddefe Thanks @posthog! - Error tracking now drops a known uBlock Origin Lite exception thrown by its Safari extension. Safari masks extension content-script URLs as webkit-masked-url://hidden/, but also uses that URL for application code, so the filter requires the extension's error signature before dropping an all-masked stack. A remaining unmasked in_app frame still preserves the exception as first-party.
    (2026-09-01)

  • #4704 cee2280 Thanks @veryayskiy! - back off support widget polling to stop starving sends
    (2026-09-01)

  • #4684 5874d1c Thanks @yfwmaniish! - Fall back to in-memory storage when neither web storage nor cookies are available, instead of selecting a backend that cannot store anything. In contexts like a data: URL — a Figma plugin, for example — Chrome disables localStorage and cookies alike, and both the persistence and consent paths previously committed to an unusable store, logging a SecurityError on every capture. cookieStore._is_supported() now round-trips a probe cookie rather than only checking that document exists, and memoryStore no longer reports a stored falsy value (such as the 0 consent writes for "opted out") as absent.
    (2026-09-01)

  • #4662 e7f5733 Thanks @posthog! - Warn at init when persistence is 'memory' or 'sessionStorage' and no bootstrap.distinctID is set. In this setup the SDK mints a fresh distinct ID on every page load, so each identify() call merges another ID onto the same person. A person can then pass the distinct-ID limit, after which person pages and the session tab load only a truncated slice and the rest of the events look missing even though ingestion is fine. The warning points at the two fixes: switch to localStorage+cookie, or keep this persistence and pass a stable ID through bootstrap.distinctID.
    (2026-09-01)

  • #4682 5c6ab6f Thanks @posthog! - Fix an uncaught TypeError in the web vitals attribution bundle. The attributed INP observer read startTime from the first entry without a guard, so a report with no entries (for example after a bfcache restore or soft navigation) threw and stopped the metric capture. Bump web-vitals to 6.2.1, which guards the empty-entry case: instead of throwing, it reports the metric with fallback attribution that carries no interaction details (zeroed input and processing delays).
    (2026-09-01)

  • Updated dependencies [444bf35, 6ae173f, 6309cb2, 6723395]:

    • @posthog/core@1.50.0
    • @posthog/browser-common@0.7.1