Version History

mPulse Boomerang Release Notes

1.792.0 (October 23, 2023)

New Features

  • Issue 1167: SPA: Soft Navigation Heuristics

Bug Fixes

  • Issue 1175: BFCache: Only append OT if document.head.append is available
  • Issue 1172: BFCache: Round timestamps to avoid microsecond timing differences
  • Issue 1171: History: Don't reset a SPA route change for XHR beacons

Misc

  • Issue 1170: Docs: 1.785 Release Notes
  • Issue 1174: Tests: Ensure HTTPS-requiring tests alert if not on HTTPS; Loosen required timings

1.785.0 (July 17, 2023)

Breaking Changes

  • Boomerang now measures Back-Forward Cache (BFCache) navigations, resulting in an additional beacon for each BFCache nav. You can stop this behavior by disabling the BFCache plugin. See the plugin for details on more configuration options.

New Features

  • Issue 1148: EventTiming: Add target to EventTiming information captured
  • Issue 1161: ResourceTiming: Add initiator types early-hints, ping, font
  • Issue 1164: BFCache: BFCache plugin added

Bug Fixes

  • Issue 1154: EventTiming: Fix 'Object.values is not a function' warning
  • Issue 1162: AutoXHR: Add support for SVGAnimatedString
  • Issue 1149: ConsentInline: Making the ConsentInline plugin compatible with Boomerang in SPA mode
  • Issue 1156: PaintTiming: Updated listeners and LCP data population conditions to handle Error & Early beacons
  • Issue 1160: Errors: Allow override and disabling of sending interval during page load for error beacon
  • Issue 1166: Boomerang: Run localStorage.removeItem in the finally block
  • Issue 1158: SPA: Ensure spa_navigation event has correct requestStart time
  • Issue 1168: PaintTiming: Disconnect LCP observer after sending LCP on Page Load
  • Issue 1152: SPA: Lint: Fix incorrectly globally exported variable

Misc

  • Issue 1147: Lint: Added new lint rules (changed tabs to spaces)
  • Issue 1150: Tests: Code coverage for unit and end-to-end tests
  • Issue 1159: Lint: Added spaced-comment rule
  • Issue 1157: Docs: Update to 1.766; Improve Continuity docs for FID
  • Issue 1163: Docs: Misc docs cleanup
  • Issue 1152: Tests: Allow-list in existing globals added per-test
  • Issue 1139: Tests: Update timing checks to be more reliable in Docker tests
  • Issue 1169: Tests: Fix test issues

1.766.0 (October 10, 2022)

New Features

  • Issue 1129: EventTiming: Interaction to Next Paint (INP) support
  • Issue 1135: Continuity: Add supporting data for LCP and CLS
  • Issue 1136: ResourceTiming: Add nextHopProtocol to resource timing data
  • Issue 1132: Boomerang: Don't listen for beforeunload if pagehide is supported; Added no_unload option
  • Issue 1138: Boomerang: Support collecting High Entropy Client Hints
  • Issue 1137: SPA: Include timing data in spa_init and spa_navigation events
  • Issue 1127, 1128: Boomerang: Support for User Agent Deprecation, read navigator.userAgentData and avoid navigator.userAgent and navigator.platform

Bug Fixes

  • Issue 1131: ResourceTiming: Don't add data to Unload beacons. Memory: Only add data to Page Load beacons.
  • Issue 1140: ResourceTiming: Remove timepoints calculations
  • Issue 1121: Continuity: Disable Page Busy polling for Firefox
  • Issue 1125: PaintTiming: Only include pt.lcp.src and pt.lcp.el on the pt.lcp beacon
  • Issue 1142: EventTiming: Ensure timestamps and durations are rounded to nearest ms
  • Issue 1143: EventTiming: Add additional serialized event mappings
  • Issue 1145: EventTiming: interactionToNextPaint() API should return the latest
  • Issue 1144: Continuity: Don't add c.cls.d or c.cls.topid if there were no CLS
  • Issue 1146: RT: Don't update cookie on beacon_url change

Misc

  • Issue 1119: Tests: Fix many Docker failures, Remove PhantomJS, fix Dockerfiles
  • Issue 1133: BOOMR_config: Simplify override list to true if everything is allowed
  • Issue 1130: Build: Strip BOOMR.info, .warn, .error on production builds
  • Issue 1141: Docs: Memory's dev.mem

1.750.0 (May 30, 2022)

New Features

  • Issue 1117: PageParams: Ability to have UserTiming Marks be measured from the most recent navigation

Bug Fixes

  • Issue 1120: SPA: Always trigger spa_navigation event for each new navigation
  • Issue 1122: Continuity: Fix Hero Image timing detection in Firefox
  • Issue 1123: Continuity: Include First Input Delay on the beacon when it is 0ms

Misc

  • Issue 1118: Docs: Version History update for 1.747.0
  • Issue 1124: Tests: Fixes for 12-react/108-hard-nav-disable

1.746.0 (February 22, 2022)

New Features

  • Issue 1108: PaintTiming: Add reporting for element and source URL for LCP
  • Issue 1113: Memory: Add support for collecting navigator.deviceMemory as dev.mem

Bug Fixes

  • Issue 1105: PageParams: If XHR is set to match but there are no rules defined, Boomerang was monitoring XHRs still
  • Issue 1116: AutoXHR: Avoid re-wrapping XHR/fetch during config refreshes

