Skip to content

chore(deps): update dependency posthog-js to v1.409.5 - #164

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/posthog-js-1.x-lockfile
Open

chore(deps): update dependency posthog-js to v1.409.5#164
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/posthog-js-1.x-lockfile

Conversation

@renovate

@renovate renovate Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
posthog-js (source) 1.374.41.409.5 age confidence

Release Notes

PostHog/posthog-js (posthog-js)

v1.409.5

Compare Source

1.409.5

Patch Changes
  • #​4354 6c500f1 Thanks @​ablaszkiewicz! - Fail open when an error tracking suppression rule cannot be evaluated, so an unknown operator or a key outside $exception_types / $exception_values no longer drops the exception.
    (2026-07-31)

v1.409.4

Compare Source

1.409.4

Patch Changes
  • #​4338 c458807 Thanks @​turnipdabeets! - Fix canvases staying blank after seeking in session replay by re-sending one frame per canvas after each full snapshot
    (2026-07-31)

v1.409.3

Compare Source

1.409.3

Patch Changes
  • #​4312 4729871 Thanks @​darkopia! - Fix hosted (external) surveys with URL prefill: the auto-submitted response now includes caller-provided event properties (extra URL query params), and a later manual submit no longer clears the prefilled answer from the partial-response merge.
    (2026-07-31)

v1.409.2

Compare Source

1.409.2

Patch Changes

v1.409.1

Compare Source

v1.409.0

Compare Source

1.409.0

Minor Changes
  • #​4308 6e7f3ae Thanks @​ablaszkiewicz! - Emit the release id that posthog-cli injects into your bundle as $release_id on $exception events, so PostHog can attach exceptions to a release without joining through symbol sets. Adds getInjectedReleaseId() to @posthog/core. The property is only attached when an injected release id can be read.
    (2026-07-30)
Patch Changes

v1.408.3

Compare Source

v1.408.2

Compare Source

1.408.2

Patch Changes

v1.408.1

Compare Source

1.408.1

Patch Changes
  • #​4226 3b02a78 Thanks @​ksvat! - The replayer can now yield to the event loop while fast-forwarding to a seek target, via the new opt-in seekYieldBudgetMs player config. Seeking in a long, event-dense recording rebuilds the target frame by re-applying every event since the last full snapshot in one uninterrupted main-thread pass, which can block the page for many seconds and trigger the browser's "Page Unresponsive" dialog; when a yield budget is set, the rebuild runs in time-budgeted chunks instead, and a newer seek cancels any rebuild still in flight so rapid scrubbing only pays for the last seek. A superseded rebuild also resets the machine's lastPlayedEvent so the next seek performs a full rebuild rather than trusting a partially-applied history. The default (0) keeps the previous fully-synchronous behavior.
    (2026-07-30)

v1.408.0

Compare Source

1.408.0

Minor Changes
  • #​4270 92427a1 Thanks @​turnipdabeets! - Add canvas mask regions to session replay canvas capture: session_recording.canvasCapture.maskRegionsFn is called once per canvas per captured frame, and the returned regions (CSS pixels, relative to the canvas) are painted black in the captured frame before it is encoded — letting apps that render into canvas (e.g. Flutter web via CanvasKit) mask content that DOM-based masking cannot see.

    The return value decides what happens to that canvas's frame:

    • [] — nothing to mask; the frame is recorded as is.
    • null — regions could not be computed; the frame is skipped rather than recorded unmasked.
    • maskRegionsFn not set — canvases are recorded unmasked and canvas capture behavior is unchanged.

    Configuring maskRegionsFn also disables canvas pixel serialization in DOM full snapshots (rr_dataURL) — that path never sees the mask regions, so skipping it closes the route that could otherwise embed unmasked canvas stills in a snapshot; the canvas repaints from the masked frame stream instead. Every canvas the provider answers — with regions or [] — re-sends an unchanged frame as a keyframe every 30s, so after a full snapshot or a seek an idle canvas repaints within at most 30s.

    An app whose real provider only exists once its runtime has booted chooses what happens in between by what it declares in posthog.init: a function covering the whole canvas blacks those frames out, () => null skips them, and declaring nothing records them. Client-side only, cannot be set via remote configuration. (2026-07-29)

