Boomerang is a JavaScript library developed and maintained by Akamai that measures real user monitoring (RUM) data by capturing the page load time and web performance metrics experienced by actual end users. The library is designed to be lightweight and non-intrusive, avoiding the observer effect by loading asynchronously in a way that does not delay page load even if the boomerang script itself is unavailable or slow to load.
The core functionality of boomerang centers on capturing comprehensive performance data from the user's browsing experience. It measures overall page load times using the NavigationTiming API when available, and can extract granular timing data including DNS, TCP, request, and response times. The library also captures ResourceTiming data to reconstruct page waterfalls, bandwidth measurements, mobile connection characteristics, DNS latency, and JavaScript errors. Beyond timing metrics, boomerang collects browser characteristics such as screen size, orientation, and memory usage, as well as DOM characteristics including node counts, HTML length, and resource counts. It instruments XMLHttpRequest calls, tracks third-party analytics provider IDs, and supports Single Page App interaction monitoring.
The library supports a broad range of browsers including Internet Explorer 6 and above, Edge, and all major versions of Firefox, Chrome, Opera, and Safari across both desktop and mobile devices. Once performance data is captured, boomerang beacons this information back to a specified server URL for further analysis, allowing developers to understand exactly how fast their users perceive their sites to be.
Boomerang features an extensive plugin architecture that allows developers to customize and extend functionality according to their specific needs. The library can be integrated into web pages either synchronously or asynchronously, with the asynchronous method recommended to prevent blocking page load. For asynchronous loading, boomerang can be included via an IFRAME or link preload method, with the library exporting the BOOMR object to the parent window and firing custom events like onBoomerangLoaded, onBeforeBoomerangBeacon, and onBoomerangBeacon to allow developers to coordinate with boomerang's lifecycle.
According to GitGenius activity tracking, the repository shows median issue and pull request response latency of 605.4 hours with a mean of 9014.0 hours across 18 tracked items. The most active contributors tracked by GitGenius are nicjansma with 34 events, marclaporte with 8 events, and bluesmoon with 7 events. The repository overlaps with contributors from tailwindlabs/tailwindcss, emberjs/ember.js, and ipython/ipython, indicating cross-project collaboration.
The library can be installed via multiple methods including direct download from the GitHub repository, npm as boomerangjs, or Bower. The build process bundles boomerang.js with selected plugins listed in plugins.json, creating a deployable minified file that should be served with far-future cache headers since it never changes. Documentation is written in Markdown and built via JSDoc, with comprehensive guides covering API documentation, building boomerang with plugins, contributing guidelines, plugin creation, internal methodology, and how-to recipes. An Angular 21+ wrapper called ngx-boomerangjs is available on npm, providing automatic script loading, APP_INITIALIZER integration, full TypeScript types, and SPA support through History and SPA plugin integration.