Misc

  • Issue 1106: Tests: Allow setting --config-path from environments.json
  • Issue 1107: Loader Snippet: Reduced support for IE8, use script src instead of doc.write in IFRAME
  • Issue 1109: Misc sync with Akamai 2021 Q2 OS branch backport
  • Issue 1114: Docs: Disable deep package path publishing for jsdoc generation
  • Issue 1115: Docs: Copyright notice update

1.737.0 (Apr 16, 2021)

New Features

  • Issue 1102: AutoXHR: Allow SPA to start from clicks
  • Issue 1072: SPA: Option to apply Wait Filter for Hard Navs
  • Issue 1099: AutoXHR: Ignore opacity:0, 0px-dimension DOM elements, custom filters
  • Issue 1092: Build: Support for build flavors

Bug Fixes

  • Issue 1096: Unblock Early beacon during missed SPA Hard Nav
  • Issue 1078: Boomerang: Always ensure Session Length is at least 1

Documentation

  • Issue 1090: Doc: Loader Snippet Known Issues and other JSDoc changes

1.725.0 (November 3, 2020)

Breaking Changes

  • Boomerang will no longer send an "XHR Beacon" when an XMLHttpRequest does not result in any interesting DOM modifications (i.e. no new images, stylesheets, IFRAMEs or other XHRs were added). This change can be reverted to the previous behavior (of still sending an XHR Beacon) by setting the AutoXHR.xhrRequireChanges=false flag.

Bug Fixes

  • Issue 868: AutoXHR: Don't send XHR beacons if there were no DOM mutations
  • Issue 1081: AutoXHR: Don't wait on lazy-loaded images
  • Issue 1079: AutoXHR: For XHR beacons that happen before Page Load, ResourceTiming data is properly added to the XHR beacon when it is fired
  • Issue 1077: Continuity: Only add Time To Visually Ready (TTVR) to the Page Load beacon
  • Issue 1082: Memory: Avoid loop in Memory plugin for some pages
  • Issue 1087: EventTiming: Observe entries from top-level frame (e.g. for First Input Delay)
  • Issue 1073: ResourceTiming: Include the Boomerang and Config URL (for mPulse)

1.720.0 (July 29, 2020)

Bug Fixes

  • Issue 1075: Boomerang: Added support for SameSite and Secure cookie attributes

1.715.0 (June 26, 2020)

Bug Fixes

  • Issue 1069: History: Correctly forward arguments to routeFilter

Documentation

  • Issue 1069: Docs: Release notes updated
  • Issue 1069: Docs: Continuity Cumulative Layout Shift docs
  • Issue 1069: Docs: Added additional Back-end Servers and integration guides

1.711.0 (June 8, 2020)

Bug Fixes

  • Issue 1062: EventTiming: Change firstInput type to first-input per spec change

1.710.0 (May 6, 2020)

Breaking Changes

  • Issue 1057: Errors: The monitorEvents and monitorTimeout options are now disabled by default. As a result, some cross-origin JavaScript Errors may not report the full message (and instead will only show Script Error.), and the stack will not be available. Please see the Errors plugin documentation for details on the side-effects of re-enabling those options.
  • Issue 1051: Continuity: First Input Delay calculations have changed slightly. The plugin will now use the Event Timing plugin (if available and the browser supports it) for First Input Delay calculation. If not, mousedown, touchstart and pointerdown events are now used for First Input Delay calculations, while Scroll, Visibility and Orientation changes are not. Only cancelable events are now tracked. First Input Delay should be more accurate, though there may be less overall measurements (due to not tracking Scroll for First Input).

New Features

  • Issue 1000: Event Timing plugin (enabled by default)
  • Issue 1044: ResourceTiming: Service Worker timing capture at resource level
  • Issue 1055: PageParams: New option jsVarPassArgs (defaults to true, current behavior) which controls whether the variable name is passed as the first argument to JavaScript-based Custom Metrics, Timers, and Dimensions
  • Issue 1022: PageParams: Fixed warning when calling getQueryParamValue() with a malformed url
  • Issue 1052: PageParams: Public rerun() function to re-calculate Custom Metrics, Timers and Dimensions on-demand
  • Issue 1049: PaintTiming: Expose Largest Contentful Paint via BOOMR.plugins.PaintTiming.metrics.lcp()

Bug Fixes

  • Issue 1047: Continuity: Scroll Log: Trim decimals

Documentation

  • Issue 1056: Docs: Include minified snippets in built documentation
  • Issue 1056: Docs: Add Header Snippets section
  • Issue 1046: Docs: Fixed reference from c.t.lt to c.t.longtask
  • Issue 1048: Boomerang: Document additional beacon vars

Tests

  • Issue 1053: Tests: Ensure /delay path roots requested files to wwwRoot

1.700.0 (January 29, 2020)

New Features

  • Issue 1027: PaintTiming: Largest Contentful Paint
  • Issue 1030: Consent Inline Plugin and Docs
  • Issue 1040: Continuity: Add the ability to track Cumulative Layout Shift

Bug Fixes

  • OS Issue 251: Add support for background image detection for c.tti.hi
  • OS Issue 261: NPM: Allow running grunt build
  • Issue 990: SPA: Only subtract SPA timeout when the timeout fires
  • Issue 1025: PageParams: Fix case where XHR is in Allowlist (match) mode and no filters were defined
  • Issue 1026: Update Snippet to have its own reference to the parentNode
  • Issue 1032: Sync with OS repo up to 1.678.0

1.687.0 (October 10, 2019)

New Features

  • Issue 1019: Boomerang: Replace MD5 with FNV for better performance

Bug Fixes

  • OS Issue 273: rt.si not working as expected
  • OS Issue 275: UserTiming: Update usertiming-compression package to latest version
  • Issue 1020: RT: Error wrapping when we have NS_ERROR_FAILURE for Firefox 31
  • Issue 1021: AutoXHR: Handle removing src attribute from monitored resource