Patch Changes

v1.407.8

Compare Source

1.407.8

Patch Changes
  • #​4311 c1818e2 Thanks @​marandaneto! - fix(react): restore CommonJS default import interop in UMD bundles

    React hooks used without a PostHogProvider now receive the default PostHog instance again when the UMD build is loaded through CommonJS. (2026-07-29)

v1.407.7

Compare Source

1.407.7

Patch Changes
  • #​4304 c7099e9 Thanks @​lucasheriques! - fix(surveys): only wait for feature flags on surveys that repeat

    Surveys stopped being shown while feature flags were still loading, even when a cached
    enabled value for their internal targeting flag was already available. Popover and widget
    surveys recovered on the next evaluation, but a survey your own code renders (type api)
    is evaluated once, so it was dropped for that page load and never reappeared.

    That wait is only needed for surveys that repeat, where stored per-survey state is keyed by
    iteration and cannot be relied on to record that someone already answered. Other surveys
    keep one stable key that already prevents a repeat display, so they are now evaluated
    against the cached flag right away. (2026-07-29)

  • Updated dependencies [c7099e9]:

v1.407.6

Compare Source

1.407.6

Patch Changes

v1.407.5

Compare Source

1.407.5

Patch Changes
  • #​4278 a19ba65 Thanks @​marandaneto! - Fix paused replay seeks at an exact full snapshot timestamp so the snapshot frame is rebuilt before playback pauses.
    (2026-07-28)

v1.407.4

Compare Source

1.407.4

Patch Changes

v1.407.3

Compare Source

1.407.3

Patch Changes
  • #​4214 f7399a0 Thanks @​felipeatom! - Fix canRenderSurvey / canRenderSurveyAsync reporting a survey as renderable before its event/action activation trigger has fired. Surveys gated on a "User sends events" filter are now only eligible once the trigger event is received.
    (2026-07-27)

  • #​4231 eabe2ef Thanks @​marandaneto! - Send analytics request timestamps in capture bodies while retaining query timestamps for session recordings.
    (2026-07-27)

  • #​4102 fa4844b Thanks @​marandaneto! - Send SDK library identity in feature flag person properties instead of URL query parameters.
    (2026-07-27)

  • #​4220 11330b3 Thanks @​SegFaultZero! - fix(replay): prevent server timings from dropped ingestion requests causing an endless capture loop
    (2026-07-27)

  • Updated dependencies [7210789]:

v1.407.2

Compare Source

1.407.2

Patch Changes
  • #​4224 ba7042b Thanks @​turnipdabeets! - Fix session replay recordings being unplayable after the session rotated in a tab with no user interaction. When a session expired and rotated (for example in a long-lived background tab), a recorder that had not yet seen user interaction kept attributing snapshots — including full snapshots — to the previous session, so the new session never received a playable full snapshot. The recorder now restarts on rotation in this state, re-syncs its session id from the session manager if they ever diverge, and flushes its buffer on the normal cadence before the first user interaction instead of holding data until the next rotation or page unload.
    (2026-07-23)

v1.407.1

Compare Source

1.407.1

Patch Changes
  • #​4218 33f0bd7 Thanks @​marandaneto! - Send ISO feature flag timestamps in request bodies, use numeric sent_at query timestamps for capture POSTs, and preserve _ cache busting for dynamic GET requests.
    (2026-07-23)

v1.407.0

Compare Source

1.407.0

Minor Changes
  • #​4222 0f2407b Thanks @​turnipdabeets! - feat: add a default-value option to isFeatureEnabled

    isFeatureEnabled(key, { defaultValue: false }) now returns the given default when the flag has no value — flags not loaded yet, or no flag with that key — and the return type narrows to boolean. The option name is the same in posthog-js, posthog-js-lite, and posthog-react-native. Without defaultValue, behavior is unchanged: boolean | undefined. (2026-07-22)

