Adding any third-party script to your site has a cost. We've worked hard to keep that cost as small as we honestly can — here's what to expect, what we do to minimize it, and how to measure on your own site.
The numbers
- Tracker size — ~6 KB gzipped, ~21 KB parsed. About a third of a typical analytics tag.
- Network — a single GET on first page load. Cached for 5 minutes after that, so subsequent navigations are free.
- JS execution — under 10ms on a mid-range mobile (Moto G4 reference). Negligible on desktop.
- Lighthouse score impact — typically 0–2 points. We've seen sites drop more from a single oversized hero image.
What we do to stay light
- Async by default — the script tag has
async, so it doesn't block parsing. Your page renders before the tracker even loads. - Lazy-load heavy bits — the recorder and survey widget aren't bundled with the tracker. They're fetched only when needed (a website with no active recordings doesn't load the recorder).
- Batched events — events are queued and sent every 5 seconds in one HTTP call, not on every click. Fewer requests, less overhead.
- SendBeacon for tail — when a user is leaving the page, we use the
sendBeaconAPI which is non-blocking and survives page unload.
Measure it on your own site
Open Chrome DevTools → Performance tab → record a page load with and without the tracker. Compare:
- First Contentful Paint (FCP) — should be unchanged. The tracker doesn't block rendering.
- Time to Interactive (TTI) — may shift by a few hundred milliseconds on slow connections. This is the legitimate cost.
- Total Blocking Time (TBT) — should add <30ms on mobile.
If you do see a regression
It's almost always something else, but here's how to confirm it's not us:
- Try the page with the tracker tag removed. If load times don't change meaningfully, the tracker isn't the cause.
- Check the Network tab for failed requests — a slow or timed-out tracker request can stall things briefly. Look at status codes.
- If you're on Salla or Shopify and using a heavy theme, the theme is usually the bigger offender.
Recording impact
The recorder is heavier — it captures DOM mutations and network requests. We only load it on websites with recording enabled, and even then only ~30% of sessions are sampled by default. If you want to lower it further, drop the recordingAllocation on the website.