1.681.0 (September 11, 2019)

Bug Fixes

  • Issue 823: History SPA v2
  • Issue 1001: Continuity: Don't track interaction times in Safari if loaded in iframe
  • Issue 998: Docs: Document rt.si, rt.ss, rt.sl, rt.tt, rt.obo
  • Issue 997: ResourceTiming: Disable srcset physical dimension collection by default
  • Issue 1003: Continuity: Turn monitorStats off by default
  • Issue 994: PageParams: Fix for node with blank src for ResourceGroups
  • Issue 987: Memory: Add support for navigator.connection.saveData
  • OS Issue 197: Navigation Timing: Plugin sends twice per page
  • Issue 1005: Continuity: Don't disable collection when API beacons are sent

1.672.0 (August 22, 2019)

Bug Fixes

  • Issue 1002: PageParams: Fix XHR ignore matching
  • Issue 999: RT: Cleanup beacon parameter cleanup
  • Issue 996: Config: Allow overriding beacon_disable_sendbeacon

1.669.0 (June 28, 2019)

Bug Fixes

  • Issue 992: Errors: Ensure message.indexOf is a function
  • Issue 993: Early Beacon: Fix for SPA events

1.667.0 (June 12, 2019)

New Features

  • Issue 637: Early Beacons

Bug Fixes

  • Issue 976: AutoXHR: XHR abort status fix for FireFox
  • Issue 980: Memory: Remove reference to BatteryManager API as this API is obsolete
  • Issue 812: ResourceTiming: More initiatorTypes
  • Issue 983: NavigationTiming: Don't use chrome.loadTimes() when there are no paints
  • Issue 982: Boomerang: Fix empty-beacon check
  • Issue 939: Optimize cookie access
  • Issue 991: Continuity: ceil duration times
  • Issue 990: Boomerang: Don't set cookie if domain is null, fallback to current

1.650.0 (May 14, 2019)

New Features

  • Issue 782: Boomerang Loader Snippet v12
  • Issue 966: History: Add config option to disable monitoring of replaceState

Bug Fixes

  • Issue 969: AutoXHR: Make routeChangeWaitFilter wait_complete calls wait for other pending nodes
  • Issue 972: IFrameDelay: Listen for postMessage calls on the correct window
  • Issue 973: LOGN: Use HTTP for XDomainRequest for IE8-10 if on HTTP site

Docs

  • Issue 968: Continuity: Document events for TTFI

Tests

  • Issue 975: IFrameDelay: Force tests to load Boomerang in an IFRAME when using the snippet
  • Issue 974: Grunt: Allow specifying multiple webdriver-version

1.643.0 (April 9, 2019)

Performance Improvements

  • Issue 933: Performance: Boomerang Performance Tests
  • Issue 936: Performance: Strips out BOOMR.debug and related messages for production builds
  • Issue 937: Performance: Grunt: Use UglifyJS-3
  • Issue 953: Performance: ResourceTiming: Allow for non-optimal Trie to improve performance

Bug Fixes

  • Issue 941: AutoXHR: Track uninteresting timeout per event instead of per page
  • Issue 931: AutoXHR: Cleanup listeners on observed nodes
  • Issue 947: AutoXHR: Track Fetch the same way as XHR during SPA navigations
  • Issue 946: AutoXHR: Track LINK stylesheets as interesting nodes
  • Issue 943: AutoXHR: Add XHRs to pending events at send instead of load finished
  • Issue 947: AutoXHR: Include Fetch requests in SPA backend time
  • Issue 949: AutoXHR: Allow config overrides for SPA and XHR idle wait timeouts
  • Issue 952: Boomerang: Ensure only a single beacon is being sent at once
  • Issue 955: Akamai: When AutoXHR instrument_xhr is set, exclude Mapping XHR from the XHR monitor
  • Issue 959: IFrameDelay: Gracefully handle different load orders

1.632.0 (February 11, 2019)

Bug Fixes

  • Issue 945: Akamai: Don't gate Mapping IPv6 XHR request behavior on presence of ak.ipv parameter from edge

1.631.0 (January 15, 2019)

Bug Fixes

  • Issue 940: Akamai: Handle ak.ai values in akVars to be represented as strings

1.630.0 (January 15, 2019)

Bug Fixes

  • Issue 926: Akamai: Change DNS prefetch request handling
  • Issue 928: SPA: Ignore route changes if a routeChangeWaitFilter has not yet completed
  • Issue 929: History: Ignore replaceState() if a SPA nav is in progress and no URL change
  • Issue 930: SPA: Only apply routeFilter and routeChangeWaitFilter on SPA Soft Navigations

1.629.0 (December 3, 2018)

Bug Fixes

  • Issue 898: OS Repo sync
  • Issue 904: LOGN: Include ak.ai param in config request from AK plugin, if available
  • Issue 906: Cleanup leaked global vars
  • Issue 907: Added .npmignore for OS NPM package
  • Issue 908: README: Notes on download / npm / bower
  • Issue 910: TPAnalytics: Add data to spa_hard beacons
  • Issue 912: PageParams: Do not re-initialize during config refreshes
  • Issue 913: UserTiming: Update to vanilla UserTimingCompression
  • Issue 923: Boomerang: Keep track of all unload handlers to know when to send unload
  • Issue 925: AutoXHR: Don't track <SCRIPT> tags for XHR beacons
  • OS Issue 196: Optionally depend on usertiming-compression
  • OS Issue 218: Boomerang: Optionally send XHR with credentials
  • OS Issue 219: Clicks: Fix plugin config
  • OS Issue 220: SPA: Clarify route_change comment
  • OS Issue 221: Tests: Move webdriver-manager from package.json install script to tests
  • OS Issue 223: JSDoc: Clarify SPA plugin load-order requirements
  • OS Issue 224: Fix issue related to screen orientation in iPhone and iPad
  • OS Issue 231: Add missing bracket after "Observer effect" link
  • OS Issue 236: Continuity: Update documentation of beacon parameters