Patch Changes
  • #​4203 90e7483 Thanks @​posthog! - fix(conversations): let users start a new conversation while a ticket is still open

    The support widget now surfaces the ticket list navigation (and its "New conversation"
    button) whenever the user has any ticket, instead of only when they have multiple tickets
    or a single resolved one. Previously a user sitting on one open, unresolved ticket was
    locked into that conversation with no way to raise a second issue. (2026-07-22)

  • #​4221 da6e082 Thanks @​posthog! - fix(exception-autocapture): don't throw when the page's onerror handler is non-callable

    The wrapped window.onerror, window.onunhandledrejection, and console.error handlers
    chained to the page's original handler using optional chaining, which only guards against
    null/undefined. When a page had one of these set to a truthy non-callable value (e.g.
    via Object.defineProperty, or clobbered by another script/extension), our wrapper threw a
    TypeError from inside its own handler. We now check the original handler is actually
    callable before invoking it and fall back to false otherwise. (2026-07-22)

  • #​4209 569fc62 Thanks @​posthog! - Session recording no longer emits an uncaught TypeError: Illegal invocation from the input observer's synchronous native-setter call. The previous fix only guarded the deferred hooked setter; the synchronous original.set.call(this, value) still ran with a non-native this (a proxy, custom element, or cross-realm object) and threw inside the host page's own assignment. The recorder now probes the native getter — which fails the same internal-slot brand check as the setter — before forwarding: a non-native this is skipped, so the recorder no longer re-throws from its own frame, while genuine elements (including file inputs that legitimately throw on a programmatic value) keep their native behavior. The input event handler and getInputType are similarly guarded against reading native accessors on a non-native this.
    (2026-07-22)

  • #​4068 d5e1188 Thanks @​posthog! - Fix event-triggered surveys re-displaying in a fresh session without their trigger firing. A non-repeatable event/action-triggered survey that was shown but never dismissed or answered had its activation persisted indefinitely, so it kept being treated as "triggered" on later page loads. The persisted activation is now scoped to the triggering session: it still survives a reload within that session, but a brand-new session drops it until the trigger fires again. Repeatable surveys are unaffected.
    (2026-07-22)

  • #​4205 de3ad61 Thanks @​posthog! - Warn when session recording masking options in posthog.init shadow the project-level "Privacy and masking" setting. Client-side masking still intentionally takes precedence, but previously the override was silent — a developer could set masking in the dashboard and see it quietly ignored because their SDK config diverged. The recorder now logs a console warning (in debug mode) naming the diverging fields so the precedence is self-explaining.
    (2026-07-22)

  • Updated dependencies [0f2407b]:

v1.406.2

Compare Source

1.406.2

Patch Changes
  • #​4206 a3112d9 Thanks @​posthog! - fix(surveys): stop recurring surveys re-showing off a stale internal targeting flag

    Recurring surveys could re-display and record a duplicate response when the eligibility
    check ran against a cached internal targeting flag before fresh flags had loaded. The
    display loop now waits for feature flags to actually load before trusting the internal
    targeting flag, and forces a flag reload after a survey is completed so the flag recomputes
    promptly. (2026-07-21)

v1.406.1

Compare Source

1.406.1

Patch Changes
  • #​4127 220fa2c Thanks @​sarmah-rup! - Don't let save_referrer overwrite a $referrer / $referring_domain that was explicitly set via posthog.register(), so registered attribution values survive pageviews in SPA and iframe contexts
    (2026-07-21)

v1.406.0

Compare Source

1.406.0

Minor Changes
  • #​4194 d39b903 Thanks @​dustinbyrne! - Move shared browser utility implementations into @posthog/browser-common and consume them directly from posthog-js.
    (2026-07-21)
Patch Changes
  • #​4204 ba977d0 Thanks @​turnipdabeets! - Keep autocapture off when a remote config response omits autocapture_opt_out. The SDK now retains the last known server value for the missing-field case, the same as when the config fetch fails, instead of enabling autocapture. Values persisted by earlier SDK versions are still trusted; a browser holding a stale value corrects itself on the first config response that includes the field.
    (2026-07-21)
  • Updated dependencies [d39b903]:

