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.