1.626.0 (November 12, 2018)

Bug Fixes

  • Issue 905: Errors / AutoXHR: Un-register wrapped functions at unload
  • Issue 903: SPA: Make markNavigationComplete only apply to SPA events

1.624.0 (November 2, 2018)

Bug Fixes

  • Issue 892: Errors: Timing issue causing page load beacon to get tagged with the error type initiator marker
  • Issue 899: AutoXHR: Try to use native MutationObserver when running on a page with Zone.js

1.621.0 (October 24, 2018)

New Features

  • Issue 885: Akamai: Changes for handling Mapping XHR request
  • Issue 890: Errors: Support Reporting API warnings
  • Issue 840: Errors: Monitor Unhandled PromiseRejectionEvents

Bug Fixes

  • Issue 886: Errors: Allow onerror to be called with an ErrorEvent object
  • Issue 893: Continuity: Disable MutationObserver usage for monitorStats for IE11
  • Issue 887: Akamai: Leverage localStorage functionality to send Mapping XHR requests only if not sent recently
  • Issue 895: AutoXHR: Don't track pixels or IFRAMEs that change src
  • OS Issue 206: Fallback to use XHR if data store requires auth
  • OS Issue 211: Fix getBeaconURL() error using AutoXHR plugin

1.615.0 (September 25, 2018)

Bug Fixes

  • Issue 879: Protect against undefined nodeName
  • Issue 877: Boomerang: Add beacon number param
  • Issue 769: NavTiming: Don't look at chrome.loadTimes() if nextHopProtocol is empty
  • Issue 878: Adding the new Akamai plugin for Boomerang to handle Mapping teams
  • Issue 883: Cookie Compression

1.612.0 (September 18, 2018)

Bug Fixes

  • Issue 872: PageParams: Don't send page JavaScript errors as Boomerang errors
  • Issue 869: PaintTiming: Don't add FP/FCP if document is hidden or for SPA Soft/XHRs
  • Issue 873: Continuity: Don't fail if Screen Orientation API is not supported
  • Issue 862: Script Management/Boomerang Integration
  • Issue 876: Boomerang: Don't use polyfilled sendBeacon()

1.609.0 (August 29, 2018)

Bug Fixes

  • Issue 847: Don't use the navigator.sendBeacon API when beacon_type is set to GET
  • Issue 853: Verify that the Battery value is a valid number before adding it to the beacon
  • Issue 864: SPA: Fix regression in SPA timings with disableHardNav
  • Issue 865: AutoXHR: Fix regression in XHR monitoring for non-NT browsers
  • Issue 866: AutoXHR: don't mistakenly clear monitorFetch flag
  • Issue 863: AutoXHR: alwaysSendXhr accepts a function or list of strings/regexs

1.602.0 (August 17, 2018)

Bug Fixes

  • Issue 858: Fix localStorage expiry time
  • Issue 854: Run page ready only after config arrives
  • Issue 861: If the cookie is set to null, rt.si, rt.sl, rt.ss, should not be written

1.598.0 (July 27, 2018)

New Features

  • Issue 851: EXPERIMENTAL: AutoXHR: Delay checking RT if fetch response body is not used

Bug Fixes

  • Issue 850: EXPERIMENTAL: AutoXHR: Do not instrument polyfilled fetch API
  • Issue 849: PageParams: Fix for IE8, do not use Array.indexOf

Tests

  • Issue 841: Remove CT16 'slowest' from Resource Groups

Docs

  • Issue 820: ResourceTiming: JSDoc fixes

1.593.0 (July 23, 2018)

New Features

  • Issue 824: EXPERIMENTAL: AutoXHR: Add Fetch API instrumentation

Bug Fixes

  • Issue 843: AutoXHR: Handle XHRs that are aborted after readyState 4
  • Issue 844: SPA: Fixes URL for SPA navigations after XHR beacons

1.590.0 (July 16, 2018)

New Features

  • Issue 813: Add cookie length and localStorage length as beacon parameters
  • Issue 818: Trap clearResourceTimings()

Bug Fixes

  • Issue 835: Protect access to localStorage variable
  • Issue 838: AutoXHR: Only save XHR request and response payloads if configured to
  • Issue 817: Replace undefined parameter values with empty string in beacon query
  • Issue 833: PageParams: Ignore null values
  • OS Issue 198: Fix TypeError: undefined is not an object

Tests

  • Issue 828: Test server: Add support for customizable status codes in all cases
  • Issue 802: Test fixes for test #111096
  • Issue 839: Clean sessionStorage in e2e tests
  • Issue 842: Fix for 11-restiming/12-clearResourceTiming

Docs

  • Issue 830: Continuity: Docs update for missing parameters
  • Issue 836: Docs for Boomerang Tests

1.579.0 (May 7, 2018)

New Features

  • Issue 792: Use currentSrc for images (PICTURE support)
  • Issue 814: SVG:IMAGE and srcset support for Continuity Hero Images

Bug Fixes

  • Issue 809: Errors: unbound removeEventListener
  • Issue 750: History: react to popstate events and allow aborted beacons