v1.405.3

Compare Source

1.405.3

Patch Changes

v1.405.2

Compare Source

1.405.2

Patch Changes

v1.405.1

Compare Source

1.405.1

Patch Changes

v1.405.0

Compare Source

1.405.0

Minor Changes
  • #​4172 9621830 Thanks @​haacked! - send minimal $feature_flag_called events when the server enables it

    When the v2 /flags response carries minimalFlagCalledEvents: true (or, for posthog-node local evaluation, the flag-definitions payload carries minimal_flag_called_events: true) and the evaluated flag is not linked to an experiment ($feature_flag_has_experiment === false), $feature_flag_called events are rebuilt from a strict allowlist of flag-evaluation, processing-control, and SDK-identity properties. Super properties, $set/$set_once, the $feature/<key> enumeration, $active_feature_flags, and the context envelope are stripped. Any missing signal (no gate on the response, bootstrapped or locally injected flags, has_experiment unknown) falls back to the full event, and experiment-linked flags always send the full envelope. The gate is stored alongside the cached flags (posthog-js persistence, posthog-node poller state) and is server-controlled, with no SDK-side configuration. before_send runs after the filter and may re-add stripped properties. (2026-07-20)

Patch Changes

v1.404.1

Compare Source

1.404.1

Patch Changes
  • #​4191 66c1666 Thanks @​turnipdabeets! - Honour the project-level autocapture opt-out when the remote config request fails. Previously a failed config fetch (network error, timeout, blocked request) enabled autocapture on opted-out projects and persisted that state for later page loads. Autocapture now keeps the last successfully received server value, and stays off until the first successful config response.
    (2026-07-17)

v1.404.0

Compare Source

1.404.0

Minor Changes
  • #​4149 607bf54 Thanks @​pauldambra! - Add dead swipe detection to dead clicks autocapture. When dead clicks autocapture is enabled, touch swipe gestures that produce no observable screen change (no scroll, mutation, selection or visibility change) are now captured as $dead_swipe events, surfacing failed navigations on touch devices. Configurable via capture_dead_swipes (default true) and swipe_threshold_px (default 30) on the capture_dead_clicks config. Swipes over surfaces whose response cannot be observed (canvas, video and other media elements under the finger) are skipped, and captures are limited per page load via max_dead_swipes_per_page_load (default 10).
    (2026-07-16)
Patch Changes
  • #​4171 df17ddc Thanks @​posthog! - Catch synchronous throws from a monkey-patched window.fetch so they no longer escape as unhandled exceptions. A synchronous throw is now routed through the same handling as an async rejection, so the request queue retries instead of the error leaking into error tracking.
    (2026-07-16)
  • Updated dependencies [607bf54]:

v1.403.0

Compare Source

1.403.0

Minor Changes
  • #​4159 fad6d9a Thanks @​haacked! - add $feature_flag_has_experiment to $feature_flag_called events

    $feature_flag_called events now carry a $feature_flag_has_experiment boolean sourced from the server's has_experiment flag metadata (the /flags?v=2 response for remote evaluation, the /api/feature_flag/local_evaluation definitions for posthog-node local evaluation). The property is only sent when the server explicitly reports has_experiment; it is omitted entirely when the value is unknown (older servers, missing metadata, bootstrapped or locally injected flags). (2026-07-16)

Patch Changes

v1.402.3

Compare Source

1.402.3

Patch Changes
  • #​4157 4a2ecf5 Thanks @​posthog! - Session recording no longer emits an uncaught NotAllowedError ("Sharing constructed stylesheets in multiple documents is not allowed") when a page assigns a CSSStyleSheet constructed in a different document to adoptedStyleSheets. That assignment is the host page's own invalid operation, but the recorder's patched setter sat on the call stack, so the exception was attributed to rrweb and churned fingerprints in error tracking. The recorder now contains this specific rejection (matched by its standardized NotAllowedError name, so it works even when the setter throws from an iframe realm) and skips recording those sheets, while still re-throwing any other native-setter error so host-page behaviour is preserved.
    (2026-07-15)

  • #​4158 0dc389e Thanks @​posthog! - fix(replay): session recording no longer throws TypeError: Converting circular structure to JSON when replay event data contains a circular reference. The circular-reference guard now also detects cycles that pass through an array, and affected events are captured with [Circular] markers instead of surfacing an unhandled error and being dropped.
    (2026-07-15)

  • Updated dependencies [fc2cb2e]:

