Skip to content

Supported browsers

Grona’s runtime runs in your visitors’ browsers as modern JavaScript, without transpilation. It works in current evergreen browsers, such as Chrome, Edge, Firefox and Safari, that support the features below. This page lists those features and what happens in a browser that lacks them.

The runtime uses ES2017 syntax and these browser APIs. The syntax in the first row is a hard requirement; the optional APIs are listed under graceful degradation below.

Feature Used for
async and await, const and let, arrow functions, spread in calls The runtime’s own syntax. Without them the script does not run at all.
fetch, including keepalive Downloading variation changes and sending events
URL and URLSearchParams Matching pages and reading the address
TextEncoder Assigning visitors to variations
Object.assign Building tracking events
MutationObserver Applying changes to elements that render late
navigator.sendBeacon Sending events when the page is hidden or closed
crypto.randomUUID Creating the visitor id (with a fallback when it is missing)

Grona does not publish tested minimum browser versions.

Some features are optional. Without them, the runtime still applies changes and skips only the part that needs them:

  • Without MutationObserver, changes to elements that are not in the page yet are not retried.
  • Without navigator.sendBeacon, the events normally sent as the page closes are skipped.
  • Without the Resource Timing API, location is unknown, so location rules do not match.
  • Without usable storage, Grona keeps the visitor id in memory for that page only, so the visitor can get a new id and a different variation on every page load.

Internet Explorer 11 is not supported. Its JavaScript engine cannot parse async functions, so main.js fails as a whole and no change applies. If the anti-flicker script runs, the page stays hidden until its 5-second timeout, then shows your original content.