1.571.0 (April 10, 2018)

New Features

  • Issue 528: Continuity plugin

Bug Fixes

  • Issue 804: OS Repo sync and fixes 2018
  • Issue 801: Add array bounds check to getQueryParamValue()
  • Issue 790: ResourceGroups: Run at same time as other handlers instead of at before_beacon
  • Issue 793: Boomerang: Ensure we don't console.log a BOOMR.debug message in production
  • Issue 805: Continuity: Fix busy calculation for late periods
  • Issue 775: Errors: Check context in wrapFn
  • Issue 777: Errors: Call removeEventListener before addEventListener
  • Issue 784: getMyURL() fix for PhantomJS 1
  • Issue 776: Correctly detect our url on IE using non-standard loader
  • Issue 799: Move alwaysSendXhr into the pluginConfig section to make it clearer that this is an AutoXHR config

1.566.0 (March 21, 2018 - restricted use)

New Features

  • Issue 759: Update to new server timing header syntax
  • Issue 617: Cache LOGN config in localStorage

Bug Fixes

  • Issue 774: Disable MutationObserver in IE 11 due to browser bugs
  • Issue 761: Prevent unload confirmation popup in tests
  • Issue 749: LOGN: On config.json refresh, don't clear BOOMR.session.ID
  • Issue 772: Make self url detection work when loaded in primary window as well
  • Issue 756: Errors: Support capture flag in options object passed in

Tests

  • Issue 752: Upgrade express-middleware-server-timing
  • Issue 771: Edge, IE and Safari e2e test support
  • Issue 737: Headless modern browser support (Chrome + Firefox)
  • Issue 768: Improve localStorage tests
  • Issue 767: Revive the SauceLabs code
  • Issue 751: Gruntfile: Split apart build steps

1.552.0 (February 9, 2018)

New Features

  • Issue 743: PCI compliance: PageParams: Allow disabling via BOOMR_config
  • Issue 744: PageParams: Protect form elements in PCI mode
  • Issue 748: PaintTiming plugin; NavTiming: Deprecate chrome.loadTimes()

Bug Fixes

  • Issue 745: PageParams: Limit handler side effects in excludeXhrFilter
  • Issue 746: PageParams: Remove prioritized page params

1.543.0 (January 25, 2018)

New Features

  • Issue 728: Override the load end-time with BOOMR_page_ready or a param to BOOMR.page_ready()

Bug Fixes

  • Issue 726: NavTiming: Fix nt_nav_type
  • Issue 726: Boomerang: Add timeout to requestIdleCallback in BOOMR.setImmediate
  • Issue 726: AutoXHR: fix for IMGs with changing src
  • Issue 726: NavTiming: Get msFirstPaint only from performance.timing
  • Issue 726: AutoXHR: When a SPA Hard beacon is ready but onload hasn't fired, run after other onload handlers
  • Issue 738: Configuration for locking beacon_url to specific patterns
  • Issue 730: Compare marks/measures to performance.now mark
  • Issue 727: Navtiming: Fix nt_nav_st
  • Issue 723: CrossDomain: Disable if URL is blank or whitespace
  • Issue 722: Work around minification that breaks in IE8 and quirks mode
  • Issue 718: Errors: Wrap addEventListener at the end of the protocol chain

1.532.0 (December 18, 2017)

Bug Fixes

  • Issue 714: Fix Custom Timers for SPA navigations
  • Issue 699: NavigationTiming: Don't include timestamps for events that haven't happened

1.527.0 (December 12, 2017)

New Features

  • Issue 695: BOOMR.sendAll()

Bug Fixes

  • Issue 701: CrossDomain: Validate cross-domain URL
  • Issue 710: Workaround for document.write changing readyState after onload

1.522.0 (November 10, 2017)

Bug Fixes

  • Issue 693: Add BOOMR.utils.arrayFind (fixes ResourceTiming in IE11)
  • Issue 696: Better string checking for Boolean Custom Metrics
  • Issue 700: Capture BOOMR.page_ready() time after onload; BOOMR.addVar() for single beacons

1.517.0 (October 20, 2017)

New Features

  • Issue 635: ServerTiming support

Bug Fixes

  • Issue 691: XHR Filtering: Fixes for match option
  • Issue 686: Force beacons to HTTPS
  • Issue 670: Handle latest netinfo spec
  • Issue 671: Add nocookie flag if we couldn't set cookies
  • Issue 678: Resource Groups: Fixes for IE 10
  • Issue 685: ResourceTiming: Add iframe and subdocument to initiatorType
  • Issue 683: CrossDomain: Abort when cross-domain URL isn't specified

1.511.0 (September 7, 2017)

Bug Fixes

  • Issue 621: CrossDomain: Reliability fixes
  • Issue 665: AutoXHR: Wait once up to 1,000ms after an uninteresting mutation
  • Issue 666: SPA.markNavigationComplete() support

1.506.0 (August 30, 2017)

Bug Fixes

  • Issue 663: AutoXHR: If we don't instrument XHR open() due to exclude filter then don't instrument send()
  • Issue 664: AutoXHR: Do not extend the event timeout with each uninteresting mutation

1.500.0 (August 15, 2017)

Bug Fixes

  • Issue 643: UserTiming: Enable through config-override
  • Issue 602: SPA: Aborted load beacons
  • Issue 647: RT: Fix t_page and t_resp missing from the beacon
  • Issue 648: RT: Always use loadEventEnd as the end load time

1.495.0 (July 24, 2017 - restricted use)