v1.402.2

Compare Source

1.402.2

Patch Changes
  • #​4151 81adbfd Thanks @​posthog! - Session recording no longer emits an uncaught TypeError: Illegal invocation when a programmatic input-value change happens on an object that is not a genuine native input element (for example a proxy on the element prototype chain). The recorder drops that one replay update instead of throwing.
    (2026-07-15)

v1.402.1

Compare Source

1.402.1

Patch Changes
  • #​4117 1eddff7 Thanks @​DanielVisca! - add the posthog.metrics API (count, gauge, histogram) to posthog-node — alpha

    Backend services can now record metrics through the same statsd-style pre-aggregating client the browser SDK ships, with no OpenTelemetry setup:

    const client = new PostHog('phc_...', { metrics: { serviceName: 'billing-worker' } })
    client.metrics.count('invoices.processed', 1, { attributes: { plan: 'pro' } })
    client.metrics.gauge('queue.depth', 42)
    client.metrics.histogram('job.duration', 187, { unit: 'ms' })

    Samples aggregate in memory and flush as OTLP/JSON to /i/v1/metrics (one data point per series per window). Pending metrics are flushed on shutdown(). Core gains _sendMetricsBatch on PostHogCoreStateless (same outcome contract as _sendLogsBatch) and a shared resolveMetricsConfig, so any core-based SDK can host PostHogMetrics. (2026-07-15)

  • Updated dependencies [1eddff7]:

v1.402.0

Compare Source

1.402.0

Minor Changes
  • #​4143 0e8ad14 Thanks @​robbie-c! - Stamp the current hostname as $snapshot_host on every $snapshot event the session recorder sends. The value is derived from the page URL after it passes through the existing replay URL masking pipeline (maskCapturedNetworkRequestFn / deprecated maskNetworkRequestFn, hash stripping, personal-data query-param masking), so it cannot bypass a customer's masking config. When masking removes the URL or the masked result doesn't parse as a URL, the property is omitted entirely. This gives ingestion consumers a per-message host signal even for mid-session snapshot batches that contain no URL-bearing events.
    (2026-07-15)

v1.401.0

Compare Source

1.401.0

Minor Changes
  • #​4129 800af7c Thanks @​pauldambra! - feat: add session_recording.attributeFilter option that passes an attribute allowlist through to the native MutationObserver, so mutations to unlisted attributes (e.g. animation-driven inline style churn) never cost recording CPU (port of upstream rrweb #​1873)
    (2026-07-15)
Patch Changes

v1.400.1

Compare Source

1.400.1

Patch Changes
  • #​4090 6dd8827 Thanks @​lucasheriques! - chore: survey seen-key and repeat-activation helpers now live in @​posthog/core, shared by the web and React Native SDKs. Core's survey enums are now const-object literal unions (matching the web SDK's existing pattern), so the same values type-check across both SDKs. No behavior change. Type-level note: enum members no longer work as standalone type annotations (e.g. SurveyType.Popover as a type); use the exported union types instead. Runtime values are unchanged.
    (2026-07-14)
  • Updated dependencies [6dd8827]:

v1.400.0

Compare Source

1.400.0

Minor Changes
  • #​4101 dc2aa5b Thanks @​posthog! - Normalize the error tracking rate-limiter config to first-class options. The browser SDK now reads exceptionRateLimiterRefillRate / exceptionRateLimiterBucketSize on error_tracking, with the previous double-underscore __exceptionRateLimiterRefillRate / __exceptionRateLimiterBucketSize options deprecated but still honoured as a fallback. The option shape (ExceptionRateLimiterConfig) and default-resolution logic (resolveExceptionRateLimiterConfig) now live in @posthog/core and are shared between the browser and Node SDKs.
    (2026-07-14)
