fix(deps): update dependency posthog-js to v1.393.5#849
Open
ZxBot wants to merge 1 commit into
Open
Conversation
a8627aa to
946afb6
Compare
4c3750b to
3a95e06
Compare
3a95e06 to
eddd347
Compare
6bb00c8 to
12ff628
Compare
12ff628 to
8f6e5a3
Compare
8f6e5a3 to
b2198d7
Compare
abbde21 to
697ae74
Compare
697ae74 to
7f9128c
Compare
7f9128c to
582bb89
Compare
582bb89 to
48d3511
Compare
48d3511 to
1c90594
Compare
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

0 New Issues
0 Fixed Issues
0 Accepted Issues
No data about coverage (77.10% Estimated after merge)
This PR contains the following updates:
1.379.0→1.393.5Release Notes
PostHog/posthog-js (posthog-js)
v1.393.5Compare Source
1.393.5
Patch Changes
619d318Thanks @marandaneto! - Improve console log capture performance for truncated large objects.(2026-06-25)
v1.393.4Compare Source
1.393.4
Patch Changes
c9c8925Thanks @hpouillot! - Fix browser console log capture when session activity timestamps are missing and refresh session attributes for each log.(2026-06-24)
c9c8925]:v1.393.3Compare Source
1.393.3
Patch Changes
f94deafThanks @ioannisj! - fix(surveys): guard handlePageUnload against version-skewed surveys instance missing the method(2026-06-24)
v1.393.2Compare Source
1.393.2
Patch Changes
1c9a811Thanks @ioannisj! - Stop logging a misleading "upgrade your PostHog server" warning for valid v2 flags responses that have no flags.(2026-06-24)
v1.393.1Compare Source
1.393.1
Patch Changes
99bad9cThanks @pauldambra! - Session replay network capture: add an opt-in streaming reader for request/response bodies that stops at the payload size limit instead of buffering the whole body and then discarding it — bounding memory and pre-request latency when a body is very large. It reads only a clone of the body, so it never consumes the stream the page itself reads, and always resolves (never rejects) into the page'sfetch. Off by default; enabled fordefaults: '2026-06-25'and settable directly viasession_recording.streamNetworkBody.(2026-06-24)
99bad9c]:v1.393.0Compare Source
1.393.0
Minor Changes
#3921
c28b161Thanks @marandaneto! - Adddisable_capture_url_hashesto strip URL fragments from automatically captured URLs. It is disabled by default for backwards compatibility, and enabled automatically whenconfig.defaultsis'2026-06-25'or later. Enabling it (either explicitly or via the'2026-06-25'defaults) is a breaking behavior change for SPAs that rely on URL hashes for routing or analytics, because hash-based routes will be collapsed to the same URL without the fragment in fields such as$current_url,$initial_current_url,$session_entry_url, autocapture$elements[*].attr__href,$external_click_url, replayhrefURLs, heatmaps, web vitals$current_url, logsurl.full, conversationscurrent_url/request_url, or Next.js Pages Router$pageview$current_url.If you only want to capture some hashes, leave hash capture enabled and use
before_sendto remove or redact sensitive hash values before events are sent. (2026-06-23)Patch Changes
c28b161]:v1.392.0Compare Source
1.392.0
Minor Changes
#3895
ce528edThanks @turnipdabeets! - Console log auto-capture (logs: { captureConsoleLogs: true }) now flows through the same pipeline asposthog.captureLog(),posthog.logger.*, and PostHog's other SDKs, instead of OpenTelemetry. As a result:logs.beforeSend(the same hook ascaptureLog/logger.*), so you can redact or drop sensitive console output before it's sent. To treat console logs differently from manual logs, branch on the record'slog.sourceattribute: auto-captured console logs set it toconsole.<method>(e.g.console.error), while manualcaptureLog/logger.*logs leave it unsetposthogDistinctId, the attribute PostHog uses to associate logs with a person (docs). The old path useddistinct_id, which isn't used for person linking by default, so console logs previously didn't appear on person profiles unless you'd configured a custom key.Console logs keep their
posthog-browser-logsservice.name, theirconsoleinstrumentation scope, and theirlog.source: console.<level>attribute.As part of moving onto the shared pipeline, console records now use PostHog's standard log field names — the same ones programmatic web logs and other SDKs use, and the ones the Logs UI surfaces. For the fields below the values are unchanged — only the attribute names/locations differ:
distinct_id→posthogDistinctId(record attribute)location.href→url.full(record attribute; same value — the page URL)session.id(resource attribute) →sessionId(record attribute) — renamed and movedhostandwindow.idmove from resource attributes to record attributes (names unchanged)feature_flagsFor most projects this needs no action — these are already the canonical log fields. The only thing to update is a saved Logs query or dashboard built specifically on an old console attribute name, for example:
attributes.distinct_id→attributes.posthogDistinctIdattributes.location.href→attributes.url.fullresource.attributes.session.id→attributes.sessionIdresource.attributes.host/resource.attributes.window.id→attributes.host/attributes.window.id(2026-06-22)Patch Changes
ce528ed]:v1.391.9Compare Source
1.391.9
Patch Changes
26aa9baThanks @posthog! - Exception autocapture: posthog-js's own fetch timeout now aborts with an explicit, descriptive reason (PostHog request timed out after <n>ms) instead of a reason-lessDOMException: AbortError: signal is aborted without reason. This keepsname === 'AbortError'so existing timeout handling (e.g. feature flag timeout detection) is unchanged, but makes our own timeouts identifiable and stops them being re-captured as noise by console-error exception autocapture.(2026-06-22)
v1.391.8Compare Source
1.391.8
Patch Changes
1fce04fThanks @marandaneto! - Apply CSP stylesheet preparation hook to Product Tours styles.(2026-06-22)
v1.391.7Compare Source
1.391.7
Patch Changes
dac4edbThanks @pauldambra! - Session replay network capture: redact credential-bearing headers on both request and response (previously only request), and match credential-shaped custom header names by substring (e.g.x-gist-encoded-user-token) in addition to the exact deny list - avoiding accidental capture of tokens/cookies in recordings.(2026-06-22)
v1.391.6Compare Source
1.391.6
Patch Changes
#3901
049eeb6Thanks @marandaneto! - Stop adding the unusedbeaconquery parameter to browser SDK sendBeacon requests.(2026-06-22)
#3900
3ee8667Thanks @marandaneto! - Stop adding the unusedipquery parameter to browser SDK requests.(2026-06-22)
v1.391.5Compare Source
1.391.5
Patch Changes
beaccc3Thanks @pauldambra! - Session replay: apply the existing base64 image size cap (maxBase64ImageLength) to SVG<image>elements withdata:URIs on bothhrefandxlink:href. Previously the cap only covered<img>elements, so large inline data URIs inside SVGs were recorded in full - this also covers them in mutations, replacing oversized ones with the striped placeholder.(2026-06-22)
v1.391.4Compare Source
1.391.4
Patch Changes
ee9f2a8Thanks @pauldambra! - Session replay network capture: expand the default payload host deny list to skip third-party analytics, RUM, and session-replay telemetry whose payloads have no replay value - Datadog, Segment, RudderStack, Amplitude, Mixpanel, Hotjar (both.comand.io), and FullStory. Also covers both Google Analytics beacon hosts (google-analytics.com, plusanalytics.google.comwhich gtag uses when Google Signals is enabled) and widens New Relic tonr-data.net.(2026-06-22)
v1.391.3Compare Source
1.391.3
Patch Changes
#3909
ab4a220Thanks @marandaneto! - Avoidstyle-src-attrCSP violations when diffing rrweb style mutations.(2026-06-22)
#3912
78ac40cThanks @pauldambra! - Session replay network capture: never record binary/asset response or request bodies (image, video, audio, font, octet-stream, pdf, zip, wasm) even whenrecordBodyis enabled - they bloat recordings, duplicate what the replay already shows, and the body is no longer read.(2026-06-22)
v1.391.2Compare Source
1.391.2
Patch Changes
6b21f77Thanks @marandaneto! - Validate custom event UUID overrides and generate new UUIDs when invalid.(2026-06-19)
6b21f77]:v1.391.1Compare Source
1.391.1
Patch Changes
#3899
d090a7cThanks @lucasheriques! - Surveys: re-check eligibility when a popover's display delay elapses, instead of only re-checking the URL.A survey with a display delay could be queued while a visitor was still anonymous (the targeting flag passed for the anonymous profile), and then displayed after the delay even though
identify()had reloaded feature flags and the survey's internal targeting flag was now false for the identified profile (e.g. a "show once per user" survey the person had already dismissed). The delayed display now re-runs the full display predicate (eligibility, URL/device/selector conditions, event/action trigger, and feature flags) before rendering, so a survey that became ineligible during the delay is no longer shown. Pending delayed surveys are also cancelled promptly when a later evaluation cycle finds them ineligible. (2026-06-19)v1.391.0Compare Source
1.391.0
Minor Changes
#3885
5392a55Thanks @pauldambra! - feat(replay): capture canvas at reduced resolutionAdds
session_recording.canvasCapture.resolutionScale- a(0, 1]fraction of the canvas display size to capture replay frames at. The captured bitmap is downscaled (pixel-area savings are quadratic) while the canvas's true display size is still recorded, so playback stretches the smaller frame back to the correct dimensions and aspect ratio - only sharpness drops, never layout. It defaults to1(full resolution, matching today's behaviour), and the latestdefaultsbundle (2026-05-30) opts new installs into0.6.The canvas's true display size travels with each frame through the encode worker (as required message fields), so the encoded reply is always drawn back to the correct dimensions — no per-canvas state is retained on the main thread, and downscaling can never mislabel a canvas's dimensions. At full resolution the captured pixels are unchanged (the quality resampling hint is only applied when actually downscaling); the emitted
drawImagenow always uses the explicit destination-size form, which is pixel-equivalent on replay.Mechanically,
@posthog/rrweb's canvas FPS-snapshot observer takes an optionalcanvasResolutionScalerecord option and downscales each captured frame accordingly. (2026-06-19)Patch Changes
5392a55]:v1.390.2Compare Source
1.390.2
Patch Changes
#3868
a5dd54aThanks @pauldambra! - fix(replay): scope the session-recording flushed-size tracker to the session$sdk_debug_replay_flushed_sizewas stored as a single device-global value in persistence and only reset on an in-page session rotation, so it leaked across page loads and tabs and over-counted on returning visitors. The tracker now keys the running total to the current session id, so a new session starts from zero and a fresh load reading an ongoing session sees the correct total.The internal persistence key backing this counter (
$sess_rec_flush_size) was also unintentionally attached to every captured event as a super-property; it is now marked hidden so it no longer ships on events. The value remains available on session-replay debug events as$sdk_debug_replay_flushed_size. (2026-06-17)v1.390.1Compare Source
1.390.1
Patch Changes
#3784
e25e629Thanks @lucasheriques! - Surveys: event-triggered surveys are now scoped to the page load the event fired in, and only persist across a page reload once they have actually been shown.Previously an event armed a survey by writing it to localStorage, where it stayed until shown. Because the activation survived reloads and the URL condition was only checked at display time, a survey armed by an exit-intent event (which fires as the user is leaving or reloading) could surface on a later page load with no event behind it. Activations now live in memory until the survey is shown, so an armed-but-unshown survey no longer reappears after a reload.
Once a survey is shown it is promoted to persistence, so a non-repeatable survey survives a reload and re-displays until the user dismisses or answers it (instead of vanishing if they reload before interacting). Repeatable surveys (
schedule: 'always'or "Show every time the event is captured") are still consumed when shown, so each captured trigger shows them once. Product tours follow the same model. Cross-page deferral (arm on one full page load, display on a later one) is no longer supported via event triggers; use audience targeting for that. (2026-06-17)v1.390.0Compare Source
1.390.0
Minor Changes
#3869
81b79fbThanks @turnipdabeets! - Add abeforeSendoption to the logs config, so you can inspect, redact, or drop log records before they're sent:beforeSendaccepts a single function or an array of functions (applied left to right); returningnullfrom any of them drops the record. It runs for logs sent via bothposthog.captureLog()andposthog.logger.*. (2026-06-17)Patch Changes
81b79fb]:v1.389.1Compare Source
1.389.1
Patch Changes
43b4137Thanks @marandaneto! - Limit retries for transport failures without an HTTP response.(2026-06-17)
v1.389.0Compare Source
1.389.0
Minor Changes
b469830Thanks @turnipdabeets! - The browser's programmatic logs API (posthog.captureLog()/posthog.logger.*) now runs through the shared@posthog/corelogs pipeline that React Native already uses — no change to the public API or existing behavior. Log delivery is more resilient as a result: oversized batches are split automatically, failed sends retry with exponential backoff, and delivery resumes when the browser comes back online.(2026-06-17)
Patch Changes
b469830]:v1.388.2Compare Source
1.388.2
Patch Changes
5edfee1Thanks @turnipdabeets! - FixupdateFlags(flags, payloads, { merge: true })baking an active feature flag override into the stored flags. The merge now seeds from the raw stored flags rather than the override-applied values, so clearing the override afterwards correctly restores the original flag.(2026-06-17)
v1.388.1Compare Source
1.388.1
Patch Changes
5c453cdThanks @marandaneto! - Apply CSP nonce preparation hooks to style and script elements appended by site apps.(2026-06-17)
v1.388.0Compare Source
1.388.0
Minor Changes
b6bc9beThanks @marandaneto! - Add autocapture-only CSS selector opt-outs for web interactions.(2026-06-17)
Patch Changes
b6bc9be]:v1.387.0Compare Source
1.387.0
Minor Changes
c6c163aThanks @posthog! - AddunsetPersonProperties()to remove person properties, the counterpart tosetPersonProperties(). Previously the only way to unset a person property was to hand-pass a$unsetarray inside acapture()call.(2026-06-16)
Patch Changes
#3756
b3ec845Thanks @archievi! - Drop the event and log a warning when abefore_sendhook removes thetokenproperty, instead of silently sending an event that ingest rejects with a 401.(2026-06-16)
#3860
c9c7df1Thanks @marandaneto! - Add$unsetto capture options and pass it through in browser capture payloads.(2026-06-16)
#3855
fadaa4fThanks @haacked! - Stop sending theipquery parameter on feature flag requests. The flags endpoint ignores it, and some ad blockers match/flags…ip=to block flag evaluation on any domain. Dropping it from flag requests avoids the block with no functional change. Event and session recording requests are unchanged.(2026-06-16)
#3830
0d837f5Thanks @dustinbyrne! - Avoid reloading exception and dead-click autocapture external scripts when they are already present.(2026-06-16)
#3853
f95a0ecThanks @TueHaulund! - Capture native Fullscreen API transitions in session replay. Entering native fullscreen (element.requestFullscreen()) is rendered by the browser via the UA:fullscreenpseudo-class with no DOM mutation, so the recorder previously captured nothing and replays showed the element at its pre-fullscreen size with drifted click coordinates. The recorder now emits a reserved custom event onfullscreenchange(standard pluswebkit/moz/MSprefixes), and the replayer re-applies fullscreen layout to the element on playback (including when scrubbing into a fullscreen region) via a reservedrr_fullscreenattribute, consistent with rrweb's existingrr_*attribute namespace.Known limitation: fullscreen of an element inside a same-origin iframe is recorded against the
<iframe>element rather than the inner element, so replay pins the iframe. (2026-06-16)Updated dependencies [
b3ec845,c9c7df1,c6c163a]:v1.386.8Compare Source
1.386.8
Patch Changes
3094f73Thanks @TueHaulund! - fix(replay): discard the prior session's buffer when start() bails out a pending stop(). On a stopSessionRecording() → reset() → identify(newUser) → startSessionRecording() sequence, stopSessionRecording() takes the async compression-drain path, deferring its buffer flush and teardown. start() correctly invalidates that pending cleanup so the new recorder survives, but it left the stopped session's snapshot buffer in place. The re-entrant session-id restart then flushed those previous-user snapshots under the OLD session id, producing a mixed-distinct_id session that server-sideany(distinct_id)attribution resolves to the wrong person — recordings showing the previous user's identity. start() now clears that stale buffer alongside invalidating the compression queue, matching the drop-trailing-data trade-off the bailed-out stop() path already accepts.(2026-06-15)
v1.386.7Compare Source
1.386.7
Patch Changes
#3837
29bf8e3Thanks @marandaneto! - Add missing bugs metadata to package manifests.(2026-06-15)
#3832
d3a9462Thanks @archievi! - Surveys: guard the remaining unprotectedlocalStorageaccesses (reset()and thelastSeenSurveyDatewrite) so aSecurityErrorin cross-origin iframes is swallowed instead of bubbling up to user monitoring.(2026-06-15)
Updated dependencies [
29bf8e3]:v1.386.6Compare Source
1.386.6
Patch Changes
#3804
a27b163Thanks @pauldambra! - fix(product-tours): drop the cached tours blob when product tours is not enabledTours fetched while product tours was enabled are cached under
ph_product_toursin the main persistence blob. Once product tours is disabled (remote config or thedisable_product_toursoption) that cache was never cleaned up, so a potentially large stale blob kept riding on every persistence write — and on every cross-tabstorageevent those writes broadcast.onRemoteConfignow clears the cached tours whenever product tours resolves to disabled; they are re-fetched if it is ever re-enabled. (2026-06-11)v1.386.5Compare Source
1.386.5
Patch Changes
bd06ac7Thanks @ksvat! - fix(replay): prevent silent recorder teardown on session-id rotation. When the session id rotates during active rrweb capture,_updateWindowAndSessionIdscallsstop()then synchronouslystart('session_id_changed'). Ifstop()took the_stopAfterCompressionQueueDrainspath (which fires whenever the compression queue is non-empty — common during steady recording), its async cleanup would later resolve and call_teardown()against the freshly-started recorder, stopping rrweb, removing event listeners, and emptying the V2 trigger-group matchers. From that point on, the recorder'sstatusgetter kept reportingactive/sampled(the_strategyreference was still set), but rrweb was no longer producing events, no listeners were registered, and no$snapshotdata reached the server — the session looked recording-eligible from event metadata yet produced no replay.start()now invalidates the compression-queue state (generation bump plus reset of the stop-in-progress flag and queued-event count), so any pending cleanup from a priorstop()bails at its existing generation check and a laterstop()of the new recorder is not mistaken for the old in-progress one. Affects long-running tabs that rotate session id mid-use (idle timeout, session-past-max-length, orposthog.reset()).(2026-06-11)
v1.386.4Compare Source
1.386.4
Patch Changes
fdc07f3Thanks @arnohillen! - replay: jump scrolls instantly when seeking past pages that usescroll-behavior: smooth. During fast-forward the replayer applied scrolls withbehavior: 'auto', which inherits the page's CSSscroll-behavior— so on sites that setscroll-behavior: smooth(e.g. Silk bottom sheets/modals) a seeked scroll animated from 0 instead of jumping, leaving scroll-revealed content (the open sheet) out of view and showing only the backdrop until the animation caught up. Sync scrolls now usebehavior: 'instant', matching the method's stated intent that smooth scrolling be disabled while fast-forwarding. Full snapshot rebuilds apply their initial offset withbehavior: 'instant'too, so the document-level scroll doesn't animate either.(2026-06-11)
v1.386.3Compare Source
1.386.3
Patch Changes
#3760
5ddfd44Thanks @benben! - fix(conversations): re-attach the support widget after SPA navigations that replacedocument.body(e.g. Turbo Drive), so the widget no longer disappears until a full page reload(2026-06-11)
#3690
dbf2377Thanks @pauldambra! - fix(sessionid): keep the session id stable across tabsA session now rotates only when every tab has been idle past the timeout, rather than whenever a single background tab decides it is idle. On the active event path an idle tab re-reads the session id from storage before rotating: if a sibling tab kept the session alive it does not rotate, and if a sibling already rotated it adopts that id instead of minting a new one. This removes spurious cross-tab session fragmentation (inflated session counts, truncated session durations, split replays). When a sibling session is adopted,
onSessionIdhandlers fire withchangeReason.crossTabAdoption: trueso session recording, pageview state, and session-scoped properties follow the new session. Whenpersistence_save_debounce_ms > 0(the2026-05-30default) the refresh reads only the session-id key so it cannot clobber a sibling's write.Note: projects with significant multi-tab usage will see fewer but longer sessions after upgrading — this is a correction of previously over-counted sessions, not a traffic change. (2026-06-11)
#3795
21441a8Thanks @pauldambra! - fix(persistence): stop per-request metadata rewriting the split-storage entries on every load$feature_flag_evaluated_at,$feature_flag_request_id, and$surveys_loaded_atchange on every/flags(or/surveys) load even when the flag and survey content is unchanged. Withsplit_storageenabled that made the multi-hundred-KB__flags/__surveyslocalStorage entries dirty on every SPA navigation, re-broadcasting the full payload to every open same-origin tab via cross-tabstorageevents — the exact pressure the split exists to remove. These keys are now marked volatile: a value-only change neither dirties the group nor alters its fingerprint, so the write is skipped and the freshest value rides along on the next real content write. Adding or deleting a volatile key still writes through (presence is fingerprinted, the moving value is not), and the in-memory value is always current — only the on-disk copy may lag until the next content change. (2026-06-11)Updated dependencies [
dbf2377]:v1.386.2Compare Source
1.386.2
Patch Changes
25822ac]:v1.386.1Compare Source
1.386.1
Patch Changes
#3780
93e0461Thanks @dustinbyrne! - Fix stale sampled-in session replay decisions after the configured replay sample rate changes.(2026-06-10)
#3788
6da86d0Thanks @TueHaulund! - fix(replay): never record or flush snapshots while the sampling decision is missingWhen the stored sampling decision was wiped while the recorder was running (e.g. by
posthog.reset()), the undecided session reported anactivestatus and could leak short junk recordings from sessions that then decided not to record. Sampling decisions are now persisted tagged with the session id they were made for ('!' + sessionIdwhen sampled out), are re-made on every session id change regardless of config availability, and a buffer is never flushed without a decision when sampling is configured. Because the decision is a deterministic hash of the session id, re-deciding never flips the outcome for the same session. This also stops a stalefalsedecision from a previous session being inherited by a new session, which chronically under-recorded returning visitors. (2026-06-10)Updated dependencies []:
v1.386.0Compare Source
1.386.0
Minor Changes
#3634
612f97aThanks @lucasheriques! - feat(surveys): add opt-inappearance.allowGoBackfor multi-question surveys, and make button labels translatableRenders a "Back" button on web surveys after the first question. Default is off — existing surveys are unchanged. Uses a visited-index history stack so back-navigation respects branching paths (
response_based,specific_question), and abandoned-branch responses are pruned before submission so analytics aren't polluted. Returning to a question pre-fills the prior answer.appearance.backButtonTextoverrides the default label. The button uses the survey's text color so it stays readable on any background, and it also shows in survey previews.Also adds
submitButtonTextandbackButtonTextto survey-level translations, so both the submit and back button labels can be localized viaappearancetranslations (previously only the per-question button text was translatable). (2026-06-10)Patch Changes
612f97a]:v1.385.0Compare Source
1.385.0
Minor Changes
f601c49Thanks @dustinbyrne! - Promote external dependency script versioning to supportedstrict_script_versioningandasset_hostconfig options.(2026-06-10)
Patch Changes
#3753
c11794dThanks @dustinbyrne! - Reload feature flags by default when resetting person properties for flags.(2026-06-10)
#3742
23b2af1Thanks @arnohillen! - record: capture resting scroll offset onscrollendwhen a reveal scroll clamps to 0 before its target is scrollable (e.g. Silk sheets). Deduped againstscrollso normal gestures don't double event volume.(2026-06-10)
Updated dependencies [
c11794d,f601c49]:v1.384.3Compare Source
1.384.3
Patch Changes
2d21adaThanks @marandaneto! - Deprecate__preview_disable_beaconin favor ofdisable_beaconand mark__preview_disable_xhr_credentialsas a no-op.(2026-06-10)
2d21ada]:v1.384.2Compare Source
1.384.2
Patch Changes
d9462b3Thanks @marandaneto! - Deprecate__preview_eager_load_replayas a no-op now that session replay lazy loading is the default.(2026-06-10)
d9462b3]:v1.384.1Compare Source
1.384.1
Patch Changes
0e22d77Thanks @TueHaulund! - replayer: stop corrupting recordings when events are added behind the playhead.addEvent()used to apply any event older than the playback baseline synchronously onto the current DOM — correct for live-mode catch-up, but wrong for on-demand playback where snapshot chunks can finish loading after the user has seeked ahead. Applying those past mutations onto a DOM at a different position made theirremovesfail mirror lookups, andapplyMutationthen deleted the failed entries from the event objects themselves, so every later seek rebuilt from corrupted data (DOM nodes accumulating, e.g. duplicated text) and exports serialized the stripped events. Past events are now only applied synchronously in live mode (otherwise they are just inserted for the next seek to pick up), andapplyMutationfilters removes into a local copy instead of mutating the event data.(2026-06-10)
v1.384.0Compare Source
1.384.0
Minor Changes
#3782
0c2acb9Thanks @pauldambra! - Detect the Google Search App (GSA) as its own$browservalue (Google Search App) via the cross-platformGSA/UA marker, instead of reporting the embedded webview as Mobile Safari (iOS) or Chrome (Android). Gated behind the newdetect_google_search_appconfig option, which the2026-05-30config defaults opt into automatically — left off otherwise to keep existing browser attribution backwards-compatible.Note:
$browser_versionforGoogle Search Appis not comparable across platforms — iOS yields a version like284.0(fromGSA/284.0.564099828) while Android yields a version like14.21(fromGSA/14.21.20.28.arm64), since Google maintains separate versioning schemes for the two apps. Avoid building cross-platform version dashboards on$browser_versionfor this browser. (2026-06-10)Patch Changes
0c2acb9]:v1.383.3Compare Source
1.383.3
Patch Changes
783ba46Thanks @marandaneto! - Deprecate the no-op__preview_flags_v2browser SDK config option. The SDK already uses the/flags/?v=2endpoint by default.(2026-06-09)
783ba46]:v1.383.2Compare Source
1.383.2
Patch Changes
7820929Thanks @marandaneto! - Reduce duplicate internal code found by dry4ts.(2026-06-09)
v1.383.1Compare Source
1.383.1
Patch Changes
Configuration
📅 Schedule: (in timezone Europe/Rome)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.