Bug Fixes

  • Issue 629: PageParams: ResourceTiming: Avoid wildcard path if no wildcards
  • Issue 598: NavigationTiming: Add a few NavigationTiming2 fields if available
  • Issue 599: ResourceGroup: Support for SPA navigations
  • Issue 614: ResourceGroups: Match all CSS selector elements instead of just first one

1.489.0 (July 7, 2017 - restricted use)

Bug Fixes

  • Issue 624: BOOMR.sendMetric/Timer: Include rt.end
  • Issue 633: BOOMR.sendMetric/Timer: Append session start time to rt.si

1.486.0 (June 16, 2017)

Bug Fixes

  • Issue 610: BOOMR.log: Add timestamp
  • Issue 612: SPA: Don't send beacons for SPA soft navs that don't change the URL and no resources are triggered
  • Issue 608: ResourceTiming: Additional checks and fixes for non-supported browsers
  • Issue 607: ResourceTiming: If there are no entries, ensure the parameter is {}
  • Issue 609: Angular: Don't trigger Route Change on $locationChangeStart if other events fire
  • Issue 618: BOOMR.sendTimer/sendMetric: Set the location so dimensions work properly

1.483.0 (May 15, 2017)

Bug Fixes

  • Issue 594: AutoXHR: Don't wait for XHRs that .open() but don't .send()
  • Issue 579: BOOMR_mq method queue
  • Issue 588: Add support for delaying page_load beacon with instrumented iframes
  • OS Issue 139: ResTiming: Resource type filter

1.479.0 (May 12, 2017)

Bug Fixes

  • Issue 591: sendBeacon: x-www-form-urlencoded
  • Issue 589: config.json: Don't strip h.key after config.json refresh comes in

1.477.0 (May 11, 2017 - restricted use)

Bug Fixes

  • Issue 586: Don't report IE error for freed script in event and timeout handlers
  • Issue 585: Angular: Track navigations when only a $locationChangeStart fires
  • Issue 587: Miscellaneous cleanup
  • Issue 577: Warn on window and document overrides (debug builds only)
  • Issue 571: PCI compliance
  • Issue 583: Don't send boomerang error on TPAnalytics third party errors
  • Issue 559: Errors: Loader Snippet to capture errors before Boomerang arrives
  • Issue 561: Errors: Re-throw caught exceptions
  • Issue 563: BOOMR.sendTimer() / BOOMR.sendMetric() and sendBeacon() support
  • Issue 582: UserTiming disabled by default
  • Issue 581: Add usertiming feature flag
  • OS Issue 77: Plugin to beacon User Timing API mark and measure entries
  • Issue 562: Minor fixes to sync with OS repo
  • OS Issue 138: Make the errors plugin work without the Compression plugin

1.463.1493220061 (April 26, 2017)

Bug Fixes

  • Issue 570: History: Option to disable hard navigation in favor of BOOMR.page_ready()
  • Issue 560: Errors: Include dimensions (page groups, AB, custom) on error beacons
  • Issue 558: Errors: Send during onload if autorun=false
  • Issue 564: AutoXHR: Fixes XHR after click missing beacon
  • Issue 567: Update copyrights

1.452.1492175627 (April 14, 2017)

Bug Fixes

  • Issue 556: Deduplicate calls to addEventListener() with the same arguments

1.451.1491334204 (April 4, 2017)

Bug Fixes

  • Issue 555: Ensure we don't clobber cross_domain_url if it has a query param already
  • Issue 557: AutoXHR: Only capture reponseText or responseXML if the type is set

1.449.1490889765 (March 30, 2017)

Bug Fixes

  • Issue 553: Prevent Errors plugin from accessing a function of a potentially undefined error message
  • Issue 547: Only use performance.now() if it is a native function
  • Issue 554: Replace isArray with hasOwnProperty check for backward compatibility
  • Issue 551: Remove calls for timepoint calculations

1.446.1490635326 (March 27, 2017)

Bug Fixes

  • Issue 549: Fix typo in NavigationTiming (push of undefined)

1.445.1489625641 (March 15, 2017)

Bug Fixes

  • Issue 525: Grunt: Re-run specific tasks
  • Issue 531: Check that scrollX & scrollY are numbers
  • Issue 532: Make sure n.getBattery is a function before calling it
  • Issue 537: ResourceTiming: Ignore IE's res: urls
  • Issue 536: Add downlinkMax for browsers that support it.
  • Issue 533: ResourceTiming: Exports .addResourceTimingToBeacon()
  • Issue 524: Warn on buggy responseEnd
  • Issue 538: Normalize cross_domain_url
  • Issue 535: Add support for requestIdleCallback()
  • Issue 534: PageParams: Retry JavaScript variables
  • Issue 542: Gruntfile: Uglify debug-test-min after applying templates
  • Issue 529: Add ResourceTiming timepoints
  • Issue 526: History bugs and XHR beacon handling changes
  • Misc: Jump to newer versions of eslint so that jenkins matches reality

1.435.1487783301 (February 22, 2017)

Bug Fixes

  • Issue 520: Test fix
  • Issue 521: Bind forEach contexts this to calling mutationHandler instance context

1.432.1486768074 (February 10, 2017)

Bug Fixes

  • Issue 510: Enable overriding secondary_beacons via BOOMR_config
  • Issue 509: Adds Page ID and refactored random ID generation
  • Issue 513: XHR fixes when ResourceTiming is available
  • Issue 515: SPA Hard: Use navigationStart instead of fetchStart for start time
  • Issue 516: SPA navigations: Remove timers from hard nav
  • Issue 517: Remove rt.sh and rt.srst (Session History debug)
  • Issue 519: CrossDomain: Ensure a beacon is sent, wait up to 5s for timeout
  • Issue 371: Handle SVG IMAGE types
  • Issue 495: Add support for PageGroups based XHR Instrumentation filters
  • Issue 348: Count unique urls in dom.img and dom.script
  • Issue 455: t_page < 0 on some SPA beacons
  • Issue 518: Protect against browser bugs for t_page and t_resp