Patch Changes
  • #​4140 1eabd30 Thanks @​turnipdabeets! - Handle sendBeacon quota rejections instead of silently dropping events. A beacon rejected by the browser (over the page's shared ~64KiB in-flight keepalive quota) is now split in half and re-sent recursively so the batch delivers as far as the quota allows; a rejected payload that cannot be split falls back to a non-keepalive fetch and logs a warning. Previously the boolean return of sendBeacon was ignored and an over-quota unload batch was lost with no signal.
    (2026-07-14)
  • Updated dependencies [dc2aa5b]:

v1.399.5

Compare Source

1.399.5

Patch Changes
  • #​4134 ab10064 Thanks @​posthog! - Bound autocapture's DOM ancestor walks against abnormal host-page DOM trees. autocapturePropertiesForElement and shouldCaptureElement now stop climbing the parentNode chain after 1000 ancestors or if they revisit a node (only possible when a page patches parentNode, since native DOMs cannot contain cycles), instead of walking indefinitely. When shouldCaptureElement cannot finish checking ancestors for ph-no-capture/ph-sensitive, it fails closed and reports the element as not capturable. Behavior on normal DOM trees is unchanged.
    (2026-07-14)

  • #​4141 17d956c Thanks @​posthog! - Log network-level fetch failures from posthog-js's own request layer (ad blocker, dropped connection, CORS, page teardown) at warn instead of error. The browser rejects these with a generic TypeError (Failed to fetch, Firefox's NetworkError..., or Safari's Load failed); they are already caught and retried by the request queue, so they are expected noise rather than SDK errors — _fetch now gives them the same warn treatment as our own timeout aborts. Genuine, unexpected errors still log at error.
    (2026-07-14)

v1.399.4

Compare Source

1.399.4

Patch Changes
  • #​4139 7c339be Thanks @​turnipdabeets! - Encode uncompressed sendBeacon bodies as base64 form data so the beacon keeps a CORS-simple content type. Previously an uncompressed unload beacon was sent as application/json, which forces a CORS preflight — a preflight cannot complete while the page unloads, so on cross-origin hosts the browser silently dropped the POST and the final batch of events was lost. Compression is inactive whenever the remote config request fails (flaky network, blocked endpoint), when the config response omits supportedCompression, or with disable_compression: true.
    (2026-07-13)

v1.399.3

Compare Source

1.399.3

Patch Changes
  • #​4133 4ebb618 Thanks @​mikenicholls88! - Make jsonStringify circular-safe so event serialization never throws. Previously a captured property holding a circular value — most commonly a DOM node that retains a React fiber pointing back at the element — made JSON.stringify throw Converting circular structure to JSON; with capture_exceptions enabled that throw was recaptured as a new $exception, at times in a loop. On a throw we now fall back to safeJsonStringify from @posthog/core. The fast (non-circular) path is unchanged, and only true cycles become "[Circular]", so shared-but-acyclic references keep their real values.
    (2026-07-13)

v1.399.2

Compare Source

1.399.2

Patch Changes
  • #​4118 f630394 Thanks @​posthog! - Fix a RangeError: Maximum call stack size exceeded originating from the shared rrweb patch() helper. It patches shared globals such as Element.prototype.attachShadow (shadow-dom-manager) and the DOM/canvas observers, so multiple recorder instances or repeated start/stop cycles wrap the same global more than once. Previously an out-of-order restore silently no-op'd, leaving the wrapper in the call path; repeated cycles grew the wrapper chain without bound until a real call walked a chain deep enough to overflow the stack. Wrappers now delegate through a mutable per-layer link so any layer can be torn down even when newer wrappers sit on top of it, keeping the chain bounded. Recording behavior is unchanged. This applies the same fix as #​4063 (fetch/XHR) to the shared helper so every rrweb-record caller inherits the bounded-chain behavior.
    (2026-07-10)

v1.399.1

Compare Source

v1.399.0

Compare Source

1.399.0

