Speed Kit release notes
Speed Kit release notes
www.speed-kit.com

Release v2.12.1 (09.12.2022)

 

Fix

  

Bugfixes

  • Circumvent duplicate requests in Safari due to speculative parsing requests

Release v2.12.0 (05.07.2022)

 

New

  

Bugfixes

  • Revert to legacy navigation timings in Safari because of ttfb bug
  • Fix detection for broken styles if Service Worker provides no array
  • Fix automatic cookie listener to allow other scripts to also override the functionality
  • Fix delay script if parent is not in DOM

Improvements

  • Add error types to dynamic fetcher and track immediately
  • Rename split test cookies to baqend-speedkit-config and baqend-speedkit-secondary-config and ensure they are only sent if needed
  • Improve redirect detection when storing meta information
  • Add global error handling in Dynamic Fetcher
  • Abort requests to the AssetAPI if they take longer then 10 seconds
  • Recognize if SpeedKit is installed in third party Service Worker
  • Apply custom variations for images
  • Ignore partial responses (Status 206) from the AssetAPI
  • Extract correct meta information if used with third party Service Worker
  • Report ResponseCause IgnoredAfterPOSTNavigate only if request would have been accelerated

Features

  • Add prerendered Dynamic Block Config option to specify elements which should be kept from the already rendered, cached version of the page.
  • Add assetChangeDetection Dynamic Block Config option: Automatically compares assets in the cached and origin version of the page. The option can either be en-/disabled by providing a boolean value or be configured by specifying a list of resources to ignore for the comparison. By default the option is disabled.
  • Add redirectList RUM property to identify if and in what way the current navigation was redirected.
  • Add screenResolution RUM property to identify the users screen size
  • Add applicationState RUM property indicating in which state the Service Worker was when the navigate request reached it, e.g. booting
  • Add shouldExecute function to the RUM Plugin interface, consisting of a callback that specifies whether the plugin should be executed on the current navigation
  • Add DisabledSites ResponseCause to differentiate between the config options disabled and disabledSites

Release v2.11.7 (29.06.2022)

 

Fix

  

Bugfixes

  • Fix PI counting in Firefox with missing client

Release v2.11.6 (24.06.2022)

 

Fix

  

Bugfixes

  • Fix PI counting in Safari iFrames with no source

Release v2.11.5 (17.06.2022)

 

Fix

  

Bugfixes

  • Fix PI counting in special Safari iFrames

Release v2.11.4 (19.05.2022)

 

Fix

  

Bugfixes

  • Fix redirect detection for Dynamic Blocks in Safari

Improvements

  • Improve error handling in Firefox Private Browsing mode

Release v2.11.3 (16.05.2022)

 

Fix

  

Bugfixes

  • Ensure RUM tracking is not affected by legacy local storage entries

Release v2.11.2 (06.05.2022)

 

Fix

  

Improvements

  • Increase reliability of POST message communication with the service worker
  • Persist device directly in IndexedDB as fallback mechanism

Release v2.11.1 (13.04.2022)

 

Fix

  

Bugfixes

  • Whitelist CORS POST requests for Safari > 15.3
  • Fix credentials issue by removing workaround for Safari > 15.3
  • Fix content type for fallback RUM beacons

Release v2.11.0 (31.03.2022)

 

New

  

Bugfixes

  • Fix offline banner styling issue
  • Ensure non-async and inline modules are handled correctly by the script execution logic
  • Fix content type evaluation in rule system
  • Fix ResponseSource and ResponseCause in SDN Setup
  • Ensure synchronously set custom dimensions are not overwritten
  • Custom dimension values are automatically converted to strings