1.429.1485448661 (January 26, 2017)

Bug Fixes

  • Issue 456: Errors: Filter boomerang functions from stack in minified version
  • Issue 508: Errors: Errors.wrap: Run BOOMR_check_doc_domain first

1.426.1484362995 (January 13, 2017)

Bug Fixes

  • Issue 496: ESlint: Enable space-in-parens
  • Issue 499: boomerang: Fix XHR Authorization check

1.423.1483643196 (January 5, 2017)

Bug Fixes

  • Issue 479: Prevent XHR Beacons before SPA Hard if alwaysSendXHR not enabled
  • Issue 481: SPA: Don't enable MutationObserver / AutoXHR until asked to
  • Issue 483: Capture Adobe s.purchaseID var
  • Issue 482: Add support for PageGroups based on XHR Payload
  • Issue 485: Use Boomerang IFRAME XHR as backup if window XHR fails
  • Issue 488: PageParams: Add support for string property access in JS variables
  • Issue 491: Add support for Custom Filters in AutoXHR
  • Issue 497: Ensure removeChild() is only called when iframe exists, ensure indexOf()
  • Issue 498: Move origin check up before parsing JSON
  • Misc: Updated mocha dependency
  • Misc: Update README to account for changed build procedure
  • OS Issue 112: POST & Auth Token Support

1.413.1477614597 (October 27, 2016)

Bug Fixes

  • Issue 470: SPA: Recalculate SPA Hard timings before capturing ResourceTiming
  • Issue 471: ResourceTiming: Ensure entries are sorted correctly so all are captured
  • Issue 476: Add rt.nstart to to beacon
  • Issue 477: Avoid IE10 / IE11 bug with MutationObserver and XHR.responseXML

1.407.1476482714 (October 14, 2016)

New Features

  • Issue 428: Support for Resource Groups

Bug Fixes

  • Issue 465: SPA Hard navigation timing calculation changes

1.405.1475087321 (September 28, 2016)

Bug Fixes

  • Issue 451: Session length incrementing for XHR subresource beacons before onload
  • Issue 452: Session length incrementing for Boomerang in IFRAME when autorun=false
  • Issue 453: scrollX and scrollY undefined in IE
  • Issue 477: Ensure window is available when sending a Beacon

1.402.1473440808 (September 9, 2016)

Bug Fixes

  • Issue 414: SPA: Beacon fix when config.js loads late
  • Issue 434: Boomerang: Wrap dispatchEvent() / fireEvent() in try/catch
  • Issue 440: AutoXHR: Improve tracking with multiple outstanding XHRs
  • Issue 443: TPAnalytics: Skip calling ga.getAll() if it's not a function

1.400.1470878703 (August 10, 2016)

Bug Fixes

  • Issue 412: BOOMR.now was always using Date.now
  • Issue 413: Allow XMLHttpRequest.open() twice
  • Issue 427: Add errors-monitor-other feature
  • Issue 429: Support Classic GA and named trackers
  • Issue 430: Fix xhr negative t_page in prerender
  • Issue 431: Ensure our MutationObserver is created in the page's context, not our IFRAME

1.399.1469784094 (July 29, 2016)

Bug Fixes

  • Issue 416: Fixes capturing of ResourceTiming2 sizes
  • Issue 418: Sanity check Image works before using to send a beacon
  • Issue 419: Ensure r and r2 parameters are redacted
  • Issue 420: Do not send Third Party Analytics client IDs if disabled in config
  • Issue 421: Errors limit the maximum captured stack length
  • Issue 422: AutoXHR: Click events should always use the URL of the fetched resource
  • Issue 423: Errors: monitorConsole bug fixed

1.394.1467954210 (July 7, 2016)

Bug Fixes

  • Issue 400: Wraps removeEventListener() to work with the wrapped functions

1.390.1467244673 (June 29, 2016)

New Features

  • Issue 351: Cross-domain session tracking support
  • Issue 388: ResourceTiming: Allow a list of URLs to trim all data from (e.g. analytics beacons)
  • Issue 391: TPAnalytics: Add support for IBM Site Promotion Analysis and Real Estate Analysis

Bug Fixes

  • Issue 363: Fixes bug with duplicate XHR URLs returning incorrect timing
  • Issue 385: Fix for Errors plugin with setInterval() using string parameters
  • Issue 372: ResourceTiming no longer tracks beacon URLs
  • Issue 386: ResourceTiming fixes bugs for browsers that have NT but no RT support
  • Issue 389: Fix missing data on pre-rendered pages when another beacon is sent before

1.381.1463423250 (May 16, 2019)

New Features

  • Issue 359: TPAnalytics: Plugin captures IDs from other third-party analytics scripts

Bug Fixes

  • Issue 357: Fixes a warning when window.performance doesn't exist
  • Issue 374: Fixes a warning when the browser doesn't implement getBattery() properly
  • Issue 376, 377, 378: Fixes warnings when window doesn't exist due to the page unloading
  • Issue 378, 380: Fixes warnings when JSON doesn't exist

1.376.1462309808 (May 3, 2016)

Bug Fixes

  • Issue 346: Fixes a timing issue with Single Page Apps if config.js comes in late
  • Issue 366: Fixes a bug where a beacon might not be sent if an IMG is modified several times in a Single Page App nav