Minor Changes
  • #​4115 86bb3a5 Thanks @​DanielVisca! - add the posthog.metrics API (count, gauge, histogram) — alpha

    A statsd-style pre-aggregating metrics client for the PostHog Metrics product (alpha). Samples are folded into per-series aggregates in memory (counts sum, gauges keep the last value, histograms accumulate buckets) and flushed periodically as OTLP/JSON to /i/v1/metrics — one data point per series per flush window, no matter how many calls. No OpenTelemetry SDK setup required:

    posthog.metrics.count('orders_created', 1)
    posthog.metrics.gauge('active_connections', 42)
    posthog.metrics.histogram('api_latency', 187, { unit: 'ms' })

    Configure via metrics: { serviceName, environment, flushIntervalMs, maxSeriesPerFlush, beforeSend, ... }. (2026-07-08)

Patch Changes

v1.398.7

Compare Source

1.398.7

Patch Changes
  • #​4113 45f17ee Thanks @​TueHaulund! - fix session replay leaking a shadow-root observer when a same-origin iframe is removed

    Follow-up to the shadow-observer iframe-teardown fix: takeFullSnapshot's onSerialize registers every shadow root with the top-level document, so a root nested in a same-origin iframe was keyed to the wrong document and its observer/buffer were not disconnected when that iframe was removed (they lingered until the next full snapshot). addShadowRoot now derives the owning document from the host element, so per-document teardown matches iframe-nested roots too. (2026-07-08)

v1.398.6

Compare Source

1.398.6

Patch Changes

v1.398.5

Compare Source

1.398.5

Patch Changes
  • #​4103 be8242a Thanks @​rafaeelaudibert! - Publish the code-split ESM toolbar bundle when the build emits one. The release tooling now recursively includes dist/toolbar/ (with explicit JS content types for the strict-MIME ESM chunks) across the immutable, major-alias, and compatibility upload prefixes, and the workflow accepts the canonical toolbar.js/toolbar.css layout. This is a no-op against today's single-file build.
    (2026-07-08)

v1.398.4

Compare Source

v1.398.3

Compare Source

1.398.3

Patch Changes
  • #​4112 38bb185 Thanks @​TueHaulund! - fix session replay silently dropping shadow DOM mutations after an iframe teardown

    The single shared ShadowDomManager observes every shadow root on the page, but MutationBuffer.reset() disconnected it. That reset fires whenever any one buffer is torn down, so an iframe being removed or navigating away disconnected every shadow-root observer page-wide. Shadow DOM content (for example a widget mounted in an open shadow root) then stopped recording until the next periodic full snapshot re-registered it. Buffer teardown now releases only its own resources; global shadow observation is reset by takeFullSnapshot and on recording stop. (2026-07-08)

v1.398.2

Compare Source

1.398.2

Patch Changes
  • #​4063 24aadd5 Thanks @​posthog! - Fix a RangeError: Maximum call stack size exceeded that could originate from the shared patch() fetch/XHR wrapper. posthog-js wraps window.fetch in two independent places (tracing headers and session-recording network capture), so their restores routinely ran out of order. Previously an out-of-order restore silently no-op'd, leaving the wrapper in the call path; repeated start/stop cycles grew the wrapper chain without bound until a real fetch walked a chain deep enough to overflow

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • Branch creation
    • Between 08:00 AM and 05:59 PM, Monday through Friday (* 8-17 * * 1-5)
  • Automerge
    • Between 08:00 AM and 05:59 PM, Monday through Friday (* 8-17 * * 1-5)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the Renovate label May 22, 2026
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented May 22, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
launchpad 9e9d1f6 Commit Preview URL

Branch Preview URL
Jul 31 2026, 06:44 PM

