Overview

Kuoll is a tool that helps website owners detect when users encountered a bug and build detailed debuggable records of user sessions. To do it, Kuoll records page continuously, stores data on client-side and flushes it to the server whenever an issue occurs. Until the data is flushed, it’s stored in IndexedDB, localStorage, and sessionStorage.

localStorage usage

localStorage is a browser domain-wide storage. Kuoll uses it to detect when a user uses the site in few tabs in parallel. Recording few tabs aren't supported yet, and Kuoll records only the first tab opened. The amount of data stored in localStorage is minuscule; any reasonable quota should be sufficient.

sessionStorage usage

code>localStorage is a browser tab-wide storage. Kuoll uses it to track a user, store internal state during page navigation. Kuoll does not store record itself or any other heavy data in sessionStorage which means default browser quota should be sufficient for correct work. Recording cannot be performed without functioning sessionStorage.

IndexedDB usage

Kuoll provides a Local recording feature. If this is enabled, Kuoll will not save data to the server until an issue occurred. It will instead keep the last 3 minutes of record in IndexedDB which is a database browser. The local recording is enabled by default and can be disabled using a localRecording parameter of kuoll.startRecord method:

kuoll.startRecord({
    API_KEY: "your API key",
    localRecording: false
});

IndexedDB store is the primary storage for data, including page content, events, network interception, etc. The amount of data generated depends on your application and typically varies from few hundred KB to few MB per minute of active website usage. Furthermore, default IndexedDB quota depends on the browser, device type and amount of free disk space on a device. While we haven’t faced the issue of exceeding IndexedDB quota, it’s possible that it will occur for some users on some web applications.

Some browsers don’t support IndexedDB. Firefox and Safari disable IndexedDB in private browsing mode. In those cases, Kuoll monitoring.js falls back to using sessionStorage instead of IndexedDB. It should be noted that sessionStorage usually has a much tighter quota compared to IndexedDB. It’s possible to reach the limit in case your application generates large amounts of data.

Still have questions?

We love to help business, so drop us a line.

Contact Us