1.371.1461863625 (April 28, 2016)

New Features

  • Issue 326: Errors plugin: JavaScript Error Reporting
  • Issue 338: Support for Boolean Custom Metrics
  • Issue 334: International currency formatting support
  • Issue 327: Large beacons (for example, those containing ResourceTiming data) are now sent using XHR instead of a FORM POST
  • Issue 341: scr.sxy parameter added to the beacon (scroll X and Y in pixels at the time of the beacon)

1.345.1458593666 (March 21, 2016)

Bugs Fixes

  • Issue 328: Fix race condition causing No Page Groups
  • Issue 329: Fix for History plugin when using auto in custom SPA frameworks
  • Issue 331: Protect against user agents that throw errors on window.performance access

1.334.1456175784 (February 23, 2016)

New Features

  • XHR instrumentation uses ResourceTiming if available for more accurate performance metrics
  • ResourceTiming can be configured to clear ResourceTiming entries after each beacon
  • Single Page App navigations now calculate Front-End (t_page) and Back-End (t_resp) metrics
  • Single Page App navigations can be configured tell Boomerang to hold the SPA beacon until the page has completed other non-network activity
  • XHR instrumentation can be configured to send XHR beacons for every XHR, instead of combining them during SPA navigations
  • Custom Metric JavaScript variables can be configured to only be captured on specific URLs
  • XHR instrumentation has a new optional snippet that helps instrument XHR before boomerang.js has been loaded
  • Single Page App navigations now include NavigationTiming and/or ResourceTiming metrics for hard and soft navigations
  • Angular ui-router support
  • URLs captured via ResourceTiming are now limited to 1,000 characters
  • React support
  • Other Single Page App support via window.History and onhashchange monitoring
  • ResourceTiming2 encoded, decoded and transfer sizes are collected
  • Configurable option to override the name of the RT cookie

Bug Fixes

  • Issue 196: Fixes t_done merging when two XHRs complete at the same time
  • Issue 214: Keep config.js refresh nodes around for one cycle to ensure the browser doesn't remove them before they're executed
  • Issue 231: SPA navigations might wait indefinitely for IFRAMEs that were removed from the DOM
  • Issue 249: Don't fire a non-SPA beacon when SPA support is enabled
  • Issue 250: Wait for page onload before firing a SPA Hard Nav
  • Issue 260: Revert form.submit() behavior back to original style
  • Issue 271: Ensure we don't send bad t_page values from responseStart / responseEnd inversions on iOS
  • Issue 299: Fixes race condition with manual beacons
  • Issue 305: Wrap all sub-frame accesses in try/catch to avoid "Permission Denied" errors
  • Issue 307: Fixes XHR error codes were not being tracked in some cases
  • Issue 313: Fixes conflict with other third-party XHR instrumentation
  • Issue 315: SPA navigation beacons being sent when autorun=false for prerender

1.246.1441122062 (September 1, 2015)

Bug Fixes

  • Issue 174: Allow for quotes in cookies
  • Issue 189: Only fire beacons during prerender to visible transition if beyond page load
  • Issue 191: Check for Backbone existence on the correct IFRAME

1.235.1439916634 (August 18, 2015)

Bug Fixes

  • Bug 95730: Support static function members on JavaScript classes and strings for dimensions, timers and metrics
  • Bug 95904: Microsoft Edge browser hang on form.submit() on some pages
  • Issue 176: Fix for browsers that don't have native support for Array.filter
  • Issue 181: Fix to stop sending two beacons when SPA is disabled in app configuration but hook code is still on the page
  • Issue 179: Enable QuerySelectors for Custom Timers with ResourceTiming

0.9.1437148526 (July 17, 2015)

New Features

  • Optional parameter to await completion in bandwidth plugin before sending beacon
  • Better support for tag managers and loading after onload
  • New dom.script.ext beacon parameter reports the number of external scripts
  • New dom.img.ext beacon parameter reports the number of external images
  • New ua.plt beacon parameter reports the current platform
  • New ua.vnd beacon parameter reports the current vendor
  • QuerySelector support for Custom Metrics, Timers and Dimensions
  • AngularJS, Ember.js and Backbone.js support
  • Ability to load config as JSON
  • Allows configuration to be overwritten by the user via BOOMR_config
  • Bug 93814: Allow array subscript for variables

Bug Fixes

  • Bug 87109: Sessions were not being reset in some cases, resulting in very long sessions that skew average session duration
  • Bug 88717: Auto-XHR: Always use original XHR .open() arguments
  • Bug 91178: Page Groups using JavaScript variables always need to return the value so we can terminate on match
  • Bug 92121: For Cookie Custom Metrics, if the cookie wasn't defined, we were using the current URL as the value
  • Bug 92542: Ensure getEntriesByName() / getEntriesByType() exists in the frame before using
  • Bug 92302: Change ResourceTiming optimized trie to avoid strings that trigger a XSS warning from NoScript
  • Bug 92560: Auto-XHR: Exclude list not honored in IE
  • Bug 92924: Auto-XHR: Not working with IE9
  • Bug 94388: Use rt.start=none only if we don't have a start time
  • Bug 94400: Page Group matching failing on IE (pre-IE11)
  • Bug 94254: Memory leak - leaving script nodes around after requesting config.js
  • IE Xpath parser: Allow single or double quotes
  • RT: validateLoadTimestamp(): In an XHR event, trust the end ('now') timestamp
  • AutoXHR: Only watch IMGs that have a new src attribute or the src attribute has changed