@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 42478cb to f251cc4 Compare May 22, 2026 19:56
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.375.0 chore(deps): update dependency posthog-js to v1.376.0 May 22, 2026
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.0 chore(deps): update dependency posthog-js to v1.376.2 May 26, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch 2 times, most recently from 6b7755f to 1cab717 Compare May 27, 2026 18:17
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.2 chore(deps): update dependency posthog-js to v1.376.3 May 27, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 1cab717 to 213b568 Compare May 28, 2026 13:58
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.3 chore(deps): update dependency posthog-js to v1.376.4 May 29, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 213b568 to 97e061a Compare May 29, 2026 02:45
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.4 chore(deps): update dependency posthog-js to v1.376.5 May 31, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch 2 times, most recently from f27c7c2 to 2e586c6 Compare June 1, 2026 03:30
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.5 chore(deps): update dependency posthog-js to v1.376.6 Jun 1, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 2e586c6 to 4476dd5 Compare June 13, 2026 18:31
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.376.6 chore(deps): update dependency posthog-js to v1.386.6 Jun 13, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 4476dd5 to 19f1f85 Compare June 15, 2026 13:01
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.386.6 chore(deps): update dependency posthog-js to v1.386.8 Jun 15, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 19f1f85 to b460fd9 Compare June 16, 2026 18:40
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.386.8 chore(deps): update dependency posthog-js to v1.387.0 Jun 16, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from b460fd9 to 82ab376 Compare June 17, 2026 18:04
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.387.0 chore(deps): update dependency posthog-js to v1.390.0 Jun 17, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 82ab376 to a73ee33 Compare June 18, 2026 01:12
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.390.0 chore(deps): update dependency posthog-js to v1.390.2 Jun 18, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch 2 times, most recently from 04a5f21 to 40be235 Compare June 19, 2026 12:45
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.390.2 chore(deps): update dependency posthog-js to v1.391.0 Jun 19, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 40be235 to 682b1f4 Compare June 19, 2026 18:54
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.391.0 chore(deps): update dependency posthog-js to v1.391.2 Jun 19, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from bb5f626 to f01f36b Compare June 25, 2026 14:14
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.393.4 chore(deps): update dependency posthog-js to v1.393.5 Jun 25, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from f01f36b to 9e00d46 Compare June 26, 2026 14:03
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.393.5 chore(deps): update dependency posthog-js to v1.393.6 Jun 26, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 9e00d46 to f0db7c0 Compare June 26, 2026 21:14
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.393.6 chore(deps): update dependency posthog-js to v1.395.0 Jun 26, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from f0db7c0 to 6cfb125 Compare June 29, 2026 10:55
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.395.0 chore(deps): update dependency posthog-js to v1.396.1 Jun 29, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 6cfb125 to 2079aca Compare June 29, 2026 18:12
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.1 chore(deps): update dependency posthog-js to v1.396.2 Jun 29, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 2079aca to b50b37b Compare June 30, 2026 19:00
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.2 chore(deps): update dependency posthog-js to v1.396.3 Jun 30, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from b50b37b to c6a5826 Compare July 1, 2026 22:51
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.3 chore(deps): update dependency posthog-js to v1.396.4 Jul 1, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from c6a5826 to 72c9f12 Compare July 2, 2026 17:52
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.4 chore(deps): update dependency posthog-js to v1.396.5 Jul 2, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 72c9f12 to a7dfd85 Compare July 3, 2026 14:34
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.5 chore(deps): update dependency posthog-js to v1.396.6 Jul 3, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from a7dfd85 to 9dc2b9e Compare July 6, 2026 09:10
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.6 chore(deps): update dependency posthog-js to v1.396.7 Jul 6, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 9dc2b9e to 21b5bb3 Compare July 6, 2026 18:13
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.7 chore(deps): update dependency posthog-js to v1.396.9 Jul 6, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 21b5bb3 to 71ad502 Compare July 6, 2026 22:02
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.396.9 chore(deps): update dependency posthog-js to v1.398.0 Jul 6, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 71ad502 to 7ef27b3 Compare July 7, 2026 16:53
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.398.0 chore(deps): update dependency posthog-js to v1.398.1 Jul 7, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 7ef27b3 to 89b0130 Compare July 7, 2026 22:45
@renovate renovate Bot changed the title chore(deps): update dependency posthog-js to v1.398.1 chore(deps): update dependency posthog-js to v1.398.2 Jul 7, 2026
@renovate
renovate Bot force-pushed the renovate/posthog-js-1.x-lockfile branch from 89b0130 to 469f1d3 Compare July 8, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants