Documentation

Everything you need to install and configure Korvus.

Performance

How the Korvus snippet affects your site's performance: size, loading, execution and network.

Script size

The Korvus snippet is a single file with no external dependencies:

MetricValue
Raw size~34 KB
Gzipped size~10.5 KB
Dependencies0

Asynchronous loading

The snippet loads with the async attribute. It never sits in your page's critical rendering path:

  • No blocking of HTML parsing
  • No impact on First Contentful Paint (FCP)
  • No impact on Largest Contentful Paint (LCP)
  • No Cumulative Layout Shift (CLS), since the snippet injects no visual element

Runs after the page has fully loaded

All snippet execution starts after the window.load event, followed by a setTimeout(0). In practice, Korvus waits until your site is fully loaded and rendered before it starts collecting data, so your content, images and business scripts always load first.

Zero DOM changes

The snippet reads the DOM to detect signals (prices, stock, visible errors, structured data) but never changes it:

  • No injected HTML elements
  • No CSS style changes
  • No overlay, banner or widget
  • No impact on how your page renders

The only exception: the video proof module

This module is off by default and only switched on if you ask for it. When it is active, it writes to the DOM in two ways:

  • A <script> tag added to the <head> to load the module's code from our CDN. It is the only way to do this without requiring unsafe-eval in your Content Security Policy.
  • A hidden iframe created by the recording library, which uses it to read browser APIs that other scripts on the page have not altered. It is invisible, loads no page, and is removed when recording stops (on WebKit browsers, it stays in place for the whole capture).

Neither has any visual effect or affects how your page renders. They still write to the DOM: the four points above describe the base snippet, not a site where video proof is turned on. What this module collects: Data collected.

Batched sending

Collected data is not sent in real time. It is grouped and sent in a single network call every 30 seconds:

  • A single HTTP request per batch (using fetch with keepalive: true)
  • Buffer capped at 100 events + 50 pageviews per batch
  • Automatic flush when the user leaves the tab (visibilitychange)
  • No network call on every click or interaction

Inactivity detection

If a visitor stops interacting with the page for 30 minutes (no mouse movement, typing, scrolling or touch), the snippet automatically stops all collection:

  • Observers and listeners are detached
  • No more network requests are sent
  • CPU and battery resources are released

If the visitor comes back and interacts again, collection resumes automatically.

CDN and caching

The script is served from a CDN (Scaleway Edge Services) with a 1-hour cache. Returning visitors load the snippet from their browser cache, with no extra network request.

Full isolation

The snippet runs inside a global try/catch. If an internal error occurs, it is silently ignored. The snippet can never:

  • Block your site from loading
  • Cause a visible JavaScript error
  • Interfere with your other scripts