Improvements

  • Add type to error tracking
  • Improve error handling during installation
  • Improve speed kit opt-out: Introduce opt-out via local storage by setting baqend-speedkit-sk-opt-out to 1 and remove all Speed-Kit-related storage entries
  • Clarify ResponseCause in case the service worker cannot provide matching meta information with three new causes: SwBooting, NoNavigate, and NoMatchingNavigate
  • Only request meta-information if Speed Kit is the controlling Service Worker
  • Removed remaining usages of unload event listeners to comply with page lifecycle handling of browsers
  • Execute inline scripts in their exact location if they are part of a Dynamic Block
  • Ensure dynamic fetcher metainformation is tracked even in error scenarios
  • Provide localization of the default offline banner
  • Deactivate Image Optimization by setting optimize: false
  • The speedkit-dynamicblock-replaced class is also set in custom merge functions if SpeedKit.replaceBlock is used, or otherwise can be set through SpeedKit.markAsMerged
  • Ensure cookies are sent to the service worker immediately by overriding document.cookie and expose updateCookies on SpeedKit
  • Expose duration of change detection at SpeedKit.dynamicBlocks.changeDetection
  • Truncate large beacon values and track the corresponding key through the truncatedKeys property
  • Properly differentiate response causes formerly treated as blacklisted by adding NotEnabled, NotWhitelisted, UserAgentChanged, TooLargeRequest and FormatNotSupported
  • Always track assetTTFB, not only for lost races

Features

  • Add omitImageCredentials config option: sets the credentials option to omit for image requests against our caching infrastructure in order to achieve multiple connections and circumvent h2 request priority issues
  • Add useCacheWhenOffline config option: Allow SpeedKit to use cached responses in case the user is offline
  • Add resetResponseUrl config option: Ruleset to identify responses where the response URL should be reset to the original URL
  • Add changeDetectionSampling DynamicBlockConfig option: The value between 0 and 1 will determine a sampling rate for hot resources
  • Add detectDevice DynamicBlockConfig option to specify a function that identifies the device based upon a given document. In case the value of the cached and original page differ a device mismatch tracking is triggered. (This replaces the DynamicBlockConfig.detectDeviceMismatch option)
  • Add format to ImageOptions: Specify the desired output encoding
  • Add imageFunction to ImageRule: Manipulate the IO params by a custom function with access to cookies, screen size, etc.
  • Add dataLayerReady trigger function to execute RUM Plugins once the data layer is available
  • Add gaReady and gaTracking trigger functions to support Google Analytics implementations without a data layer
  • Expose assetCause: new property containing information about the ResponseCause of the Request to our caching infrastructure
  • Expose skSupported and swSupported flag to differentiate browsers that are excluded even though they support Service Workers (e.g. WebViews and Non-Chromium Edge) from browsers not supporting Service Workers at all
  • Expose reloadFromOrigin to ResponseHandlerContext to trigger a reload which will not be handled by Speed Kit
  • Expose updateDevice function at SpeedKit.dynamicBlocks to allow usage independent of snippet availability
  • In case we are not able to get a response from the original page the Dynamic Fetcher is now capable of executing fallback scripts which we can insert into the page. These are marked by the type speed-kit-fallback-script. These will only take effect if all default logic is explicitly overridden.
  • If the Dynamic Fetcher Request fails because the user is offline Speed Kit will provide a cached version of the original site if available and the corresponding option enableOriginCache is set
  • In case of an error on the Dynamic Block Request a describing class will be set on the page's HTML element: By default, the classes are speed-kit-client-error, speed-kit-server-error, and speed-kit-offline, but they can also be customized by setting the corresponding DynamicBlockConfig option (customClientErrorClass, customServerErrorClass, customOfflineClass)
  • Introduce declarative trigger functions: Instead of declaring a standard trigger function or a custom function to indicate when a RUM Plugin should run we now support the declaration of a specific global variable (in form of a string) which has to be defined before tracking should be executed
  • Preload CORS resources loaded before DCL on the page load that installs Speed Kit
  • Identify broken CSS on the page and trigger a change detection accordingly
  • Use more detailed client error description as ResponseCause if provided in the server timings header