NOTE: This advisory is only applicable for UIC deployments that have the asyncReqOnUnload setting in the UIC configuration set to false. If the asyncReqOnUnload setting in the UIC configuration is set to true then there is no impact and this advisory does not apply.
This document has been created to assist Acoustic Experience Analytics (Tealeaf) Customers in configuring the Tealeaf UI Capture library with the most compatible and performant settings available for on Cloud and on-premises deployments. The "asyncReqOnUnload : false" setting allows the Tealeaf UI Capture library to use synchronous XHR during page unload to help prevent data loss. The recommendations provided in this document have been put in place due to a feature change in Chrome web browser (version 80) that could potentially cause UI Capture data loss for our customers.
Chrome Platform Feature Status:
Tealeaf UIC Configuration Option:
asyncReqOnUnload : false
All Tealeaf customers should update the Tealeaf UI Capture library (and related configuration options) by following the recommended steps outlined below. A variety of minimal/moderate update processes are available as interim steps, but the final deployment update should be the "Recommended" process.
Link to Tealeaf UI Capture Library 5.7:
Failure to act upon any of the recommendations provided in this document will potentially cause data loss with Chrome 80+ browsers, along with warnings/errors in associated logging products.
------------------------------------------------------------------------------------------------------------
Temporary Bypass Process provided by Chrome
Deployments that require additional time to reconfigure the Tealeaf UI Capture library may utilize a temporary opt-in for the AllowSyncXHRInPageDismissal origin trial. This will allow synchronous posts on unload up until Chrome version 85 (October 20, 2020):
Tealeaf all Versions - Minimum Update Process - UI Capture Library Version < 5.7
The following change is only for customers who cannot currently upgrade to version 5.7 and who are currently deployed with asynchReqOnUnload : false. This change disables synchronous posts on unload for all Google Chrome browser versions:
asyncReqOnUnload : (/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor))
------------------------------------------------------------------------------------------------------------
Tealeaf on Cloud - Minimal Update Process
- Upgrade core library to the latest Tealeaf UI Capture Library version 5.7
- Copy over existing configuration items (such as privacy, endpoint, DOM capture, etc.)
- Add the latest supported version of pako_deflate.min.js (1.0.10)
- Add the latest version of any supported & custom services modules
- Configure asyncReqOnUnload : true
- Configure useBeacon : true
- Configure useFetch : true (enabled by default in 5.7+)
- NOTE: The 5.7 version of the UI Capture library will automatically default to useFetch: true
Tealeaf on Cloud - Recommended Update Process
- Upgrade core library to the latest Tealeaf UI Capture Library version 5.7
- Copy over existing configuration items (such as privacy, endpoint, DOM capture, etc.)
- Add the latest supported version of pako_deflate.min.js (1.0.10)
- Add the latest version of any supported & custom services modules
- Configure asyncReqOnUnload : true
- Configure useBeacon : true
- Configure useFetch : true (enabled by default in 5.7+)
- Optionally add custom logic to improve data integrity for Apple iOS devices (sample code @ end)
- Optionally add custom logic to improve data integrity for Firefox browsers (sample code @ end)
- Optionally configure Web Worker (tltworker.js) support for enhanced performance:
------------------------------------------------------------------------------------------------------------
Tealeaf on Premises - Minimal Update Process for 9.0.2 customers (client upgrade only)
- Upgrade core library to the latest Tealeaf UI Capture Library version 5.7
- Copy over existing configuration items (such as privacy, endpoint, DOM capture, etc.)
- Add the latest supported version of pako_deflate.min.js (1.0.10)
- Add the latest version of any supported & custom services modules
- Configure asyncReqOnUnload : true
- Configure useBeacon : false
- Configure useFetch : true (enabled by default in 5.7+)
Tealeaf on Premises - Moderate Update Process for 9.0.2 customers (client upgrade only)
- Upgrade core library to the latest Tealeaf UI Capture Library version 5.7
- Copy over existing configuration items (such as privacy, endpoint, DOM capture, etc.)
- Add the latest supported version of pako_deflate.min.js (1.0.10)
- Add the latest version of any supported & custom services modules
- Configure asyncReqOnUnload : true
- Configure useBeacon: false
- Configure useFetch : true (enabled by default in 5.7+)
- Optionally add custom logic to improve data integrity for Apple iOS devices (sample code @ end)
- Optionally add custom logic to improve data integrity for Firefox browsers (sample code @ end)
- Configure Web Worker (tltworker.js) support for enhanced performance:
- https://developer.goacoustic.com/acoustic-exp-analytics/docs/implementing-the-acoustic-tealeaf-web-worker-script
- Uncomment the following line in the tltworker.js script: //keepalive: true
Tealeaf on Premises - Recommended Update Process for v10.X customers (client & server updates)
- Upgrade Tealeaf V10 to latest version (currently 10.0.1) to enable Beacon support
- Upgrade core library to the latest Tealeaf UI Capture Library version 5.7
- Copy over existing configuration items (such as privacy, endpoint, DOM capture, etc.)
- Add the latest supported version of pako_deflate.min.js (1.0.10)
- Add the latest version of any supported & custom services modules
- Configure asyncReqOnUnload : true
- Configure useBeacon: true (requires Tealeaf 10.0.1+)
- Configure useFetch : true (enabled by default in 5.7+)
- Optionally add custom logic to improve data integrity for Apple iOS devices (sample code @ end)
- Optionally add custom logic to improve data integrity for Firefox browsers (sample code @ end)
- Configure Web Worker (tltworker.js) support for enhanced performance:
- https://developer.goacoustic.com/acoustic-exp-analytics/docs/implementing-the-acoustic-tealeaf-web-worker-script
- Uncomment the following line in the tltworker.js script:
- //keepalive: true
------------------------------------------------------------------------------------------------------------
Edge Case - Sample Scripts for Firefox & iOS (not related to Chrome 80 update)
The following sample configuration scripts can potentially help with data potential data loss that can be experienced on certain browser types. The configuration and tuning of these scripts may require Tealeaf Professional Services in order to properly implement and test functionality:
if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
config.services.queue.useBeacon = true,
config.services.queue.useFetch = false
}
if (TLT.utils.isiOS || TLT.utils.isAndroid) {
config.services.queue.queues = [{
qid: "DEFAULT",
maxEvents: 10,
maxSize: 10000,
timerinterval: 10000,
checkEndpoint: true,
endPointCheckTimeout: 3000,
encoder: "gzip"
}]
};
-
Although it is only executed once per page load, a much more efficient way of dynamically setting the asyncReqOnUnload property would be:
asyncReqOnUnload: (navigator.vendor.indexOf('Google') !== -1 && navigator.userAgent.indexOf('Chrome') !== -1)
This is about 80 times faster than using Regex for positive matches, and twice as fast where there are no matches.
Please sign in to leave a comment.
Comments